yml2213
|
8efd3b8d02
|
纯Python活动页TAF服务端验证登录态: webActUI WS通道 + 金样本对拍
- tools/huya_activity_verify.py: 认证帧+getActUserTaskDetail两帧即验证
(200请求成功+6任务项=已登录; 无cookie对照905=未登录)
- 信封格式定论: L2=len(value), L1=L2+14, 身份一致性要求, actId尾字段=11 62 2f
- HTTP cdnws端点被volc-dcdn封锁非浏览器TLS, WS wsapi可纯Python直连
- evidence: 金样本(逐字节)+ 浏览器当前会话帧 + 验证结果
|
2026-08-26 02:35:42 +08:00 |
|
yml2213
|
97e6d14139
|
feat(huya): nonce生成机制完全破解 - 任意账号零设备出完整CK闭环
动态hook实锤(scripts/hook_nonce_chain.py):
rnd = XXTEA(pack(st) + pack(counter|st<<16), key=MD5hex(uid_str + k1)[:16])
- st=毫秒时间戳, counter同st内递增
- k1=设备常量865a4924...(不随账号变, evidence/nonce_k1.json)
- Python复刻(tools/nonce_forge.py)对设备两轮rnd逐字节MATCH
推翻v2误判(X2'nonce账号绑定令牌'实为nonce内编码uid):
- 换账号用目标uid重算nonce而非复用旧nonce!
- 纯随机nonce必40020因解不出合法st/counter结构
实测: 同账号+跨账号(hy_300024708从未设备登录)本地nonce铸证bind均通过,
full_web_cookie/full_auto_safe 任意账号密码->全套cookie(udb_cred/udb_biztoken)
|
2026-08-26 00:49:01 +08:00 |
|
yml2213
|
da9937707c
|
feat(huya): wupData信封规则定论 - 原nonce必带/t3-cred一致/session不可动 + 交接文档更新
|
2026-08-25 21:22:19 +08:00 |
|
yml2213
|
44b50bb503
|
feat(huya): safe_auth滑块自动过验闭环 - 新账号密码登录也全自动
|
2026-08-25 21:22:19 +08:00 |
|
yml2213
|
0019e5f7a1
|
docs: 纯Python全自动登录总结与交接文档
|
2026-08-25 19:47:58 +08:00 |
|
yml2213
|
e5a615f480
|
feat(huya): safe_auth定性为udbrtt滑块-已有solver可自动过
|
2026-08-25 19:46:30 +08:00 |
|
yml2213
|
72932d02ff
|
fix(huya): safe_auth风控账号友好提示
|
2026-08-25 19:33:21 +08:00 |
|
yml2213
|
e69194b841
|
feat(huya): 一键网页cookie工具 - 密码->cred->铸证->bind->cookie/verify全套
|
2026-08-25 19:25:06 +08:00 |
|
yml2213
|
d1a2b6aa8b
|
feat(huya): 一键全自动测试脚本(密码->cookie)
|
2026-08-25 19:14:34 +08:00 |
|
yml2213
|
d29290ae0e
|
feat(huya): 纯Python密码->cred->铸证->bind全链路贯通! 零设备闭环达成
|
2026-08-25 19:12:35 +08:00 |
|
yml2213
|
b7719bc093
|
feat(huya): 干净流水线仍40020 - 登录响应cred与cert-cred为两态, 转换步骤待抓
|
2026-08-25 19:01:46 +08:00 |
|
yml2213
|
55a2d6fe16
|
feat(huya): 对照实验-每次登录铸新cred, 钥代次轮换模式发现(0x20/30/40/50)
|
2026-08-25 18:50:05 +08:00 |
|
yml2213
|
460e067afd
|
feat(huya): 真密码端到端实测完成 - cred字段形态差异已锁定为最后问题
|
2026-08-25 18:44:38 +08:00 |
|
yml2213
|
1bf94f3c20
|
feat(huya): 真密码登录成功返回数据 - cred字段识别待精确化
|
2026-08-25 18:41:37 +08:00 |
|
yml2213
|
61408c5774
|
feat(huya): R8 - 纯Python登录链路全通, 待真密码终验
|
2026-08-25 18:38:14 +08:00 |
|
yml2213
|
dae24b513a
|
feat(huya): cred切片待锚点校正(113/114偏差)
|
2026-08-25 18:35:56 +08:00 |
|
yml2213
|
3811f14192
|
feat(huya): 响应bean解析成功 - 114B hyCred与344B biztoken定位!
|
2026-08-25 18:31:33 +08:00 |
|
yml2213
|
092fd5a04f
|
feat(huya): 响应sBuffer布局精确对齐(915B bean)
|
2026-08-25 18:27:55 +08:00 |
|
yml2213
|
afbd86d4ae
|
feat(huya): 登录响应bean部分解码 - uid实锤于tag0
|
2026-08-25 18:25:16 +08:00 |
|
yml2213
|
ec8fb880e3
|
feat(huya): 纯Python登录包获服务器返回真实登录数据(uid/token)!
|
2026-08-25 18:23:34 +08:00 |
|
yml2213
|
cc8589a7aa
|
feat(huya): 响应解析通过(id=4097回显) - APP_SIGN缺口定位到AESkeyMgr钥KFWAH
|
2026-08-25 18:16:09 +08:00 |
|
yml2213
|
783032419a
|
feat(huya): 纯Python hypasswordLogin包服务器接受(HTTP200) - 传输层全通!
|
2026-08-25 18:12:43 +08:00 |
|
yml2213
|
93365e22c7
|
feat(huya): createWupPackage签名破解 - TAF RequestPacket结构对上
|
2026-08-25 18:00:15 +08:00 |
|
yml2213
|
0bba1e6af2
|
feat(huya): 登录流量走wup.huya.com长连接 - 锁定createWupPackage@0x274ea4为帧格式突破口
|
2026-08-25 17:56:59 +08:00 |
|
yml2213
|
de35a34d52
|
feat(huya): 纯Python护照客户端骨架 - 信封构建+盲发探测(待真实包对齐)
|
2026-08-25 17:28:51 +08:00 |
|
yml2213
|
8ce65684c0
|
feat(huya): 纯Python路线确认 - wupudbrequest_v0透传通道
|
2026-08-25 17:27:46 +08:00 |
|
yml2213
|
2661d9587f
|
feat(huya): 全链路终局验证通过 - 活体cred采集+铸证+绑定闭环
|
2026-08-25 17:23:32 +08:00 |
|
yml2213
|
0ade681881
|
feat(huya): Java桥主动调getCred成功 - 活体hyCred(152b64/114B)到手并铸出新证书
|
2026-08-25 17:16:40 +08:00 |
|
yml2213
|
69c089fdeb
|
feat(huya): bean为指针对象 - 定位getCred@0x265524出口为最终抓点
|
2026-08-25 17:04:36 +08:00 |
|
yml2213
|
e7edfcee5c
|
feat(huya): MsgRequestLoginPassport完整JSON载荷捕获 - password=SHA1
|
2026-08-25 16:56:06 +08:00 |
|
yml2213
|
20c0f807ed
|
feat(huya): sendMessage(0x1001)登录时实锤触发 - wire id双体系确认
|
2026-08-25 16:53:32 +08:00 |
|
yml2213
|
75e311afa2
|
feat(huya): 确认LoginPassport走huyaudbwebui servant
|
2026-08-25 16:39:47 +08:00 |
|
yml2213
|
517ec8da4c
|
feat(huya): MsgRequestLoginPassport msgId=0x1001 实锤(RegisterMsg调用)
|
2026-08-25 16:38:01 +08:00 |
|
yml2213
|
0e262ada7c
|
feat(huya): LoginPassport注册常量0x20与证书key_idx同值
|
2026-08-25 16:36:17 +08:00 |
|
yml2213
|
db9283de91
|
feat(huya): msgId线索 0x1001/0x2001 注册模式定位
|
2026-08-25 16:34:28 +08:00 |
|
yml2213
|
466dd38517
|
feat(huya): udb消息载荷为JSON命名键 - 请求/响应字段即线上协议
|
2026-08-25 16:32:59 +08:00 |
|
yml2213
|
1b09bed3d4
|
feat(huya): BusBeansLoginData完整字段表 - cred/cookie/token随护照登录响应下发
|
2026-08-25 16:30:54 +08:00 |
|
yml2213
|
9488522be4
|
feat(huya): B1静态首铲 - 登录态JSON字段名集群+新24字符密钥发现
|
2026-08-25 16:20:57 +08:00 |
|
yml2213
|
4c35e741ef
|
feat(huya): cred来源定位 - HandlerResponseLoginPassport护照登录响应
- backtrace实锤: saveLoginData<-HandlerResponseLoginPassport<-JceInputStream
- cred随护照登录响应一次性下发(BusBeansLoginData), 非独立消息
- HTTPS passwordLogin简化通道响应无cred(二次扫描确认)
- 下一步: 对比App真实登录请求字段 / 长连接WSP复刻 / 混合采集兜底
|
2026-08-25 16:18:20 +08:00 |
|
yml2213
|
d24666ab2a
|
feat(huya): hyCred签发链侦察 - saveLoginData落盘捕获+长连接消息族定位
- 证实cred长寿命(晨间cred午后仍有效), 每账号一次采集即可
- 密码登录响应不含cred; 签发走cdn.wup长连接(MsgRequestLgnCred族)
- getCred纯本地读; 落盘链: saveLoginData->JSON->AES->writeFileEx
- 三路线评估: A混合采集(可用)/B wsapi复刻/C长连接复刻, 下次从笔记抓手继续
|
2026-08-25 16:07:33 +08:00 |
|
yml2213
|
9aed5847dd
|
feat(huya): 铸证活体验证通过 - 换cred重铸证书bind成功
- 实验C: 原nonce+原指纹+旧轮换hyCred -> 全新密文证书 -> bind stage=2
uid=1199666914671 + 344B biztoken
- 证明: 服务端校验nonce合法性但不校验时效; 身份完全由cert内cred决定
- gen_biz_token trace: enum=0x78, 入参(uid串,sessHex32),
xxtea明文16B=[t][t<<16]结构, enpack_body组装P1顺序实锤
- => 拿到任意账号有效hyCred(114B)即可铸其证书
|
2026-08-25 15:37:42 +08:00 |
|
yml2213
|
a0ba2fe020
|
feat(huya): 证书算法完全闭环 - 差分法证明标准AES-128-ECB并复现铸证
- NativeFunction直调差分: FIPS-197 KAT逐位一致, UdbAESUtil无魔改
- 证书 = b64([0x0C][key_idx][AES128-ECB(key16, zeropad(P1_187B))])
- P1结构: [010400][5008][u16+20B随机][u16+40B指纹hex][u16+114B hyCred]
- 密钥: rodata默认三条(AESkeyMgr id=3/4/5) + 服务端下发会话钥(key_idx区分)
- tools/cert_forge.py 重铸证书与活体密文 FULL MATCH
|
2026-08-25 15:21:11 +08:00 |
|
yml2213
|
2076510df9
|
feat(huya): frida证书生成链逆向 - 全链路hook工具与文档
- 定位完整调用链: HYUDBMSDKCommon桥接 -> MsgGetH5InfoEx(184549387)
-> HandlerGetH5InfoEx::onHandler@0x38d548 -> getOtp@0x2689f4
-> hyudb_otp_encrypt@0x32fa24 -> createWupRequestData@0x38dab0
- 实测参数表: otp(uid串,2,轮换idx,'5008',SESS_HEX32,hyCred114B,4,nonce)
- 密钥字符串确认: 'HuyaUdb1928374650qwertyuiop' (encrypt x3 参数)
- Java桥直呼触发: LoginProxy.getQUrlData/getH5InfoEx/getCred 可编程调用
- 稳定时序固化: spawn挂起->bypass->resume->10s->patch_guard->hooks
(attach已运行进程必被检测闪退)
- 发现App登录态JSON含现成web cookie.biztoken(344B)
|
2026-08-25 14:21:06 +08:00 |
|
yml2213
|
9aea9851bd
|
test(huya): 风控场景/代理/扫码闭环探针与逆向文档
- probe_huya_login_scene: 各 appId/UA 组合的风控策略探测
- probe_huya_proxy: 走代理源对比直连的风控策略
- probe_huya_qr_bind: 扫码登录闭环(getQrId->scanQrPicNotify->
bindQrLoginUser->tryQrLogin), 实测出有效web会话; 含wupData
结构地图与证书定位实验结论(见 docs/虎牙扫码登录闭环逆向.md)
|
2026-08-25 11:51:01 +08:00 |
|
yml2213
|
705c51bf48
|
feat(huya): 密码登录appId透传修正+风控换IP重试
- _password_payload 改用 self.app_id/self.app_sign(原先硬编码5002,
导致5008实例静默发错appId)
- app_id=5008 时自动切换 Android WebView UA
- login() 增加换IP重试循环: 扫码/短信风控时经 proxy_fetcher 换代理重试,
上限 max_ip_retries, 耗尽后返回 code=risk
|
2026-08-25 11:50:48 +08:00 |
|
yml2213
|
0a060bb777
|
fix(huya): 风控判定改为按URL路径, strategy=64不再误判为扫码
矩阵实测: 不存在账号/错误密码下发 pt_auth.html(滑块), 正确密码才下发
qr_auth.html(扫码)。旧逻辑把 strategy==64 硬编码当扫码, 把可自动化的
滑块误杀成死路。现仅按 URL 路径 qr_auth 判定。
|
2026-08-25 11:50:40 +08:00 |
|
yml2213
|
ff99c036f8
|
虎牙App密码登录: 逆向WUP协议并实现纯Python登录编码器
- hook WUP序列化层抓取TLS加密前明文,确认密码登录走
servant=huyaudbwebui / func=hypasswordLogin (msgType=0x1001)
- 逆向JCE RequestPacket帧格式(1015字节TAF二进制),定稿三层结构:
WUP header(tag1-10) -> sBuffer Map -> _wup_data业务struct
- 澄清两个疑点字节: 0x66/0x7d 是TAF字段头(非分隔符)
- 实现 tools/huya_wup_encoder.py,逐字节复现金标准
- 实测纯Python动态构造登录成功(返回uid+token),TLS指纹不阻断
- userAction随机坐标/时间戳同样通过,内置make_user_action辅助函数
- 新增证据金标准 + 协议文档
|
2026-08-25 02:59:20 +08:00 |
|
yml2213
|
06a0a1e7d3
|
虎牙登录: 接入hydevice高信任设备指纹与App场景验证支持
- 新增 fingerprint/: node仿真Android WebView运行官方hydevice.js(含WASM加密), 产出与真机同构的高信任sdid
- 新增 device_fingerprint.py: py编排node runner获取sdid, 失败自动降级旧无指纹流程
- login.py: prepare_device优先高信任指纹; 增加App场景常量(appId=5008, appSign=md5(appId+verCode+appKey)[:8], 逆向自APK UdbNetHelper)
- solver: 支持appId/page_url/use_touch_events参数化(App模式); get3使用csid会话id; 识别qr_auth扫码(冷却)与dx_auth短信策略并抛专用异常
|
2026-08-23 17:32:34 +08:00 |
|
yml2213
|
bf2f78aa70
|
优化客服CK重登流程
|
2026-08-14 14:43:21 +08:00 |
|
yml2213
|
1ed1eac205
|
同步客服充值渠道配置
|
2026-08-14 14:00:51 +08:00 |
|