逆向工程特定的蓝牙通信协议

时间:2017-11-05 06:25:17

标签: encryption bluetooth reverse-engineering wireshark sniffing

我已经在stackoverflow上阅读了一段时间的答案,这是我第一次真正被要求提问:

我有一个小型传感设备(字面上是一个黑盒子),用于体育活动期间,并且跟踪加速度和GPS数据(根据供应商的专利,不一定具有相同的频率)。在会话之后,可以将设备连接到智能手机并导入会话数据以查看统计信息。 现在我正在尝试获取原始数据以将一些自己的统计数据应用到它上面。

我知道设备通过蓝牙连接到我的手机。所以我按照本教程激活了蓝牙HCI监听日志:

http://www.fte.com/WebHelp/BPA600/Content/Documentation/WhitePapers/BPA600/Encryption/GettingAndroidLinkKey/RetrievingHCIlog.htm

然后我可以通过将文件重命名为PC上的.cap文件并将它们加载到wireshark中来传输文件。这是它变得棘手的地方: 我发现,第一个连接是通过蓝牙低功耗建立的。建立连接并且用户已选择通过应用程序从设备下载会话时,连接将切换到正常的蓝牙连接。 我知道该设备包含一个GPS和一个包含陀螺仪的9轴加速度计。

显然,传输数据的蓝牙协议是SPP协议(https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#Serial_Port_Profile_.28SPP.29),用于模拟RS-232连接。

我附上了wireshark的截图,显示了重新组装的数据包。我不知道它包含什么,Wireshark的渲染对我没有任何意义。框架内容显示在最底部的选项卡中。左边是原始HEX传输,右边是渲染版本。它既不像任何GPS句子(http://www.gpsinformation.org/dale/nmea.htm),也不像任何加速度计数据:

Screenshot of the Wireshark UI

一般设置是无加密连接,但在某些阶段主机和控制器尝试切换到加密,但这永远不会传输到外围设备(据我所见)。我想知道如何理解这些数据,是否有办法让我知道加密是否被激活,如果是,是否记录了,我可以从这个日志中检索密钥吗?

任何人都可以帮我弄清楚这里的数据,或者告诉我在哪里可以找到关于它是否加密的提示?

修改 我添加了第一个SPP传输数据包的屏幕截图。 Screenshot of the first transmission packet有问题的数据包和有效负载标记为黑色。它似乎包含一些有关设备和其他配置设置或传感器初始值的初始值的信息。我怀疑应用程序和设备已经确定了专有加密或加密,因为在开头有可读值,但在图像中标记的黑框之后没有。我怀疑是,根本没有使用蓝牙加密,因此根本没有机会解密信息?有人可以证实或否认这种怀疑吗?

1 个答案:

答案 0 :(得分:0)

  

我可以在哪里找到关于它是否加密的提示?

您在Wireshark中看到的是主机和控制器之间的HCI接口(命令和事件)。由于加密是在控制器中完成的(参见蓝牙核心规范第1卷A部分第5.4.3节),所以您看到的是未加密数据。

  

任何人都可以帮我弄清楚这里的数据

您的单个​​屏幕截图很难理解。我建议你看一下RFCOMM specification,图6.1特别说明:

RFCOMM frame structure.

信息字段中,您应该找到您的数据。