吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16362|回复: 208
收起左侧

[Android 原创] 小爱控制美的空调(美的美居app 分析) 一

    [复制链接]
asdnasiudn 发表于 2022-8-30 22:34
本帖最后由 asdnasiudn 于 2022-9-12 21:50 编辑

第二篇 小爱控制美的空调(美的美居app 分析) 二
第三篇 小爱控制美的空调(blinker集成) 完 -

起因:家里是小米全家桶,但是空调是华凌的,前段时间太热了,空调使用频率比较高,这款空调又不配遥控,每次都要打开app去操作就很烦,想着怎么让小爱来做这件事。
===================================================
本人第一次搞安卓,思路步骤可能和各位大佬不同,有可以改进的地方烦请指出
===================================================

大概流程应该就是
1. 模拟登录
2. 获取设备列表
3. 根据设备id进行操作



首先电脑打开 charles/fiddler , 手机代{过}{滤}理设置为电脑的ip和 charles/fiddler 的端口 ,一般默认 8888
然后开始抓包,发现是 https 抓不到,这个时候一般有两种处理方法
1: 安装 sslunpinning 模块
2: 把 charles/fiddler 导出的证书 导入到 cert 目录
这里我选择方式1 ,因为安卓11上 root 了好像也没法导入证书 还得解锁system 分区,有点麻烦
安装好 sslunpinning 模块 后,重新打开app抓包。

点击登录查看抓包结果,如图所示

1.jpg
很明显第二个接口是登录的,但是它前面还有一个 接口:

[Java] 纯文本查看 复制代码
/v1/user/login/id/get


根据我的经验一般登录接口会用到第一个接口的返回参数,所以我直接没有分析登录接口,直接看的第一个

2.jpg

可以看到 它 idget 接口 的请求头里面有几个关键参数

mc-trace-idLoginTrackadd07f18e35d443fb05e9264e20bf17e$33c0ad18f210428f8fdcdd78bb601537
mc-trace-path85d64fb37e1045248d4d1e2d4656996f:Android_7.12.0.115#login#getLoginId
mc-trace-timestamp1661865238463
User-Agentmeiju/7.12.0.115 (Android;cepheus11)
signee3f2ccee237b3a9c35b0c67657f397941ddfb29fae67dc87af0f0df423a6f2a




trace-id ,trace-path 这两个参数可能和后续的登录是串起来的,待定
sign 很明显就是签名了

再看请求体
[Asm] 纯文本查看 复制代码
{"loginAccount":"138****1234","stamp":"1661865138463","reqId":"5f819625a9f943e2b7bea1bca3b6d9c2"}


请求体看着就很简洁

手机号 + 时间戳 + 请求id

那我们现在要处理的就是获取加密算法以及哪些参数参与了加密

现在我们把 app 用jadx打开 ,搜索 sign

3.jpg

搜出来1w多,那怎么找出来我们想要的呢?

其实我也不晓得,于是我搜索了一下 这个请求地址,运气很好只有一个地方在用

4.jpg

5.jpg

6.jpg

找到初始调用的地方,看到 loginAccount 差不多就能确定没找错了

但是浏览了一下代码没有发现和sign有关的, trace 相关的倒是都有,那我们就只差sign参数了.

[Java] 纯文本查看 复制代码

private final Map<String, String> getTrackHeaders() {
        LinkedHashMap linkedHashMap = new LinkedHashMap();
        linkedHashMap.put(Common.TRACE_ID, LoginLogTrackHelper.INSTANCE.getTrackerId());
        linkedHashMap.put(Common.TRACE_PATH, LoginLogTrackHelper.INSTANCE.getTrackerPath());
        linkedHashMap.put(Common.TRACE_TIMESTAMP, String.valueOf(System.currentTimeMillis()));
        return linkedHashMap;
}


回过头我们看
看着 LoginApi 这个类像是 feign 的写法,上面的import里面也有 okhttp 的类,猜测可能是 okhttp 的拦截器在做加密

于是我们可以搜索

[Asm] 纯文本查看 复制代码
implements Interceptor


查找所有的拦截器
7.jpg

一共50个, 没办法,只能一个一个的看,不过我们也可以筛选一下只需要 看 com.midea 这个包下面的


终于我们在 HeaderInterceptor 这个类里面看到了 sign 相关的代码
8.jpg

核心就是 这句话
[Java] 纯文本查看 复制代码
 newBuilder.header("sign", signUtil.sign(request, valueOf))

sign 是由 request 和 valueOf 参数构成, valueOf  看上面的代码发现是时间戳,不用管

那我们直接看 signUtil.sign 这个方法

9.jpg

看到这里基本上就得到了sign 的算法
[Java] 纯文本查看 复制代码
HMAC_SHA256.bytesToLcHexString(HMAC_SHA256.hmac_sha256(mAS_KEY$http_release, DOFConfig.INSTANCE.getIOT_SECRET$http_release() + ((Object) sb) + random));


