hdid 溯源实测: libhydeviceid.so设备ID, 纯代码不可铸造; 共用登录无碍仅设备维度关联风险
- df/collect 响应含40hex hdid(每次新值)但 WUP 登录拒绝(652B) -> 非同一体系 - runner.js 输出 __HDID__, get_huya_sdid 一并返回 - 文档: hdid 来源/可铸造性/共用风险评估 + 设备池方案
This commit is contained in:
@@ -520,3 +520,27 @@ multi 全换(除hdid/版本)| 滑块(可过) ✅
|
||||
- tools/app_login_flow.py: login_cred 支持 device_info 参数 (滑块自动过)
|
||||
- tools/full_web_cookie.py: 全链接入画像 (--new-device 强制换新画像)
|
||||
- evidence/device_profiles.json: 账号→画像映射
|
||||
|
||||
### 追问: hdid 从哪来? 所有账号共用一个会不会出问题? (2026-08-26 追加实测)
|
||||
|
||||
**hdid 来源**:
|
||||
- WUP 登录帧 t1.t0 的 hdid(`ed0db8334cadd236c00cadf7e11ab5a5`, 32hex)是
|
||||
**App 原生 libhydeviceid.so 生成的设备 ID**(APK 静态分析: libhydeviceid.so
|
||||
= "设备 ID 生成"), 经 App 渠道 dfpReport 链注册, 与 app_version(appSign)
|
||||
绑定签名校验。
|
||||
- 纯代码铸造新 hdid **不可行**(全部实测):
|
||||
| 尝试 | 结果 |
|
||||
|---|---|
|
||||
| 随机 32hex hdid | 652B APP_SIGN_NOT_MATCH |
|
||||
| df.huya.com df/collect 下发的 40hex hdid (每次新值) | 652B APP_SIGN_NOT_MATCH |
|
||||
| 40hex 截断前 32 位 | 652B APP_SIGN_NOT_MATCH |
|
||||
| 金样本 hdid | cred ✅ |
|
||||
|
||||
**共用风险**: 登录层无碍(新账号直出 cred, 无 qr_auth); 风险在服务端
|
||||
**设备维度账号关联**(一台设备 N 账号)。若需真隔离: 从多台真机各抓一套
|
||||
WUP 帧 {hdid, fingerprint, device_id, safedeviceid} 建设备池, 账号轮换分配;
|
||||
或破解 dfpReport 加密体(逆向笔记待破解#2)后纯代码注册新设备。
|
||||
|
||||
**附带发现**: df/collect 响应含 40hex hdid 字段(与 sdid 同返), 已让
|
||||
`core/huya/device_fingerprint.get_huya_sdid` 一并返回 (runner.js 输出
|
||||
`__HDID__` 行); 它与 WUP 的 32hex hdid 非同一体系, 不能互用。
|
||||
|
||||
Reference in New Issue
Block a user