web_cookie_fields 用逆向算法替换随机:__yamid_new=UUIDv1时间戳复刻、game_did=35位63字符集、_yasids同源、_qimei_uuid42=1a前缀、guid回退加固定段
This commit is contained in:
@@ -85,4 +85,48 @@ qimeisdk-web 0.6.3 源码已定位:
|
||||
1. `_qimei_fingerprint` 直接用 SpookyHashV2 实现(canvas 指纹用标准值替代)
|
||||
2. `guid` 采样更多样本确认固定段后按 `0a` + 结构仿造
|
||||
3. `__yamid_new` 需找到生成它的具体脚本(非 document.cookie 写入,可能在
|
||||
ubtk/埋点脚本里)做种子同步
|
||||
ubtk/埋点脚本里)做种子同步
|
||||
## 六、核心字段生成算法逆向结果(2026-09-01 晚,浏览器实测 + 源码定位)
|
||||
|
||||
### ✅ __yamid_new = room_normal.js generate32(UUID-v1 风格,已 Python 复刻验证)
|
||||
```js
|
||||
// a.msstatic.com/huya/main3/app/room_normal_55c7cc4f.js
|
||||
function u(e){var t="__yamid_new",n=getCookieVal(t);if(n)return n;n=e||d.generate32();...writeCookie(t,n,...)}
|
||||
d.generate32(){
|
||||
c = new Date().getTime() - new Date(1582,10,15,0,0,0,0).getTime(); // 本地时区 epoch
|
||||
return generateBits(c,0,31) // time_low 8hex
|
||||
+ generateBits(c,32,47) // time_mid 4hex
|
||||
+ generateBits(c,48,59)+"1" // time_hi+版本位
|
||||
+ generateBits(rand(4095),0,7) + generateBits(rand(4095),0,7)
|
||||
+ generateBits(rand(8191),0,7)+... 48位随机node;
|
||||
}
|
||||
```
|
||||
- 浏览器实测 epoch(GMT+8): `-12216643543000`;Python 复刻 12hex 时间戳段与浏览器**逐位一致**
|
||||
- **`CBCC` 前缀是时间戳自然结果**(1582-epoch 当前值的高位),非固定魔数;随生成时刻缓慢递增
|
||||
- `_yasids`(rootsid)同源同刻生成(浏览器实测 yamid=`CBCC653E4B...` / rootsid=`CBCC647A8A...` 共享种子时钟)
|
||||
|
||||
### ✅ game_did = vplayerUI.js 35 位随机(已复刻)
|
||||
```js
|
||||
// a.msstatic.com/huya/h5player/room/2608311423/vplayerUI.js
|
||||
B = (t=35) => { const e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
|
||||
for(i="";i.length<t;) i += e.charAt(parseInt(Math.random()*(e.length-1))); return i }
|
||||
```
|
||||
- **长度 35**(旧随机 30 位是错的);字符集 64 去掉末尾 `_`(63 选 1)
|
||||
- cookie 名 `game_did`,无 cookie 时生成并写入
|
||||
|
||||
### ⚠️ _qimei_uuid42 结构已定,算法待深挖
|
||||
- cookie 值:首字节 `1a` 固定 + 40hex(localStorage 是 44hex,cookie 为截断子串)
|
||||
- 由 qimeisdk-web 0.6.3 内部 VM 生成(`_qimei_ssid`/`_qimei_last_get_id_time_<16hex>` 同源)
|
||||
- 当前实现对齐结构(1a 前缀 + 42hex 随机化),精确算法待继续
|
||||
|
||||
### ⚠️ _qimei_fingerprint = SpookyHashV2(canvas指纹,31),待 canvas 复现
|
||||
- SDK 0.6.3 内置 x64hash128 与 canvas 指纹逻辑(文本+三圆+环形)
|
||||
- 设备稳定(同 profile 跨会话不变);当前实现随机 32hex 格式对齐
|
||||
- 复现需在真实环境执行 canvas(headless 下 canvas 指纹固定,可抽取一次固化为常量)
|
||||
|
||||
### 已修正生成器(core/huya/web_cookie_fields.py, commit 待定)
|
||||
- `__yamid_new` → `_yamid_new_generate32()`(UUID-v1 时间戳复刻)
|
||||
- `game_did` → `_game_did_generate()`(35 位 63 字符集)
|
||||
- `_yasids` → 与 `__yamid_new` 同源同刻生成
|
||||
- `_qimei_uuid42` → `1a` 前缀 + 42hex
|
||||
- `guid`(无会话值回退)→ `0a` + 10hex + `966a` + 16hex 结构
|
||||
|
||||
Reference in New Issue
Block a user