首页
社区
课程
招聘
[原创]一个BLE智能手环的分析
发表于: 2022-3-13 09:11 31522

[原创]一个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期)

收藏
免费 3
支持
分享
打赏 + 50.00雪花
打赏次数 1 雪花 + 50.00
 
赞赏  Editor   +50.00 2022/03/29 欢迎大家多多投稿优质文章,赢取“雪花”奖励~
最新回复 (12)
雪    币: 14501
活跃值: (17498)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2022-3-14 14:58
0
雪    币: 7561
活跃值: (3551)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2022-3-14 22:21
0
雪    币: 254
活跃值: (474)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mark 学习一下
2022-3-17 09:28
0
雪    币: 0
活跃值: (633)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主可以讲讲app 这块 怎么找到收发数据的点的
2022-3-17 11:24
0
雪    币: 340
活跃值: (14000)
能力值: ( LV13,RANK:606 )
在线值:
发帖
回帖
粉丝
6
Qira 楼主可以讲讲app 这块 怎么找到收发数据的点的
主要是这个APP他能够输出日志,可以直接看到发送的指令,还有就是日志前面是有对应的类的名字
2022-3-17 13:38
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
学习一下
2022-3-17 23:10
0
雪    币: 4112
活跃值: (5812)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
为什么我的CC2540抓不到,LZ。
2022-9-14 09:53
0
雪    币: 340
活跃值: (14000)
能力值: ( LV13,RANK:606 )
在线值:
发帖
回帖
粉丝
9
badboyl 为什么我的CC2540抓不到,LZ。
BLE有三个广播信道(37、38、39),随机选取一个信道使用,建立连接时根据一些设定好的参数跳频通信,BLE Sniffer只有抓到连接的包,才可以跟着跳频通信抓取后面的包。CC2540只能同时抓一个广播信道,因此有可能抓不到连接的那个包,就没法跟着跳频继续抓后面的包。想要稳一点可以买个nRF52840烧一个sniffer的固件,这个是目前我知道的最实惠的同时抓三个广播信道的方法了,还有个叫Hollong的设备比较贵
2022-9-14 21:10
0
雪    币: 4112
活跃值: (5812)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
10
yichen115 BLE有三个广播信道(37、38、39),随机选取一个信道使用,建立连接时根据一些设定好的参数跳频通信,BLE Sniffer只有抓到连接的包,才可以跟着跳频通信抓取后面的包。CC2540只能同时抓一 ...
明白了,感谢LZ耐心解答。
2022-9-16 13:51
0
雪    币: 409
活跃值: (688)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
想问一下大佬,这里的char-write-cmd的指令传入后的监听回显怎么设置,看了博客还是没有理解,然后我执行一样的模版操作可以进行震动的反馈,但是消息的伪造却一直无法看见手环的回显
2024-10-13 05:23
0
雪    币: 340
活跃值: (14000)
能力值: ( LV13,RANK:606 )
在线值:
发帖
回帖
粉丝
12
gir@ffe 想问一下大佬,这里的char-write-cmd的指令传入后的监听回显怎么设置,看了博客还是没有理解,然后我执行一样的模版操作可以进行震动的反馈,但是消息的伪造却一直无法看见手环的回显
我能想到的可能有几个:1、手环本身的消息通知有没有打开,你试一下正常的手机消息能在手环上显示吗;2、是不是固件升级了消息校验方式改变了,你需要重新分析一下APP看看
2024-10-13 07:56
0
雪    币: 409
活跃值: (688)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
yichen115 我能想到的可能有几个:1、手环本身的消息通知有没有打开,你试一下正常的手机消息能在手环上显示吗;2、是不是固件升级了消息校验方式改变了,你需要重新分析一下APP看看
好的,谢谢大佬
2024-10-18 09:56
0
游客
登录 | 注册 方可回帖
返回
//