druserx/geminus

GitHub: druserx/geminus

Geminus 是一个 BLE 中间人中继工具,通过克隆设备广播并实时拦截或改写 ATT PDU,实现对蓝牙低功耗通信的透明转发与数据操控。

Stars: 0 | Forks: 0

# geminus 透明 BLE 中继。它位于设备和合法客户端之间,实时转发所有内容,并允许在中间拦截或修改 ATT PDU。 这个名字是拉丁语中的“双胞胎”——外围设备会克隆真实设备的广播。 ``` [cliente legítimo] | | BLE (acha que é o dispositivo real) | [hci1 — geminus peripheral] | fila de PDUs + callback de intercept | [hci0 — geminus central] | | BLE (conectado no dispositivo real) | [dispositivo alvo] ``` 需要在同一主机上配备两个 BLE 适配器。我使用两个 CSR 4.0 USB dongle 进行了测试。 ## 依赖 ``` sudo apt install libbluetooth-dev ``` ## 构建 ``` make ``` ## 用法 ``` # 纯 relay — 透明,客户端无感知 sudo ./geminus -a AA:BB:CC:DD:EE:FF # 拦截并在终端打印所有 ATT PDU sudo ./geminus -a AA:BB:CC:DD:EE:FF -i # 应用 rewrite 规则并保存 dump sudo ./geminus -a AA:BB:CC:DD:EE:FF -r regras.txt -p dump.bin ``` ## 规则格式 文本文件,每行一条: ``` # 在客户端写入时将值 0x01 替换为 0x00 0012 01 -> 0012 00 # 任何包含该 header 的 PDU 1200 -> 1201 ``` ## 无法实现的功能 - 无法破解 LESC(LE Secure Connections)——需要事先与目标配对 - 不会自动伪造 BD_ADDR(取决于适配器的固件) - 不支持 BR/EDR 请仅对您有授权的设备使用。
标签:BLE, C/C++, 中间人攻击, 事务性I/O, 客户端加密, 蓝牙