一个使用 Python 和 Bleak 库的简单蓝牙低功耗(BLE)嗅探器
定时嗅探 |
无限嗅探 |
如果你使用的是 iTerm2,你需要确保终端本身拥有蓝牙权限。
打开系统设置(或系统偏好设置)。
前往 Privacy & Security > Bluetooth 并授予 iTerm2 访问权限。
python -m venv .venv
source .venv/bin/activate
pip install asyncio bleak rich manuf bluetooth-numbers geocoder
python3 bluesnoop.py
bluesnoop 欢迎任何贡献。请 fork 本仓库,并提交包含你想要实现的功能或修复的拉取请求。
An Organizationally Unique Identifier (OUI) is a 24-bit (three-byte) number, managed by the IEEE, that uniquely identifies a manufacturer or organization for network devices, forming the first half of a device's MAC address to ensure global uniqueness
Python 中的 uuid.UUID 类会根据 RFC 4122 标准严格验证字符串。具体来说,它会在字符串的特定位置查找“版本”数字。
失败原因 在标准 UUID 中,第三组的第一个数字(例如 xxxx-xxxx-Nxxx-xxxx)必须是 1 到 5 之间的数字(代表版本)。
查看你的数据:
D5D93B6E-C324-FD7B... -> 版本数字是 F。
6ADBBD89-CBFF-0FE8... -> 版本数字是 0。
由于 F 和 0 不是有效的 RFC 4122 版本号(1-5),Python 会抛出 ValueError:格式错误的十六进制 UUID 字符串。
进一步探索以下内容:
discovered_devices_and_advertisement_data // https://bleak.readthedocs.io/en/latest/api/scanner.html#bleak.BleakScanner.discovered_devices // 16:20 @ 1/8/26 BW
如果你喜欢 bluesnoop,请考虑成为赞助者,以资助我未来的项目。
要查看我的其他作品,请访问我的 GitHub 主页。