这里有个很奇怪的问题,我本来是想 写个模块hook 这个 HMAC_SHA256.hmac_sha256  方法  来看一下出入参,但是死活 hook 不到 ,不知道是什么原因,望有知道的大佬不吝赐教..

先得到 IOT_SECRET, 搜一下就能直接得到,这里不做演示

mAS_KEY 需要处理一下 ,需要把搜索到的 mas_key decode 一下
10.jpg

ps: 但是这里的 IEncryption 是一个接口,没法hook,  然后我也忘了我当时是怎么找到实现类的了(最后写代码用).....只记得最后是hook得到的.

sb 就是 request的body 体,

random 是前面传过来的时间戳.

那么至此我们可以获取到 loginId ,为登录做好准备.

核心代码入下:
image.png

其实就是把里面的类都抠出来,自己改了一下,这里一定要注意配置忽略ssl,不然会访问不通.


下一篇我们开始分析登录流程.主要是论坛的帖子没法保存草稿..

image.png
image.png

点评

打400售后,说家里有老人小孩就可以的。真不给说投诉给工商和12345 他们就给了。我撸了。我就说家里有老人,就给了。 。顺丰发过来的。  发表于 2022-8-31 10:50

免费评分

参与人数 48威望 +2 吾爱币 +145 热心值 +42 收起 理由
lua11 + 1 + 1 用心讨论,共获提升!
ye1059825022 + 1 + 1 谢谢@Thanks!
qtfreet00 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cmh497658213 + 1 + 1 谢谢@Thanks!
情人果 + 1 + 1 我很赞同!
pdcba + 1 + 1 谢谢@Thanks!
zzy17468 + 1 + 1 我很赞同!
MEIcc + 1 + 1 鼓励转贴优秀软件安全工具和文档!
szkent + 1 + 1 太高技术,学不来了。
suibian1111 + 1 + 1 我很赞同!
shuaibiliao + 1 + 1 热心回复!
CC二哈 + 1 + 1 热心回复!
wuqing89403 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
renshaowei + 1 谢谢@Thanks!
hxd97244 + 1 + 1 用心讨论,共获提升!
核桃不补脑 + 1 + 1 求最终方案
azusys + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
centrino + 1 + 1 用心讨论,共获提升!
yhwl8888 + 1 直接接入HOMEASSISTANT就好了
Lsygood + 1 + 1 用心讨论,共获提升!
imumu1239 + 1 + 1 热心回复!
Sweeper + 1 + 1 我很赞同!
Mr.Lemon + 1 + 1 谢谢@Thanks!
RippleSky + 1 热心回复!
edide + 1 + 1 热心回复!
a87399 + 2 + 1 另类思路,到美的IoT开发者平台搞个账号直接接口请求。不过,美的不给审核.
_小白 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lingweiqiu + 1 我很赞同!
wokai000 + 1 用心讨论,共获提升!
超级大的核桃 + 1 + 1 谢谢@Thanks!
Courser + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
thundersword + 1 + 1 用心讨论,共获提升!
JosephSmith + 1 + 1 用心讨论,共获提升!
myself123 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sunnylds7 + 1 + 1 热心回复!
love212222 + 1 + 1 有点费劲啊,直接红外遥控对好频,下次直接说就OK了,嗯,带红外的小米音箱
yuxuechao + 1 热心回复!
love12581 + 1 + 1 谢谢@Thanks!
laoyuaadd44 + 1 + 1 热心回复!
xiangyujayfun + 1 + 1 我很赞同!
yaiiis + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
撩人道士 + 1 我很赞同!
三滑稽甲苯 + 1 + 1 用心讨论,共获提升!
yangzi125z + 1 + 1 用心讨论,共获提升!
ddddhm + 1 + 1 我很赞同!
BoomJovi + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
LonelyCrow + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

BoomJovi 发表于 2022-8-31 09:48
同小米和美的都在用,我的洗衣机、烘干机和中央空调都是美的,平常用小米偶尔切美的美居(美的美居做的实在是太烂了),希望大佬能出了个打包成品救一下小白
晓草 发表于 2022-8-31 09:55
Jr丶新一 发表于 2022-8-31 10:00
小明gg 发表于 2022-8-31 09:53
希望大佬能出了个打包成品救一下小白
JosephSmith 发表于 2022-8-31 09:57
哎,大佬就是大佬666666
penny 发表于 2022-8-31 09:47
66666666学习学习,和楼主一样的情况
兔纸 发表于 2022-8-31 09:48
坐等楼主发布
FungAaron 发表于 2022-8-31 09:52
期待成品
怜渠客 发表于 2022-8-31 09:53
大佬,强
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表