用蓝牙低能解码wireshark的数据包重量。

问题描述 投票:0回答:1

我一直在努力对不同的基于BLE的设备做一些逆向工程,我有一个体重秤,我找不到一个模式来 解释重量 的值,我可以从安卓应用中获得。我也能够得到这个设备的服务和特性,但没有从蓝牙网站上找到与UUIDs匹配的SIG标准。

我使用的是一个 nRF51 dongle来嗅探android应用程序和体重秤之间的数据包,我可以看ble流量,但有几个事件在通信过程中,我不能真正理解什么是关系,我无法将这些值转换成可读的重量(公斤或磅)。

我的目标值是 71. 3公斤 从体重秤应用中读取的。

让我给你看看我从Bleanzer上得到了什么。notification/indication request首先我看到 master 正在向句柄发送通知指示请求 0x0009(notify), 0x000c(indication)0x000f(notify) 在一个服务的每个特性中。

然后,我开始读取通知indications值与写命令混合。在通信结束时,我看到了一些数据包,我觉得它们是含有体重秤数据和BMI的数据包。图像中的数据包编号为574、672和674。notifications and indications responses

所以我们有以下的候选数据包。

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属性)比我想象的更重要。

bluetooth bluetooth-lowenergy reverse-engineering
1个回答
0
投票

我自己解决。

这个 岗位 给了我一个想法,取值(2个字节)并将它们乘以0.1,这样我就可以得到权重。

在字节中,我可以寻找我的目标值,不需要小数。713这就是十六进制= 0x02c9

如果我们看一下数据包的数量 574: 000002c9070002 并将其分开 00:00:02:c9:07:00:02

我看到第2个和第3个字节与这个模式相匹配!

唯一需要做的就是将这些字节进行分组,然后将十进制值乘以 713 x 0.1 = 71.3. 我做了不同的测试,发现这个模式是恒定的,所以我觉得对我的解决方案是准确的。希望这可以帮助别人在未来。

© www.soinside.com 2019 - 2024. All rights reserved.