docs: Butler behavior findings (bind refusal state, toxic prelude, ident-before-AECH); README run/stop commands
This commit is contained in:
parent
249cd05906
commit
4d01cbf6ea
19
README.md
19
README.md
|
|
@ -44,9 +44,12 @@ enet-validator discover|announce|heartbeat|euce|session|all
|
||||||
|
|
||||||
```
|
```
|
||||||
enet-validator hostdemo <目标IP> [秒] # 主机侧等效:认领→RDM 发现→加密 DMX 控制
|
enet-validator hostdemo <目标IP> [秒] # 主机侧等效:认领→RDM 发现→加密 DMX 控制
|
||||||
# 环境变量 HOSTDEMO_MODE=quick 最小认领+统一会话环
|
# 环境变量 HOSTDEMO_MODE=show 彩灯渐变常驻(推荐, 见下节)
|
||||||
# =claimonly 最小认领探针
|
# =quick 最小认领+统一会话环
|
||||||
# HOSTDEMO_PRE=<秒> 前奏时长(默认45)
|
# =claimonly 最小认领探针
|
||||||
|
# HOSTDEMO_PRE=<秒> 广播前奏(默认0; 45=SL式前奏, 实测有毒)
|
||||||
|
# HOSTDEMO_BIND=1 发 bind52×4 (实测有毒, 仅复现实验用)
|
||||||
|
# 注: secs=0 在默认模式=跳过DMX; 在 show 模式=永久运行
|
||||||
enet-validator dmxsend <目标IP> [秒] # 主机侧加密 DMX 播放(自证闭环)
|
enet-validator dmxsend <目标IP> [秒] # 主机侧加密 DMX 播放(自证闭环)
|
||||||
enet-validator dmxdec <tsv> # DMX 帧解密验证(离线)
|
enet-validator dmxdec <tsv> # DMX 帧解密验证(离线)
|
||||||
enet-validator dmxroll <tsv> # 滚动值分析(离线)
|
enet-validator dmxroll <tsv> # 滚动值分析(离线)
|
||||||
|
|
@ -64,10 +67,20 @@ $env:HOSTDEMO_MODE = "show"
|
||||||
|
|
||||||
# 或运行固定秒数
|
# 或运行固定秒数
|
||||||
.\target\release\enet-validator.exe hostdemo 192.168.123.1 600
|
.\target\release\enet-validator.exe hostdemo 192.168.123.1 600
|
||||||
|
|
||||||
|
# 后台常驻(无窗口)
|
||||||
|
$env:HOSTDEMO_MODE = "show"
|
||||||
|
Start-Process -FilePath ".\target\release\enet-validator.exe" -ArgumentList "hostdemo 192.168.123.1 0" -WindowStyle Hidden
|
||||||
|
|
||||||
|
# 停止后台灯效
|
||||||
|
Get-Process enet-validator | Stop-Process -Force
|
||||||
```
|
```
|
||||||
|
|
||||||
- DMX:地址 1-32 彩虹呼吸渐变(HMKJ 32 通道灯具),**零模板纯自构造帧**(`build_dmx_frame`),**port1+port2 双口同时输出**(灯具接任一口均可控)
|
- DMX:地址 1-32 彩虹呼吸渐变(HMKJ 32 通道灯具),**零模板纯自构造帧**(`build_dmx_frame`),**port1+port2 双口同时输出**(灯具接任一口均可控)
|
||||||
- RDM:每 700ms 轮询 3 台已知 UID,实时打印 `DEVICE_INFO` 与 `DMX_START_ADDRESS`,**纯自构造请求帧**(`build_rdm_frame2`)
|
- RDM:每 700ms 轮询 3 台已知 UID,实时打印 `DEVICE_INFO` 与 `DMX_START_ADDRESS`,**纯自构造请求帧**(`build_rdm_frame2`)
|
||||||
|
- 认领帧同样纯自构造(`build_claim_frame`,不透明区填 0——Butler 不校验,已消融实证)
|
||||||
|
- 冷启动实测(2026-09-11 全系统断电重启):**最小认领(announce144 + claim)即可,无任何必需前奏**
|
||||||
|
- ⚠ 勿发 bind52 绑定帧与 45s 广播前奏——实测**有毒**(bind 以 unbind 收尾会让 Butler 拒答 AECH 数分钟)
|
||||||
- 运行无需任何抓包/replay 文件;DMX/RDM 帧全字段已破解(见 docs/enet_protocol_current.md)
|
- 运行无需任何抓包/replay 文件;DMX/RDM 帧全字段已破解(见 docs/enet_protocol_current.md)
|
||||||
|
|
||||||
## 已破解要点(详见 docs/enet_protocol.md)
|
## 已破解要点(详见 docs/enet_protocol.md)
|
||||||
|
|
|
||||||
|
|
@ -218,9 +218,11 @@ type=1, 子类型=15, len=644 (0x284):
|
||||||
|
|
||||||
| 项 | 状态 |
|
| 项 | 状态 |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 1947 端口 40B 许可令牌 | 固定 ASCII 常量 `BlZRQphAGxUbi7at8KEfmdZ7TdSB03b+qoC1RIA`,SL 每 ~34s 广播 21 帧双目标;语义未知(常量本身排除与狗绑定);暖会话**非必需**;冷启动必需性未验证 |
|
| 1947 端口 40B 许可令牌 | 固定 ASCII 常量 `BlZRQphAGxUbi7at8KEfmdZ7TdSB03b+qoC1RIA`,SL 每 ~34s 广播 21 帧双目标;语义未知(常量本身排除与狗绑定);暖/冷会话均**非必需** |
|
||||||
| 42B 事件码 0x0318(ack)/0x0062(status) 语义 | 结构已解,语义未解码 |
|
| 42B 事件码 0x0318(ack)/0x0062(status) 语义 | 结构已解,语义未解码 |
|
||||||
| bind52 flag ffff/0000 语义 | 结构已解(主机+设备 IP/MAC, 0x64/0x01f4 疑速率参数);flag 疑绑定/解绑;暖会话**非必需** |
|
| ~~bind52 flag ffff/0000 语义~~ | **已基本破解(行为实证 2026-09-11)**:ffff=绑定 / 0000=解绑;×4 序列以 0000 收尾 → Butler 进入**数分钟 AECH 拒答态**(可自愈),期间一切认领被无视。SL 序列虽同形但其后续流程不同;**我们不应发 bind** |
|
||||||
|
| ~~45s 广播前奏门控假说~~ | **证伪且有毒**:PRE=45 认领 FAIL / PRE=0 PASS;"须 13+ 轮 announce 武装认领"不成立;冷启动最小认领即可 |
|
||||||
|
| ~~AECH 是否需前置身份帧~~ | **必需**:skip2(无身份帧直接 claim)被无视;每轮 announce144 → 47B 注册 → claim 则稳定 PASS |
|
||||||
| AERE 0x24-0x27 / 0x2C-0x2E 回显字段 | 疑主机 IP/MAC 部分回显,需跨主机抓包证实 |
|
| AERE 0x24-0x27 / 0x2C-0x2E 回显字段 | 疑主机 IP/MAC 部分回显,需跨主机抓包证实 |
|
||||||
| AERE/发现应答配置块细节(0x1c/0x1d/0x0af0) | 疑固件版本/端口配置,语义未坐实 |
|
| AERE/发现应答配置块细节(0x1c/0x1d/0x0af0) | 疑固件版本/端口配置,语义未坐实 |
|
||||||
| claim 不透明区 240B 真实内容 | Butler 不校验(已消融证实);疑 SL 软件侧证书/许可 blob,与协议功能无关 |
|
| claim 不透明区 240B 真实内容 | Butler 不校验(已消融证实);疑 SL 软件侧证书/许可 blob,与协议功能无关 |
|
||||||
|
|
@ -233,6 +235,16 @@ type=1, 子类型=15, len=644 (0x284):
|
||||||
- ~~会话级帧校验~~ → 不存在
|
- ~~会话级帧校验~~ → 不存在
|
||||||
- ~~0x2E 严格校验~~ → 不校验(1/2 均接受)
|
- ~~0x2E 严格校验~~ → 不校验(1/2 均接受)
|
||||||
- ~~claim 帧 240B 高熵区被 Butler 校验~~ → 清零照样 PASS
|
- ~~claim 帧 240B 高熵区被 Butler 校验~~ → 清零照样 PASS
|
||||||
|
- ~~"Butler 须收到 ~13+ 轮 discovery/announce 才武装认领"~~ → 广播前奏反而有毒
|
||||||
|
|
||||||
|
## 九b、Butler 行为特性(实证)
|
||||||
|
|
||||||
|
1. **AECH 固件过滤**:仅应答源 IP=192.168.123.113 的认领质询。
|
||||||
|
2. **身份帧前置**:AECH 前须先发 102B 身份帧(announce144/ident)完成 47B 注册,否则质询被无视。
|
||||||
|
3. **bind 拒答态**:收到 bind52 以 0000(unbind) 收尾的序列后,拒答 AECH 数分钟(自愈)。
|
||||||
|
4. **广播前奏副作用**:45s discovery/announce686/EUCE 广播后认领失败率显著升高(机制未明,不用即可)。
|
||||||
|
5. **RDM 代理门控**:RDM 代理疑似仅在 DMX 流活跃时工作(cold2 遗留观察;show 模式 DMX 常开所以无感)。
|
||||||
|
6. **重启后本机双 IP**:全系统重启后网卡可能同时持有 192.168.123.113(静态)+ 192.168.123.200(DHCP);程序写死绑 .113 不受影响,但若 .113 丢失认领将被固件过滤。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user