From 72932d02ff26fbc9375ec78db95461b5905f1e29 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Tue, 25 Aug 2026 19:33:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(huya):=20safe=5Fauth=E9=A3=8E=E6=8E=A7?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=8F=8B=E5=A5=BD=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/full_web_cookie.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tools/full_web_cookie.py b/tools/full_web_cookie.py index c72b97f..ece8c04 100644 --- a/tools/full_web_cookie.py +++ b/tools/full_web_cookie.py @@ -3,10 +3,9 @@ 用法: python tools/full_web_cookie.py <账号> <密码> 产出: 打印全部cookie并写 evidence/web_cookies_full.txt """ -import sys -if len(sys.argv)>=3: - import json,re,hashlib - sys.argv=[sys.argv[0]] +import sys, json, re, hashlib +ACCT, PWD = sys.argv[1], sys.argv[2] +sys.argv = [sys.argv[0]] import sys,json,time,base64 from urllib.parse import quote sys.path.insert(0,'scripts'); sys.path.insert(0,'tools') @@ -22,10 +21,20 @@ _mj=json.loads(re.search(rb'(\{"associationId.*?\})',_raw).group(1)) _ua=re.search(rb'(\{"curl".*?"user_action":\[.*?\]\})',_raw).group().decode() _sd=re.search(rb'PQwemAN9[A-Za-z0-9+/=]+',_raw).group().decode() _dev={"app_version":"13.4.22","sdk_version":"1.0.80138","vendor":"xiaomi","model":"M2102J2SC","os":"android","ip":"127.0.0.1","fingerprint":"02df398797432eadefcc12767119ad5e80999389","screen":"M2102J2SC,30,11","width":"1080","height":"2120","device_id":"7c5387e0539c023c31c4ff0e807e7256117385ee"} -_pkt=build_password_login_wup("300023887",hashlib.sha1(PWD.encode()).hexdigest(),_sd,"ed0db8334cadd236c00cadf7e11ab5a5",_mj["session"],_mj["traceId"],_ua,_dev) +_pkt=build_password_login_wup(ACCT[3:] if ACCT.startswith("hy_") else ACCT, hashlib.sha1(PWD.encode()).hexdigest(),_sd,"ed0db8334cadd236c00cadf7e11ab5a5",_mj["session"],_mj["traceId"],_ua,_dev) _r=_rq.post("https://wup.huya.com",data=_pkt,headers={"Content-Type":"application/multipart-formdata; charset=UTF-8","User-Agent":"Dalvik/2.1.0"},timeout=15) _b=_r.content; _s=_b.find(b'\x0a\x0a',0x40); _e=_b.find(b'_wup_header'); _d=_b[_s:_e-6] -_m=re.search(rb'\x3d\x00\x00.',_d); _ln=_m.group()[3] +_m=re.search(rb'\x3d\x00\x00.',_d) +if not _m: + _u=re.search(rb'https://aq\.huya\.com[^\x00\x20]{20,}',_d) + if _u: + print('❌ 该账号触发了安全验证(safe_auth), 无法直接取cred') + print(' 解决: 先用该账号在手机虎牙App上正常登录一次(建立设备信任),') + print(' 之后本脚本即可全自动。验证页:', _u.group()[:100].decode()) + else: + print('❌ 登录未返回cred(密码错误或账号异常), 响应',len(_b),'B') + sys.exit(1) +_l=_m.group()[3] cred=_d[_m.start()+4:_m.start()+4+_ln] print('新鲜cred:',len(cred),cred[:8].hex()) P1n=build_p1(b"5008",fields["fingerprint"],cred,rnd=fields["rnd"])