某乎请求头签名算法分析
本文由 简悦
SimpRead 转码, 原文地址 mp.weixin.qq.com
前言
-
小小白在这里给各位大佬拜个年了,祝各位大佬新年快乐,大吉大利,身体健康,技术更上一层楼
-
本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!
网站
aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1weXRob24=
加密定位
需要分析的接口以及加密参数
直接搜关键字
格式化后再搜索
重新刷新网站,可以看到断点断在下图这个地方,选中执行函数可以发现加密入口就是这里
加密分析
s = '101_3_2.0+'(版本号) +
'/api/v4/search_v3?t=general&q=python&correction=1&offset=0&limit=20&filter_fields=&lc_idx=0&show_all_topics=0&search_source=Normal+'(接口后缀) +
'"AIAf1GdgbRSPTtoYPsJrpvRp_MB-_8SxwGQ=|1643717522"'(dc0 cookie)
第一层加密
l()(s) = '7dd6414484df2c210ddbb996c55cf64c' -> md5_str
根据
perfect,完美对应上,由此可知,第一层加密就是原生的
第二层加密
a()(md5_str) = 'a0xqSQe8cLYfSHYyThxBHD90k0xxN9xqf_tqr6UqH9Op'
选中
然后就单步跟,跟到这里就先别跟了,这里正是
然后就在
"索引:", this.C, " 值:", JSON.stringify(this, function(key, value) {if (value == window) {return undefined} return value})
慢慢等待输出结束,掉头发的逆向之路就可以开始了
直接在输出的
这个
这里面有一个固定不变的字符串,就是这个玩意
fix_str = "RuPtXwxpThIZ0qyz_9fYLCOV8B1mMGKs7UnFHgN3iDaWAJE-Qrk2ecSo6bjd4vl5"
拿第一部分
fix_str[13] = ‘q’
3433258 » 18 = 13
这里的
再来搜索
可以很清晰的看得到,下面这几种运算都可以得到这个数字,那怎么判断是哪一种运算得到的,我的办法是:调试
1. 25386 + 3407872 = 3433258
2. 25386 ^ 3407872 = 3433258
3. 25386 | 3407872 = 3433258
重新打开一个浏览器打开链接,在
这里这一步我就直接说了,是第三种,
这部分所有的运算流程都在下面了,请各位大佬们自行慢慢对比
最后验证:
可以发现,算法还原下来只有短短的