-
-
[原创]一个BLE智能手环的分析
-
发表于:
2022-3-13 09:11
31522
-
首先确定手环的 MAC 地址,使用 APP 进行扫描连接,连接成功就会显示设备的 MAC 地址:A4:C1:38:6A:1C:BF
接下来解除绑定,使用 TI 的 packet sniffer 进行蓝牙数据包的捕获,插入 CC2540 后选择好类型,开始捕获后再查找手环进行绑定,因为 BLE 会随机在 37、38、39 三个信道中选择一个,而 packet sniffer 只能监听一个信道,所以可能需要多试几次才能捕获到,其中 M->S 表示是手机发送给手环,S->M 是手环发送给手机
有些可疑的包标记一下,这两个都包含了当前的步数 100,即 0x64,且都是从手机端发送一个请求之后从手环发回来的
在捕获的最后阶段,我摁下了几次查找手环的命令,这应该是查找手环的震动效果
但是此时通过 gatttool 或者 nRFconnect 进行发送是不成功的,因为手环需要进行绑定才能通信,接下来使用 AndroidKiller 抓取 APP 的日志进行分析,查看 APP 是如何与手环进行通信的
打开 AndroidKiller 后连接手机,在 Android 中已找到设备中就可以看到手机了,然后点击日志
点击开始进行日志的捕获
这里进行 BLE 的连接
BLE 连接成功,此时虽然连接成功但是仍然没有绑定设备
向手环发送了一条指令:430000dc,猜测是用来进行绑定,可以先记录下来,后边通过 gatttool 进行验证
获取手环电量指令:27000074
获取步数、卡路里、距离等指令:2001000070
获取心率等指令:21010000c6
(这里只是根据值大致推测了一下,并没有逆向APP查看每个字段的范围)
获取体温数据指令:2c01000078(我还没测过体温,所以没啥数据)
查找手环指令:1008000000000001000000c00000000000000000,效果是三次长时间的震动
手环还支持将 APP 收到的消息推送到手环上显示,打开该功能后给手环支持的 APP 发送消息,手环就会显示收到的消息
查看一下这个过程的日志,可以发现如下信息:
首先是 0a020000020e,告诉手环要推送消息
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)