BLE 嗅探:来自 adb bugreport 的 btsnoop 日志使用 python 脚本 - encoding/decoding 问题

BLE sniffing: btsnoop log from adb bugreport using python script - encoding/decoding problems

我是读取蓝牙设备 (BLE) 数据的新手,并尝试遵循 this Medium tutorial(我的蓝牙设备是 Amazfit Bip)。

我无法找到 btsnoop_hci.log 文件(来自 Samsung Galaxy S7),所以我 运行 adb bugreport anewbugreportfolder
为了重现性,我将错误报告的相关部分上传到 Dropbox here

我的问题是: 当我按照上面链接的 Stack Overflow 答案中的建议尝试 运行 btsnoop.py (can be found here) 时,我得到非常 st运行ge 输出,不可能是预期的(例如,它以 ��^D#} 开头并包含许多奇怪的问号字符)。

Python 脚本的某些部分是否需要调整才能正常工作,例如编码(none 标准脚本似乎可以提供更好的结果)?我正在使用 Python 3.7。或者,可能是关于我的蓝牙设备?

该工具的输出没有任何问题。这是您的期望,这是不正确的:该工具的输出是二进制内容,而不是文本文件。

以下命令(不是该工具称为 btsnooz,不是 btsnoop)将二进制输出重定向到名为 btsnoop_hci.log 的新文件:

$ python2 ./btsnooz.py ./bugreport-part.txt > btsnoop_hci.log

$ file btsnoop_hci.log
btsnoop_hci.log: BTSnoop version 1, HCI UART (H4)

软件 Wireshark 完全能够解释生成的 BTSnoop 日志文件:

wireshark btsnoop_hci.log

只查看 CID 为 0x0004 的相关数据包的一个好过滤器是 btl2cap.cid == 0x0004:

可以在本教程中找到有关如何继续的更多提示:Reverse Engineering BLE Devices - Application Protocol Reverse Engineering