Commit Graph
21 Commits
Author SHA1 Message Date
yml2213 da2cf5a61d feat(huya): 整合 App 协议登录获取 Cookie 全链路并与 Web 登录解耦
- core/huya: 新增 app_login, wup_encoder, nonce_forge, cert_forge, envelope_forge, device_profile, udb_aes
- core/huya/__init__.py: 导出 login_huya_app_password 与 HuyaAppPasswordLogin
- web/backend: 新增 /accounts/app-password-login 与 /accounts/app-password-login/selected 路由及 Schema,与原 Web 密码登录独立分开
- web/frontend: 增加 App 登录 API 与前端界面“App 登录选中”操作,弹窗结果明确区分
- tests: 新增 test_huya_app_login.py 单元测试覆盖全链路
2026-08-26 15:51:30 +08:00
yml2213 4eec01568f dfpReport: 确定加密为逐字节XOR(动态keystream)+同步pair捕获+IDA导出线索, 记录破解进度 2026-08-26 14:17:58 +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 e5a615f480 feat(huya): safe_auth定性为udbrtt滑块-已有solver可自动过 2026-08-25 19:46:30 +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 783032419a feat(huya): 纯Python hypasswordLogin包服务器接受(HTTP200) - 传输层全通! 2026-08-25 18:12:43 +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 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 09efb23f58 迁移前自动升级 SQLite 结构 2026-07-25 10:37:02 +08:00
yml2213 2c4ff6901f 修复容器迁移脚本导入路径 2026-07-25 10:33:37 +08:00
yml2213 32f9eadfdb 支持 MySQL 迁移与性能优化 2026-07-25 10:23:19 +08:00