From bc9d827a60759046333e39cb38b92596ffec672a Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 29 Aug 2026 00:05:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(huya):=20OTP=E7=BB=84=E5=90=88=E9=93=BE?= =?UTF-8?q?=E8=A7=A3=E7=A0=81(xxtea+getkey+md5=5Fchar16+AES)=20-=2032hex?= =?UTF-8?q?=E5=BD=A2=E6=80=81=3Dmd5=5Fchar16=E5=80=99=E9=80=89=20+=20?= =?UTF-8?q?=E5=A4=8D=E5=88=BB=E5=AD=90=E4=BB=A3=E7=90=86=E5=9C=A8=E8=B7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/HUYA_HDID_ALGORITHM_GEN.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/HUYA_HDID_ALGORITHM_GEN.md b/docs/HUYA_HDID_ALGORITHM_GEN.md index 165755a..b4effe8 100644 --- a/docs/HUYA_HDID_ALGORITHM_GEN.md +++ b/docs/HUYA_HDID_ALGORITHM_GEN.md @@ -597,3 +597,21 @@ B. **静态读完整 encrypt 路径** (0x24f9f0 _encrypt + Cipher@0x24f314): 明 ### 对比结论 标准 AES-192-ECB(同一输入+24B钥) = b1e3abcc… ≠ 原生 ba3fb8f1… — **原生 AES 变体 (64B 钥材料 + 自定义扩展)**。 华生线索: 原生输出对「输入块内含 NUL 的 64B 钥」敏感 — 下一轮 = Nk 分支 + Cipher 轮结构静态定案 → Python 复刻。 + +## §11.17 hyudb_otp_encrypt 组合链解码 (2026-08-28 夜) + +### 0x32fa24 (hyudb_otp_encrypt) 组件链 +``` +cred_packls(…多个字段打包) ← 请求材料构建 +xxtea_encrypt @0x457e60 ← XXTEA 层 +AESkeyMgrC2 → AESkeyMgr::getkey(int,int) ← 双 id 取钥 +string-insert(钥) + md5_char16 ← 32hex 材料 (MD5-hex 32 字符!) +UdbAESUtilC1 + encrypt ← AES 层 +``` +### 32hex 生成假设 +- md5_char16 = 32 字符 MD5-hex — **与 HDID32 的 32hex 形态吻合** (候选公式候选) +- md5(钥)/md5(钥+域) 组合爆破 → 与 ed0db8 仍零命中 (材料=getkey 双 id 产物 + cred_pack 序列化, 未定) + +### 工作台状态 (本轮新增) +- tools/unidbg/hydev/src/hydev/AesProbe.java: encode_aes 差分源 (已验证) +- 子代理: 静态复刻 KeyExpansion/Cipher → Python (验证目标 = 探针 3 向量)