我一直在努力对不同的基于BLE的设备做一些逆向工程,我有一个体重秤,我找不到一个模式来 解释 的 重量 的值,我可以从安卓应用中获得。我也能够得到这个设备的服务和特性,但没有从蓝牙网站上找到与UUIDs匹配的SIG标准。
我使用的是一个 nRF51 dongle来嗅探android应用程序和体重秤之间的数据包,我可以看ble流量,但有几个事件在通信过程中,我不能真正理解什么是关系,我无法将这些值转换成可读的重量(公斤或磅)。
我的目标值是 71. 3公斤 从体重秤应用中读取的。
让我给你看看我从Bleanzer上得到了什么。首先我看到 master
正在向句柄发送通知指示请求 0x0009(notify), 0x000c(indication)
和 0x000f(notify)
在一个服务的每个特性中。
然后,我开始读取通知indications值与写命令混合。在通信结束时,我看到了一些数据包,我觉得它们是含有体重秤数据和BMI的数据包。图像中的数据包编号为574、672和674。
所以我们有以下的候选数据包。
1st. packet_number_574 = '000002c9070002
2nd. packet_number_672 = '420001000000005ed12059007f02c9011d01f101'
3rd. packet_number_674 = '42018c016b00070237057d001a01bc001d007c'
第1个数据包在通信交换过程中 看起来更像是反RTclock而不是真正的测量数据 因为数据行为,所以我觉得这个不是真正的候选数据包
第2和第3个数据包看起来更像是真实的候选数据,我把它们拆开并转换成十进制值,但我没有找到关系,甚至没有结合字节,因为这些值是浮点数据类型。所以我真正的问题是,我是否遗漏了一些你可能看到的信息?你知道这个数据包和我的目标之间是否有关系吗?
谢谢你花时间阅读我,任何帮助都可能是好的,谢谢!
EDIT.我有一个python脚本,可以让我的目标数据包和我的目标数据包之间的关系。
我有一个python脚本,可以让我检查服务和他们的特性层次和一些有用的数据,如属性,他们的句柄和描述符。
Service 'fff0' (0000fff0-0000-1000-8000-00805f9b34fb):
Characteristic 'fff1' (0000fff1-0000-1000-8000-00805f9b34fb):
Handle: 8 (8)
Readable: False
Pro+perties: WRITE NOTIFY
Descriptor: Descriptor <Client Characteristic Configuration> (handle 0x9; uuid 00002902-0000-1000-8000-00805f9b34fb)
Characteristic 'fff2' (0000fff2-0000-1000-8000-00805f9b34fb):
Handle: 11 (b)
Readable: False
Properties: WRITE NO RESPONSE INDICATE
Descriptor: Descriptor <Client Characteristic Configuration> (handle 0xc; uuid 00002902-0000-1000-8000-00805f9b34fb)
Characteristic 'fff3' (0000fff3-0000-1000-8000-00805f9b34fb):
Handle: 14 (e)
Readable: False
Properties: NOTIFY
Descriptor: Descriptor <Client Characteristic Configuration> (handle 0xf; uuid 00002902-0000-1000-8000-00805f9b34fb)
这是我在wireshark中看到的与通知和指示有关的特征。我认为数据包的数量 574 (其中特性只有一个notifiy属性)比我想象的更重要。
我自己解决。
这个 岗位 给了我一个想法,取值(2个字节)并将它们乘以0.1,这样我就可以得到权重。
在字节中,我可以寻找我的目标值,不需要小数。713
这就是十六进制= 0x02c9
如果我们看一下数据包的数量 574: 000002c9070002
并将其分开 00:00:02:c9:07:00:02
我看到第2个和第3个字节与这个模式相匹配!
唯一需要做的就是将这些字节进行分组,然后将十进制值乘以 713 x 0.1 = 71.3
. 我做了不同的测试,发现这个模式是恒定的,所以我觉得对我的解决方案是准确的。希望这可以帮助别人在未来。