低级蓝牙数据包分析

时间:2015-05-04 16:01:12

标签: ios sockets networking bluetooth reverse-engineering

我有一个使用蓝牙LE和我的iPhone 6+的健身追踪器。不幸的是,该应用程序并未公开来自跟踪器的原始数据以及导出它的零方式,而这些数据对我来说非常有趣。我从Adafruit购买了蓝牙LE嗅探器,并使用Wireshark捕获数据包。虽然我可以打开它并分析标题没有问题,但实际数据有点超出我的范围。

我查看了网络中查看数据包/帧的帖子,但是开始分析数据的最佳方法是什么?把它倾倒到一个巨大的十六进制编辑器中(显然)并没有帮助。

谷歌搜索各种信息条款令人困惑,并在SE网络上显示零结果。

这里是一个Wireshark数据包窗口的示例,我假设是在健身跟踪器跟踪运动时写入的数据:

enter image description here

随便从数据包中随机选择:

enter image description here

您在寻找更好的资源以及从哪里开始分析这些数据包及其数据的帮助表示赞赏!

1 个答案:

答案 0 :(得分:7)

开始分析数据的最佳方法是找出实际数据的起始位置和结束位置。

免责声明:我对蓝牙没有经验,但让我们试一试。

您有两种类型的捕获数据包:Empty PDU(某种形式的信令?)和ATT。在空PDU中搜索数据似乎没有效果,所以让我们看一下ATT

Wikipedia说:

  

低能耗属性协议(ATT)

     

它允许客户端读取和/或写入由某些属性公开的属性   服务器采用非复杂,低功耗的方式。

这听起来很像数据。

快速Google搜索" L2CAP数据包格式" 显示以4字节标头开头的多种格式:2字节消息长度+ 2字节CID(小端)。

使用the giant hex editor,我们在06 1b数据头之后立即找到相应的4个字节。它们是17 00 04 00,转换为长度23和CID 0x0004

查找CID 0x0004显示它确实是ATT的保留值。

搜索ATT数据包格式的时间:似乎从一个1字节的命令代码开始。 这是1d,表示HANDLE_VALUE_INDICATION。句柄是一个短(2个字节),等于0x001b,就像在第一个图像中一样。

因此,句柄后的20个字节是值。它代表什么,任何人的猜测。

05 e5 00 83 ff 4a 00 77 77 77 fc 6d fc 37 fc 18 fe 1f 03 43

挖掘更多信息表明,Wireshark应该能够直接分析ATT(尝试解码为?),learn.adafruit.com上有BLE Sniffer的教程,甚至还有attempts to reverse-engineer a color changing bulb的文章。 {3}}通过分析ATT数据包。