电话咨询
19922193247
注:本博客为学习需要,不涉及商业用途,如有侵权,请立马联系本菜鸟
本小菜鸟最近在js逆向的道路上的探索又前进了一步,对各种加密解密产生了极大的兴趣,这不。。最近随便找了一个网站来锻炼锻炼自己…
没错了 我就是找的最为常见的某盾验证码来实验的,经过我的分析,在请求某盾验证码的时候需要用到的两个加密参数为cb和fp两个参数,其中cb参数比较简单,而fp则是带有浏览器特征检查的参数,根据由简到难的顺序,我们先解决掉cb参数
1.cb参数
断点调试发现这个版本的某盾js是经过混淆过后的,不能直观的进行阅读,但是这也不能难倒我们,我们继续跟进
进入这个函数的return,继续跟进:
进入这个函数过后发现返回的是一个32位的随机字符串random_str,并将该字符串转为的 Unicode 编码的一个列表:random_un_list
然后有个固定的str=“14731382d816714fC59E47De5dA0C871D3F”
将random_un_list列表放入下面这个函数中进行与或运算:一直迭代至列表最后一个元素
上面这函数运算完毕后再进入到下一个函数中进行与或运算:
提取到后缀字符串后和原始的random_str进行拼接形成新的字符串
下一步:随机产生一个list,并且在random_list后面追加上一个列表[0, 0, 0, 40]
此时的random_list长度变为44,然后将random_list分为11个列表,用这十一个列表进行 :^56 -40 ^103等一系列运算,最后得到一个长度为48的列表
最后一步就是:将这长度为48的列表分为长度为3的列表,在目标字符列表中进行提取字符拼接,最终形成cb的值
以上就是cb参数的大体运算,下面就是一部分代码及结果截图:
下面是运行的得到的cb值:
温馨提示:我们将在您提交信息后的30分钟内与您取得联系,请您保持电话通畅,谢谢!