首页 > 解决方案 > BLE 嗅探:来自 adb bugreport 的 btsnoop 日志使用 python 脚本 - 编码/解码问题

问题描述

我是阅读蓝牙设备 (BLE) 数据的新手,并尝试遵循此 Medium 教程(我的蓝牙设备是 Amazfit Bip)。

我一直在寻找 btsnoop_hci.log 文件(来自三星 Galaxy S7),所以我adb bugreport anewbugreportfolder按照Stack Overflow answer here 中的建议运行。
为了重现性,我在这里将我的错误报告的相关部分上传到了 Dropbox

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

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

标签: pythonandroidbluetoothbluetooth-lowenergy

解决方案


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

以下命令(不是该工具称为 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

Wireshark 解释文件 btsnoop_hci.log 的屏幕截图

仅查看具有 CID 0x0004 的相关数据包的一个很好的过滤器是btl2cap.cid == 0x0004

在此处输入图像描述

有关如何进行的更多提示,请参阅本教程:逆向工程 BLE 设备 - 应用协议逆向工程


推荐阅读