在 GitHub 上加星Star2.4k 个星标

案例

BM2 Battery Monitor:重建加密的 BLE 电压协议

重新实现 BM2(Battery Monitor 2)汽车电池监测器的低功耗蓝牙协议,使其读数无需厂商的 Android 应用即可使用。基于 Bleak 的 Python 客户端会解密监测器以 AES 加密的通知,读取当前电压并请求设备存储的电压历史;ESPHome 模板可在 ESP32 上提供电压读数,示例应用则用于查看、导出读数或通过 MQTT 转发。作者的说明称密钥和数据包格式是从厂商应用中恢复的;结果均为作者及贡献者报告。

目标
协议
类别
独立重建案例
关联
独立重建项目
来源复核于
星标
87
最近提交
2026-10-13
主要语言
Python
许可(GitHub 识别)
MIT

GitHub 数据,截至 2026-11-09

复制为 Markdown查看 JSON引用

使用条件与局限

  • bm2 0.1.0 包要求 Python 3.8+。客户端读取当前电压和历史记录;历史时间戳按两分钟间隔推算,ESPHome 模板只读取当前电压。
  • 需自备 BM2 监测器及其蓝牙地址。客户端和 ESPHome 模板包含从厂商应用恢复的 AES-128-CBC 密钥。
  • Python 客户端使用 Bleak ~0.14.2 和 PyCryptodome;重连路径调用 Linux bluetoothctl。MQTT 示例另需 paho-mqtt ~1.6.1。ESPHome 模板面向采用 Arduino、mbedtls 的 nodemcu-32s ESP32,并需填写 Wi-Fi、MQTT 和 MAC 密钥配置。
  • 仓库有 mypy 检查,但没有测试或 CI。历史数据修复报告在 Linux Mint 22.3 和 PowerHouse BM2 N2099A 上测试;其他 BM2 型号的覆盖情况未说明。
  • 代码按 LICENSE.txt 采用 MIT;设备和厂商应用保留各自权利。

引用

BibTeX

@misc{bm2-battery-monitor-ble-case,
  title = {{BM2 Battery Monitor: reconstructing an encrypted BLE voltage protocol}},
  howpublished = {\url{https://github.com/KrystianD/bm2-battery-monitor}},
  url = {https://github.com/KrystianD/bm2-battery-monitor},
  urldate = {2026-10-20},
  note = {Awesome REA entry: \url{https://awesomerea.org/zh/resources/bm2-battery-monitor-ble-case/}}
}

纯文本

BM2 Battery Monitor: reconstructing an encrypted BLE voltage protocol。https://github.com/KrystianD/bm2-battery-monitor(访问于 2026-10-20)。Awesome REA 条目:https://awesomerea.org/zh/resources/bm2-battery-monitor-ble-case/

有帮助?在 GitHub 上为 Awesome REA 加星2.4k

关于此条目

说明已依据一手来源复核。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  2. .docs/reverse_engineering.md GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  3. bm2_python/src/bm2/client.py GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  4. bm2_python/src/bm2/encryption.py GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  5. bm2_esphome/bm2.yaml GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  6. bm2_esphome/main.yaml GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  7. bm2_python/requirements.txt GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  8. pyproject.toml GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  9. LICENSE.txt GitHub · KrystianD/bm2-battery-monitor · 修订 494a39c
  10. https://github.com/KrystianD/bm2-battery-monitor/pull/28

同分区更多条目:协议

协议分区全部 720 项资源协议案例(645)

↑↓ 移动↵ 打开⌘↵ 新标签页