关注微信公众号:K爬虫大哥,继续分享高级爬虫、JS/Android逆向等技术干货!声明本文所有内容仅供学习交流。抓拍内容、敏感网址、数据接口均已脱敏处理,严禁用于商业或非法用途。否则,由此产生的一切后果与作者无关。侵权请联系我立即删除!逆向目标目标:网路者反爬虫实践平台第二题:JJEncode加密链接:http://spider.wangluozhe.com/...简介:本题与第一题类似,要求收集全部100个页码,并计算所有数据的总和。第二题使用的算法是SHA1的修改版,还有JJEncode加密JJEncode简介JJEncode最初是日本作者YosukeHASEGAWA在2009年开发的一个网页程序,它可以将任何JavaScript编码转换为混淆形式仅使用18个符号[]()!+,\"$.:;_{}~=,在线体验地址:https://utf-8.jp/public/jjenc...,如果想深入它的原理,可以在K哥里面爬取公众号回复【JJEncode】获取其详细原理介绍PDF。作者有提示:JJEncode很容易解码,不是实用的混淆,只是一个编码器,JJEncode太有特点了,很容易被检测到,而且还依赖浏览器,代码不能在a上运行某些浏览器。它的缺点是堆栈很严重。如果JS很大,加密的时候可能会内存溢出,所以只适合核心函数加密。事实上,JJEncode仍然很少在商业上使用,但了解它也无妨。一段普通的JS代码:JJEncode混淆后的alert("Hello,JavaScript")(自定义变量名为$):$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.__)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$。__+"\\\"\\"+$.$__+$.___+")"+"\"")())();JJEncode反混淆方法很简单,下面介绍几种常用的方法:使用在线工具直接解密,如:http://www.hiencode.com/jjenc...JJEncode的代码通常是一个自执行的方法(IIFE)。把代码中的最后一个()去掉后,放在浏览器中直接执行就可以看到在线调试源码,在JJEncode代码的第一行打断点,然后一步步执行,和终于在虚拟机(VM)中看到了源码的反向参数。反向目标主要是翻页接口_signature参数,调用的加密方式依然是window.get_sign(),与第一题相同,本文不再赘述。不知道的可以看看K哥上一期的文章。跟进2.js后,会发现是一个JJEncode混淆:我们把混淆的final()去掉,放在浏览器控制台运行(建议单独开无痕窗口,有时可能有影响),可以看到源码,点击源码来到虚拟机(VM),整个源码展现在我们面前:除了直接去掉()运行,我们还可以同样在混淆代码的第一行打断点,然后单步跟进,最后也会得到源码,如下图:看源码很简单,是一个神奇修改过的SHA1匿名函数,直接把它的代码复制重写,用Python代码携带_signature计算每一页数据,最后提交成功:完整代码GitHub关注K的爬虫,继续分享爬虫-相关代码!欢迎加星!https://github.com/kgepachong/下面只是演示了部分关键代码,不能直接运行!完整代码仓库地址:https://github.com/kgepachong...JavaScript加密代码/*=====================================#@时间:2021-12-10#@作者:微信:K哥笨虫#@FileName:challenge_2.js#@Software:PyCharm#==================================*/varhexcase=0;varchrsz=8;functionhex_sha1(s){returnbinb2hex(core_sha1(AlignSHA1(s)));}functionsha1_vm_test(){returnhex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}functioncore_sha1(blockArray){varx=blockArray;varw=数组(80);变量a=1732584173;变量b=-271733877;变量c=-1752584194;变量d=271733878;vare=-1009589776;for(vari=0;i
