js逆向极验滑块验证码

如果反爬界要开庆功宴,极验滑块验证码一定得坐上主席。很多教程都在说模拟浏览器、鼠标轨迹来实现绕过。但一遇上大规模数据,这露水大的效率,随便一个bug就给吹散了。我下定决心利用这段时间js逆向逆向他的加密,也没把握一定会实现,step by step,骑驴看唱本—走着瞧罗。最后,项目纯属理论实践,谁要敢商用,劳资今黑放了你的血。

Java 滑动验证码 lt js滑块验证码_chrome

js代码再寻找

无法实施精准打击已成事实,只能手工爆破一一排除。

F12打开chrome控制台,切换到source面板。主浏览器模拟登录的同时,在source文件中寻找可疑文件。

这里我选择鹏城某银行登录,fine,找到了。



Java 滑动验证码 lt js滑块验证码_js 反斜杠替换_02

一旦改变网站,source文件结构也更着改变,那如何判可疑呢?两个思路:

•混淆加密的js已经和你混过脸熟了,代码文件名千变万化,但加密逻辑长的那叫一个像啊。•非要摸到点路径规律,xxx.com/static/js/xx.js•别问,多动手。不信,往下瞧。



Java 滑动验证码 lt js滑块验证码_ico_03

反混淆js代码

前端写js特有意思,打个比方,他干的活很像咋们高中考试打小抄

考试分数要高,考前小抄得好。

什么才叫好呢?考试时自己瞧的哈哈笑,被抓时老师丈二和尚摸不着头脑,这是好。

我们瞧瞧极验同学打的小抄,看他好不好。



Java 滑动验证码 lt js滑块验证码_ico_04

这哪是好,这是妙啊。一眼下去,至少两个妙:

•黄色部分,代码Unicode编码过, 这可能是ctrl+F搞不定的元凶。•橙色部分,大量类似rkjC(5)、USiw(149)、TiQg(94)代码,老师视力再好也看不清小抄到底写了个啥。

打开Source控制面板,右键单击js代码,保存本地

下面一步一步解决混淆问题。



Java 滑动验证码 lt js滑块验证码_js代码_05

unicode解码

全选代码,复制到unicode在线解码网页[1],复制明文,另存本地,完成unicode解码。

代码已经部分开始人模人样了。小惊喜,challenge也露出了马甲。



Java 滑动验证码 lt js滑块验证码_ico_06

替换加密字符串

想要知道小抄怎么打,最方便快捷的方法就是看极验同学怎么抄。

回到chrome 控制台,在js代码中打上断点调试,一探究竟。

一个小窍门,我们本地折腾js代码,调试却要在chrome控制台中完成。我们在本地如果发现了关键代码,需要记住他的行号,回到控制台,运用ctrl+g快捷键跳转到该行即可。



Java 滑动验证码 lt js滑块验证码_Java 滑动验证码 lt_07

我在6357行打上断点,调试收获满满

•UtTs(568)解密后为字符串"challenge",说明UtTs可能是一个明文数组。•去console调试台,顺藤摸瓜,追溯UtFs到TFBa,进一步确认猜想。

for (i=0;i<10;i++){console.log("UtTs("+i+")->",TFBa(i))}out:UtTs(0)-> stringUtTs(1)-> documentUtTs(2)-> setTimeoutUtTs(3)-> canvasUtTs(4)-> getContextUtTs(5)-> wPlNUtTs(6)-> rgobUtTs(7)-> getTimeUtTs(8)-> prototypeUtTs(9)-> status:

下一步任务明确,抠出生成明文数组的js代码,然后将密文一一替换掉。