【问题标题】:Low Level Bluetooth Packet Analysis低级蓝牙数据包分析
【发布时间】:2015-07-14 02:22:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • @MarcusAdams 他不是明确询问如何提取和理解传输的数据吗?
  • @Trip,如果他读过协议,那么他肯定有一定程度的理解,需要具体回答他的问题。
  • @MarcusAdams 我认为它非常具体:“开始分析数据的最佳方法是什么?”
  • 永远不要低估巨型十六进制编辑器的力量!

标签: ios sockets networking bluetooth reverse-engineering


【解决方案1】:

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

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

您有两种类型的捕获数据包: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 分析的人撰写的文章ATT 数据包。

【讨论】:

  • 查看该教程的second part。您可以根据 UUID 获取服务器特征名称,这将使您了解 RE 数据包中的数据类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多