docs(账本): 记录 XTEA 密钥形态的关键发现(ASCII 打包串 / 闭包捕获 / 轮加盐随构建变)

做了什么:
- PROGRESS.md §一 已知表新增 4 条:
  10. XTEA 密钥字 = 4 个「ASCII 打包的 4 字符串」(大端拼 32bit)
  11. 密钥既不是立即数也不是字面字符串(明文/大端字节/base64 都搜不到)
  12. 密钥数组经闭包捕获传入: @09463 CREATE_CLOSURE caps=[r7=r8], XTEA 轮以 reg7[(sum>>>11)&3] 取用
  13. 轮加盐随构建变化(本构建 723726/855311, 台账另一构建 2829068/328986), 但都是可见立即数
- PROGRESS.md §五 下一步新增第 0 条: 静态提取密钥(逐闭包符号执行)

为什么:
- 这是"去掉最后一个 Node 依赖"的关键定位, 避免重复摸索

怎么验证:
- 密钥字节解剖: 1818510928 -> 0x6c644650 "ldFP" 等 (core_js/tdc_sample.js)
- 反汇编: .venv/bin/python tools/tdc_disasm.py tcaptcha/core_js/tdc_sample.js
This commit is contained in:
yml2213
2026-10-11 21:51:06 +08:00
parent d52368be2b
commit 32a78318ad
+9 -1
View File
@@ -39,6 +39,10 @@
| 7 | tdc.js 至少两代明文布局,**新版字段序随构建变化** | 旧版首段 `{"cd":[[],...`;雨云实时 `{"cd":[1,[],...`;1ms 实时 `{"cd":[1791712995,0,...` | 确证 |
| 8 | 宽松 aid 下服务端**不校验** `collect` 与 `eks` 的同源性 | 雨云 aid + 硬编码旧密钥 + 旧版明文 → `errorCode=0` + 真实 ticket | 确证(仅宽松 aid,勿外推) |
| 9 | 「Node 跑密钥 + Python 全算法」端到端可用 | 雨云 aid 纯 Python 出包 → `errorCode=0` | 确证 |
| 10 | **XTEA 密钥字是 4 个「ASCII 打包的 4 字符串」**(每字 = 4 个可打印字符按大端拼成 32bit)| `core_js/tdc_sample.js` 的密钥 `[1818510928,1381395306,1245924197,1768384072]` 大端解码 = `ldFP`/`RVkj`/`JCKe`/`igfH`;root 样本 = `VWTQ`/`nMJk`/`gSRU`/`QVZR` | 确证 |
| 11 | 密钥字**既不是立即数、也不是字面字符串**(无论明文、大端字节序列、base64 都不在 tdc.js/字节码里)| 立即数 1.3e9~1.9e9 区间为空;`ldFPRVkjJCKeigfH` 及其 base64 均搜不到 | 确证 |
| 12 | 密钥数组在 XTEA 轮里通过**寄存器间接寻址**读取,且经闭包捕获传入 | 反汇编 `reg7[(sum>>>11)&3]`;`@09463 CREATE_CLOSURE target=@9109 caps=[r7=r8]` | 确证 |
| 13 | 轮加盐**每次构建都不同**(但都是可见立即数)| 本构建 = `723726`(j==2) / `855311`(j==3);台账另一构建 = `2829068` / `328986` | 确证 |
---
@@ -87,8 +91,12 @@ TencentCaptchaClient(telemetry_mode="python_keyed") # 默认
## 五、下一步(可被下一轮直接执行)
0. **静态提取 XTEA 密钥(去掉最后一个 Node 依赖)**:密钥字是 ASCII 打包串、且不是字面量,
需对**正确反汇编**(`tools/tdc_disasm.py`)做一个小的**逐闭包符号执行/数据流**:
从 `CREATE_CLOSURE caps=[r7=r8]` 反查父闭包 r8 的赋值表达式并常量折叠。
寄存器是「每闭包一份、经 `PUSH_IMM_ARRAY <idx>` 引用间接访问」,所以需要真正的数据流而非模式匹配。
1. **拿下 1ms 的 12**:做账本 §7.5 的**单变量实验** ——
(a) 给 captcha 域带上成功样本里的 `uin/skey/qcmainCSRFToken/intl` cookie;
(a) 给 captcha 域带上成功样本里的 `uin/skey/qcmainCSRFToken/intl` cookie(已做,H3 已排除);
(b) 登录态真页面触发 vs 未登录触发。二选一即可闭合。
2. **补齐新版明文字段语义**:对照 10+ 份实时模板做差分。
3. **实现 2408 图标点选**:按 1ms 图标类别重训 `yolo_detector` + `icon_classifier`。