# hostdemo 攻坚总结 — 真机 Butler .1 主机侧仿真全链路打通 **日期**:2026-09-10 晚 ~ 09-11 凌晨 **结论**:✅ 认领 + RDM 设备发现(3/3)+ DMX 呼吸控制(灯光肉眼确认) **代码**:`HOSTDEMO_MODE=slfull`(src/hostdemo.rs),commit fcb20a7/3056a69 --- ## 一、最终工作配方 ``` 1. 发现: type=1 (180B) → 217B 应答 2. 认领: announce144 (=102B 身份帧) 单播 → 47B 注册应答 → AECH 质询 (nonce/B12 自选随机) → AERE = G(nonce) ✓ 3. 循环 verbatim 重放 SL 真实会话帧流 (32540 帧 / 126.7s): - DMX 数据帧: 保留 SL 原帧全部结构, 仅替换 r1/r2 + 密文段 (呼吸图案用本次认领的 B12 重加密 → Butler 解密上灯) - RDM 请求: SL 原帧原样 (UN_MUTE / UNIQUE_BRANCH / GET, ff+fe 成对) 4. 被动解码应答: DISC 脉冲 → UID; DEVICE_INFO / START_ADDRESS → DMX 地址 ``` **实测**:3/3 灯具发现(NFS1K2D@101/2ch、NFM680S@123、HMKJ@1/32ch, 应答 15.5k 帧)+ 三色异相呼吸(fade-in),**灯光肉眼确认**。 运行方式: ``` set HOSTDEMO_MODE=slfull set REPLAY_FILE=<重放清单.txt> (tshark 提取: time|dst|dstport|payload) enet-validator hostdemo 192.168.123.1 480 ``` --- ## 二、假设-证伪链(当晚完整过程) | # | 假设 | 实验 | 结果 | |---|---|---|---| | 1 | 认领后需长前奏 | 45s discovery/announce 广播 | ❌ 无效 | | 2 | 需要 sub=07 绑定帧 | 按实测节奏重放 ×4 | ❌ 无效 | | 3 | 宣告时间戳过期被拒 | live 模板 + 新鲜时间戳 | ❌ 无效 | | 4 | 会话保持 ~2h 需等待 | 45→86 分钟轮询探针 | ❌ 超时后仍拒 | | 5 | 1947 密钥/EUCE 6s 节奏门控 | 会话内补发 | ❌ 单独无效 | | 6 | RDM 帧字段差异 | 模板 vs 实帧 0 差异 | ❌ 排除 | | 7 | **verbatim 重放二分** | 阶段 A(无认领)/B(先认领) | ✅ **B 全通** | **教训**:帧级逐字节比对全通过后仍被拒时,问题在会话状态层—— 用 verbatim 重放做二分是定位此类问题的最快路径。 --- ## 三、深层发现(已写入协议文档 §3.7/§11.7) 1. **AECH 握手成功 ≠ 会话通道打通**:47B/AERE 全过但自构造 type=4 帧被静默丢弃; verbatim 的 SL 历史帧立即全通 → Butler 在帧级校验某种会话一致性(规则未破解)。 2. **RDM 请求帧消息起始位置可变**:UN_MUTE@0x3A vs UNIQUE_BRANCH@0x3C (前置 len16 字段浮动 2B)→ 固定偏移构造必被拒 → 重放绕过。 3. **announce144 == ident102**(同一帧两种称呼);真机冷启动序列: 广播前奏 → 身份帧 → 47B → AECH×3 → DMX+RDM(首应答延迟 ~1.4s 属正常)。 4. **1947 端口"密钥报文"** = 40B ASCII 许可令牌(安装级常量,双目标 21 帧 @200ms 每 ~34s 一轮);**EUCE** = 全程每 6s 的许可信标。 5. **灯具 MUTE 态跨会话持久**(SL 遗留 mute 挡后续 branch 查询)。 6. **密钥盘点**:nonce/B12 逐会话随机自主可控;G 表固定;1947 令牌安装级常量 (未做必需性消融)。详见协议文档 §3.7 密钥盘点表。 --- ## 四、遗留事项 - [ ] RDM 帧变长结构规则(破解后可纯自构造帧发现,摆脱对 SL 原帧依赖) - [ ] 1947 令牌必需性消融实验 - [ ] NFM680S 通道数应答漂移(2ch vs 1ch,疑查询时机差异) - [ ] 会话级校验的具体算法(当前只知道"verbatim 能过") ## 五、产物清单 - 代码:`src/hostdemo.rs`(slfull/slclaim/sls/hybrid/replay 五模式) - 重放清单:`replay_merged.txt`(sym_startup 101-520s + rdm3 全程,32540 帧) - 抓包:`sym_startup.pcap`(认领+发现全程)、`sym_claim2.pcap`(接管+重启)、 `allports.pcap`(全端口,1947 发现)、`hd_claim3.pcap` 等 - 文档:`enet_protocol.md` §3.7/§11.7 本夜更新