{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols/blob/daf7c5c4b9d0d11eed45371324cf368c8bad9703/radar.py",
    "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols/blob/daf7c5c4b9d0d11eed45371324cf368c8bad9703/parseData.py",
    "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols/tree/daf7c5c4b9d0d11eed45371324cf368c8bad9703/BTServerCaptures",
    "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols/blob/daf7c5c4b9d0d11eed45371324cf368c8bad9703/LICENSE"
  ],
  "category": "learning",
  "description_en": "Write-up of how the author decoded the Bluetooth RFCOMM protocol of a Cobra iRAD 900 radar detector so that a Raspberry Pi 3 could receive alerts without the iOS or Android app. Traffic was logged on a jailbroken iPhone with BTServer and filtered in Wireshark; the README then documents the detector's half-second status payload and the 9-byte reply whose ACK byte must echo the detector's sequence byte, and replays recorded responses to the initial settings sync instead of decoding it. A short beginner's case study on RFCOMM traffic analysis with a rough proof-of-concept script, not a maintained client.",
  "description_zh": "作者记录了如何解析 Cobra iRAD 900 雷达测速预警器的蓝牙 RFCOMM 协议，使 Raspberry Pi 3 无需 iOS 或 Android 应用即可接收警报。作者在越狱 iPhone 上用 BTServer 记录通信，再用 Wireshark 过滤；README 随后说明预警器每半秒发送的状态载荷，以及 9 字节的回复报文，其中 ACK 字节必须回显预警器发来的序号字节；对于连接初期的设置同步，则直接重放录制的响应而不加解析。这是一个面向初学者的 RFCOMM 流量分析简短案例，附带粗略的概念验证脚本，并非持续维护的客户端。",
  "entry_url": "https://awesomerea.org/resources/cobra-irad-bluetooth-protocol-walkthrough/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/cobra-irad-bluetooth-protocol-walkthrough/",
  "evidence_url": "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols/blob/daf7c5c4b9d0d11eed45371324cf368c8bad9703/README.md",
  "group": "learn",
  "id": "cobra-irad-bluetooth-protocol-walkthrough",
  "json_url": "https://awesomerea.org/resources/cobra-irad-bluetooth-protocol-walkthrough/record.json",
  "kind": "learning-resource",
  "markdown_url": "https://awesomerea.org/resources/cobra-irad-bluetooth-protocol-walkthrough/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/cobra-irad-bluetooth-protocol-walkthrough/index.md",
  "name": "Reverse-Engineering a Bluetooth-Enabled Radar Detector",
  "name_zh": "逆向分析蓝牙雷达测速预警器协议",
  "record_type": "resource",
  "relationship": "learning",
  "requirements": [
    "Written in 2017 and last expanded on 2017-07-06; the latest commit, from January 2025, only updates the contact email. It covers one detector model. The alert-type values are only partly identified because the author had no radar gun, the initial sync is replayed rather than decoded, and the README expects the replay data would need re-recording after app settings change.",
    "Following the method needs a Cobra iRAD 900 used with its vendor app and a way to log the phone's Bluetooth traffic; the author used BTServer logging on a jailbroken iPhone 5 and Wireshark. The repository commits the author's three .pklg captures, the Wireshark XML export (data.xml) and the processed packetData.dat; no app or device firmware is included.",
    "radar.py is a self-described extremely rough proof of concept that talks RFCOMM through PyBluez, with the author's detector address and service UUID hard-coded; its setup notes install the Python 2 python-bluez package. parseData.py converts data.xml into packetData.dat, which radar.py loads with pickle, so treat that file as executable input.",
    "MIT License. Cobra's detector, app and trademarks keep their own rights."
  ],
  "requirements_zh": [
    "写于 2017 年，正文最后一次扩充是在 2017-07-06；2025 年 1 月的最新提交只更新了联系邮箱。内容只涉及一种预警器型号。由于作者没有雷达测速枪，警报类型的取值只识别了一部分；初始同步采用重放而非解析，README 也预计更改应用设置后需要重新录制重放数据。",
    "照此方法操作，需要一台配合厂商应用使用的 Cobra iRAD 900，以及记录手机蓝牙通信的手段；作者使用越狱 iPhone 5 上的 BTServer 日志和 Wireshark。仓库提交了作者录制的三份 .pklg 抓包、Wireshark 导出的 XML（data.xml）以及处理后的 packetData.dat；不含任何应用或设备固件。",
    "radar.py 是作者自称“极其粗糙”的概念验证脚本，通过 PyBluez 走 RFCOMM 通信，并硬编码了作者设备的地址和服务 UUID；其安装说明使用 Python 2 的 python-bluez 软件包。parseData.py 把 data.xml 转换为 packetData.dat，而 radar.py 用 pickle 加载该文件，因此应把它视为可执行输入。",
    "采用 MIT 许可证。Cobra 的预警器、应用和商标仍归其权利人所有。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/brandonasuncion/Reverse-Engineering-Bluetooth-Protocols",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
