2026-09-11 12:03:43 +08:00
|
|
|
|
# enet-validator — e:cue SymphoLight ↔ Butler e:net 协议逆向与复现
|
|
|
|
|
|
|
|
|
|
|
|
对 e:cue SymphoLight 5.5 与 Butler S2 之间 UDP/31772 私有协议(e:net)的完整逆向:
|
|
|
|
|
|
**AECH 认领算法破解、DMX 帧混淆破解、RDM over e:net 解码**,并分别实现了
|
|
|
|
|
|
**设备端仿真**(虚拟 Butler)与**主机端仿真**(hostdemo 直接接管真机)。
|
|
|
|
|
|
|
|
|
|
|
|
## 目录
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
├── src/ Rust 源码(std only,无外部依赖)
|
|
|
|
|
|
│ ├── main.rs 子命令入口
|
|
|
|
|
|
│ ├── enet.rs e:net 帧模板 / SO_REUSEADDR 绑定
|
|
|
|
|
|
│ ├── tests.rs 虚拟 Butler 设备端(AECH 本地应答 + RDM 灯具仿真 + 解密日志)
|
|
|
|
|
|
│ ├── aech.rs AgiosElias.G 认领算法、DMX zPprv0TXRRW 混淆加解密、dmxdec/dmxsend
|
|
|
|
|
|
│ ├── hostdemo.rs 主机侧等效示例(真机接管:认领→RDM 发现→加密 DMX 控制)
|
|
|
|
|
|
│ └── dmxhash.rs 早期帧标签分析
|
|
|
|
|
|
├── samples/ 37 个真实抓包帧样本(hex)
|
|
|
|
|
|
├── docs/
|
|
|
|
|
|
│ ├── enet_protocol.md ★协议逆向文档(帧布局/算法/实证,最核心)
|
|
|
|
|
|
│ └── rust_verification_plan.md 验证计划
|
|
|
|
|
|
├── scripts/
|
|
|
|
|
|
│ ├── Verify-EnetProtocol.ps1 协议验证套件
|
|
|
|
|
|
│ ├── Verify-Rdm.ps1 RDM 验证
|
|
|
|
|
|
│ ├── enet_lib.ps1 PS 公共库
|
|
|
|
|
|
│ └── session/ 逆向过程中的会话脚本(抓包/分析/部署/推送)
|
|
|
|
|
|
└── tools/ DLL 反编译辅助工具(C#)
|
|
|
|
|
|
├── IlDump.cs / GetTable.cs / Scan.cs
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 构建
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
cargo build --release # std only, 无外部依赖
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 子命令(设备端仿真,跑在任意机器,绑 58 网段示例)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
enet-validator device # 虚拟 Butler 主循环(192.168.58.7)
|
|
|
|
|
|
enet-validator discover|announce|heartbeat|euce|session|all
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 子命令(主机侧 / 离线分析)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
enet-validator hostdemo <目标IP> [秒] # 主机侧等效:认领→RDM 发现→加密 DMX 控制
|
|
|
|
|
|
# 环境变量 HOSTDEMO_MODE=quick 最小认领+统一会话环
|
|
|
|
|
|
# =claimonly 最小认领探针
|
|
|
|
|
|
# HOSTDEMO_PRE=<秒> 前奏时长(默认45)
|
|
|
|
|
|
enet-validator dmxsend <目标IP> [秒] # 主机侧加密 DMX 播放(自证闭环)
|
|
|
|
|
|
enet-validator dmxdec <tsv> # DMX 帧解密验证(离线)
|
|
|
|
|
|
enet-validator dmxroll <tsv> # 滚动值分析(离线)
|
|
|
|
|
|
enet-validator aechprobe <tsv> <ip> # AECH 在线探测
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## show 模式:地址 1-32 炫彩呼吸 + RDM 状态轮询
|
|
|
|
|
|
|
|
|
|
|
|
无需 SymphoLight 运行,独立接管 Butler,持续输出炫彩呼吸 DMX 并轮询设备状态。
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
# 永久运行(按 Ctrl+C 停止)
|
|
|
|
|
|
$env:HOSTDEMO_MODE = "show"
|
|
|
|
|
|
.\target\release\enet-validator.exe hostdemo 192.168.123.1 0
|
|
|
|
|
|
|
|
|
|
|
|
# 或运行固定秒数
|
|
|
|
|
|
.\target\release\enet-validator.exe hostdemo 192.168.123.1 600
|
|
|
|
|
|
```
|
|
|
|
|
|
|
feat: crack all DMX/RDM frame fields; show mode now fully self-constructed
- analyze subcommand: offline replay/template field variance, diff, counter analysis
- DMX header fully decoded: port mask @0x20, port lens u16LE=512 @0x34/0x36, counter +1/frame
- RDM request frame fully decoded: counter=0, 0x20=02, 0x2A=0xCC, msgLen=24+PDL,
checksum=0xCC+sum(0x3C..0x53+PDL) @0x53+PDL, pair copy rules
- Fix historical misreadings: RDM always starts @0x3C (not variable); no session-level
frame check exists - earlier failures were wrong template + checksum off-by-one
- show mode: build_dmx_frame/build_rdm_frame2/rdm_pair_copy, zero template dependency
- Decode 47B register response and 42B event frames; doc enet_protocol_current.md rewritten
2026-09-11 12:53:36 +08:00
|
|
|
|
- DMX:地址 1-32 彩虹呼吸渐变(HMKJ 32 通道灯具),**零模板纯自构造帧**(`build_dmx_frame`)
|
|
|
|
|
|
- RDM:每 700ms 轮询 3 台已知 UID,实时打印 `DEVICE_INFO` 与 `DMX_START_ADDRESS`,**纯自构造请求帧**(`build_rdm_frame2`)
|
|
|
|
|
|
- 运行无需任何抓包/replay 文件;DMX/RDM 帧全字段已破解(见 docs/enet_protocol_current.md)
|
2026-09-11 12:03:43 +08:00
|
|
|
|
|
|
|
|
|
|
## 已破解要点(详见 docs/enet_protocol.md)
|
|
|
|
|
|
|
|
|
|
|
|
- **AECH 认领**:`G(x) = x ^ TABLE[(x%32 + 1 + (x*13)%30) % 32]`(无密钥,表内嵌 DLL)
|
|
|
|
|
|
- **DMX 混淆**:`r=Random.Next()`;`out[i]=src[(i+rot)%512]^cnt[i]`,`rot=(B12^r)&511`
|
|
|
|
|
|
- **RDM**:标准 E1.20 内嵌 type=04 帧(0x3C 起,免 0xCC 起始字节,checksum 含隐含 0xCC)
|
|
|
|
|
|
- **1947 端口**:40B ASCII 许可令牌广播(`BlZRQphA…`,每 ~34s 一轮)
|
|
|
|
|
|
- 真机固件过滤:AECH 仅应答源 IP=192.168.123.113
|
|
|
|
|
|
|
|
|
|
|
|
## Ubuntu 虚拟 Butler 部署
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
scp -r enet-validator/ user@192.168.58.7:~/
|
|
|
|
|
|
ssh user@192.168.58.7 "cd ~/enet-validator && cargo build --release && ~/run_butler_local.sh"
|
|
|
|
|
|
```
|