低级蓝牙数据包分析

Low Level Bluetooth Packet Analysis

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

我看过网络上有关 packets/frames 的帖子,但开始分析数据的最佳方式是什么?将它转储到一个巨大的十六进制编辑器中并没有帮助(显然)。

谷歌搜索各种信息术语令人困惑,在 SE 网络上搜索结果为零。

这是 Wireshark window 数据包的示例,我假设是在健身追踪器跟踪运动时正在写入的数据:

更多来自数据包,随机选择:

感谢您帮助我们找到一些更好的资源以及从哪里开始分析这些数据包及其数据!

开始分析数据的最佳方式是找出实际数据的起点和终点。

免责声明:我对蓝牙的经验为零,但让我们试一试。

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

Wikipedia 说:

Low Energy Attribute Protocol (ATT)

It allows a client to read and/or write certain attributes exposed by the server in a non-complex, low-power friendly manner.

这听起来很像数据。

快速 Google 搜索 "L2CAP packet format" 显示以 4 字节开头的多种格式 header:2 字节消息长度 + 2字节 CID (little-endian).

使用 the giant hex editor 我们在 06 1b 数据 header 之后找到相应的 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 for the BLE Sniffer and even an article by a guy who attempts to reverse-engineer a color changing bulb 通过分析 ATT 数据包的教程。