python - 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。或者,可能与我的蓝牙设备有关?
解决方案
该工具的输出没有任何问题。这是您对预期结果的期望,这是不正确的:该工具的输出是二进制内容,而不是文本文件。
以下命令(不是该工具称为 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
:
有关如何进行的更多提示,请参阅本教程:逆向工程 BLE 设备 - 应用协议逆向工程
推荐阅读
- d3.js - 条形图未显示在分组条形图中
- google-sheets - 将 3 个饼图的数据合并为 1 个饼图
- c# - 在 UserValidator 中覆盖 ValidateAsync
- c# - 使用 OpenXML 将 Word(.DOC 和 .DOCX)文档文件导入 MySQL 服务器数据库
- python - ibpy下单时无反应
- sql-server - 在现有列上将 Is Identity 更改为 yes
- javascript - 原型函数参数中的数组解构
- python - 如何在 Django 中访问第一个制作的网站
- scoop-installer - 是否可以使用 Scoop 安装 32 位 Java JDK/JRE?
- python - python:意外输出打印变量值