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, 客户端加密, 蓝牙