百趣云
百趣云的博客
tk:指令虚拟机的另一个样本谷歌翻译 translate_a/t 接口的 tk 参数,和百度翻译 sign 用的是同一套设计思想——指令串驱动的位运算器。如果你已经搞懂了百度那套,谷歌这个十分钟就能拿下;反过来也一样。两家"撞设计"不是巧合,这套结构本来就是前端混淆的经典范式。TKK 种子页面里写着 TKK='444385.4274552210' 之类的值,定期更新。它是 tk 计算的初始状态,工程上启动时从 translate.google.com 页面提取,不写死。算法完整实现def xr(a, ops):
# 指令执行器:每3字符一条指令 [累加/异或][左移/右移][位数]
参数全家福:每个都不难,组合起来才是防护有道翻译 fanyi.youdao.com 的 translate_o 接口(注意带 _o,不带 _o 的旧接口不校验签名但时好时坏)需要一组参数:参数含义算法lts毫秒时间戳str(now_ms)salt盐lts + 1位随机数bv浏览器标识md5(User-Agent)sign核心签名md5(固定串 + 文本 + salt + 密钥)单个看都是 md5 一把梭,但它们的依赖链才是设计意图:bv 绑 ua,sign 绑文本和 salt,salt 绑时间——改任何一个输入,链条上所有参数都要重算。算法实现import hashlib, time, ran
两个参数,两种获取方式百度翻译 fanyi.baidu.com 的 v2transapi 接口需要 sign 和 token 两个参数,获取方式完全不同:token:页面里写死的,正则一把抠:token: '([0-9a-f]+)'sign:由待翻译文本实时计算,算法在页面 JS 里,种子是页面里的 gtk这个"gtk 种子 + 逐字符位运算"的算法结构,是前端签名里最经典的设计之一,值得完整拆一遍。gtk:算法的种子页面源码里有 window.gtk = '320305.131321201' 之类的定义,两个数字用点分隔。它是 sign 计算的初始状态,会不定期更新——所以工程上 gtk 要
sign 参数:看着像 md5,确实是 md5(的变种)QQ 音乐 web 端 u.y.qq.com 的 CGI 接口带一个 sign 参数,32 位 hex。和别家把签名算法藏在 VMP 里不同,QQ 音乐的签名就是魔改 md5 + 字符置换,混淆程度中等,是练"从 webpack chunk 里抠函数"的好目标。定位:搜对关键词事半功倍QQ 音乐前端是 webpack 打包,直接搜 sign 会被淹没。正确的搜索词是功能命名:"securitySign" ← 直接命中签名函数
"getSign" ← 部分版本命中后能看到签名函数
weapi:逆向圈的"祖传教学案例"网易云音乐网页版的 weapi 接口加密,可能是中文互联网被分析得最多的加密方案——因为它设计得实在太标准了:AES-CBC 加密业务数据(两遍),RSA 加密 AES 密钥。十年没变过,是练"JS 加密翻译 Python"的最佳教材。加密流程完整拆解POST 到 https://music.163.com/weapi/... 的数据只有两个参数:params:业务数据两次 AES-CBC 加密的 base64encSecKey:AES 密钥经 RSA 加密后的 hex完整实现:from Crypto.Cipher import AES
import jso