diff --git a/docs/enet_protocol.md b/docs/enet_protocol.md index 19d865f..0e4a922 100644 --- a/docs/enet_protocol.md +++ b/docs/enet_protocol.md @@ -637,29 +637,44 @@ mute 亦无碍);cmd=19/1a 中 SET 类厂商 PID(0x0200 族)写路径未 全链路(认领→注册→加密→解密)闭环自证。对真机 .1 仿冒的唯一额外约束: AECH 质询须源自 192.168.123.113(真机固件过滤,§3.7)。 -### 11.7 hostdemo:真机 .1 主机侧仿真(2026-09-10 晚)★进行中 +### 11.7 hostdemo:真机 .1 主机侧仿真(2026-09-10 晚)★★✅ 全链路完成(RDM 发现 + DMX 控制) -`hostdemo [目标IP] [秒]` 子命令(src/hostdemo.rs):完整主机等效流程——发现 → -冷启动前奏(discovery/announce 广播 ×10s + EUCE)→ 102B 身份帧 → AECH×3 → -DISC_UN_MUTE 广播 → UNIQUE_BRANCH 二分遍历(含 DISC 脉冲解码,§5.4 逆运算) -→ 逐 UID DISC_MUTE → GET DEVICE_INFO/DMX_START_ADDRESS → 30fps 加密 DMX 呼吸控制。 +`hostdemo [目标IP] [秒]` 子命令(src/hostdemo.rs)。当晚会话历经多次假设-证伪, +**最终工作配方(HOSTDEMO_MODE=slfull,2026-09-11 00:3x 灯光实测确认)**: -**实测进展**: -- ✅ 发现应答(217B)每次都正常——设备在任何状态下都答发现 -- ✅ **AECH 认领真机 3 次完整通过**(3 轮 G(nonce) 验证 PASS,nonce/B12 自选随机) -- ⏳ RDM 发现/控制段:尚未跑到(受下方认领门控阻断) -- cold2 时序佐证:首个 RDM 请求在认领后 54ms 发出;首个 RDM 应答与首个 42B - 遥测同步出现于认领后 1.37s(此前主机已连发 ~14 次 UNIQUE_BRANCH—— - 冷启动应答延迟大属正常,hostdemo 每分支按 4 次 ×250ms 重试) +``` +1. 发现(type=1 → 217B) +2. 认领: announce144(102B 身份帧) 单播 → 47B 注册应答 → AECH 质询 → AERE=G(nonce) ✓ + (★announce144 即 ident102 同帧; 完整冷启动前奏/绑定帧/EUCE 反而无效) +3. verbatim 重放 SL 真实会话帧流(replay_merged.txt, 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.7 补遗)** -连续 3 次成功认领但**不发任何会话流量**(无 DMX/心跳)后,.1 进入锁定态: -- 对 ident102 不回 47B 注册应答、对 AECH 质询完全不答—— - **连 cold2 原始 ident/质询的逐字节重放也一并忽略**(设备端状态,非帧构造问题) -- 发现请求(type=1)仍正常应答(225B) -- SymphoLight 于锁定约 55-70 分钟后认领成功(19:2x,期间它先广播了 >90s 才发起) -- SymphoLight 关闭(20:04,无释放帧、无 AECH,DMX 流直接消失)后 15 分钟仍锁定 -- 暂定模型:**会话保持 ≈ 55-60 分钟**(自最后一次会话流量起算),期间拒答一切新认领 +**实测结果(灯光肉眼确认呼吸)**: +- ✅ RDM 发现 3/3: `010734670125`(NFS1K2D)@101/2ch、`010734880900`(NFM680S)@123、 + `0899500026c9`(HMKJ)@1/32ch(应答 15.5k 帧) +- ✅ DMX 控制: ch101/ch123/ch1 异相呼吸(fade-in 渐入)**灯光确认** + +**★会话机制深层发现(本晚核心)**: +- **AECH 握手成功 ≠ 会话数据通道打通**——认领(47B/AERE 全过)后,自构造的 + type=4 帧(DMX/RDM)仍被静默丢弃;而 verbatim 重放 SL 的历史会话帧立即全通 + (遥测/RDM 应答恢复)→ Butler 在帧级校验某种我们尚未破解的会话一致性 +- **RDM 请求帧的消息起始位置可变**(UN_MUTE@0x3A vs UNIQUE_BRANCH@0x3C, + 前+len16 字段位置随之浮动 2B)——固定偏移构造的 RDM 帧必被拒;变长规则未破解 + (实用绕过: 直接重放 SL 原帧) +- 1947 端口"密钥报文"实为 **40B ASCII 许可令牌**(`BlZRQphA…`,恒定值,双目标 + 21 帧 @200ms 每 ~34s 一轮);EUCE 实为全程每 6s 的许可信标 +- 真机认领门控行为(当晚早段观察): 灯具 MUTE 态跨会话持久(SL 遗留的 mute + 挡住后续 branch 查询);SymphoLight 关闭无释放帧,DMX 流直接消失 + +**遗留**:RDM 帧变长结构规则(破解后可用纯自构造帧完成发现,摆脱对 SL 原帧的依赖)。 + +**历史过程记录(假设-证伪链,供复盘)**:完整冷启动前奏(45s)/绑定帧×4/EUCE 6s 节奏/ +新鲜时间戳宣告/1947 密钥/会话保持 2h 模型——均单因素排除;最终由 verbatim 重放 +二分(阶段 A 无认领 vs 阶段 B 先认领)锁定"认领 + 帧级会话一致性"双条件。 ---