关注微信公众号:爬虫K哥,继续分享爬虫进阶、JS/Android逆向工程等技术干货!声明本文所有内容仅供学习交流。抓拍内容、敏感网址、数据接口均已脱敏处理,严禁用于商业或非法用途。否则,由此产生的一切后果与作者无关。侵权请联系我立即删除!反向目标目标:网路者反爬虫练习平台第三题:AAEncode加密链接:http://spider.wangluozhe.com/...题型:本题还是需要收集100页所有数字,计算所有数据加法,需要提取源码进行计算,主要使用AAEncode对AAEncode进行加密简介AAEncode和JJEncode都是同一作者:来自日本的YosukeHASEGAWA,AAEncode可以将任意JavaScript代码编码成日文emoji,在线体验地址:https://utf-8.jp/public/aaenc...。一段普通的JS代码:alert("Hello,JavaScript")AAEncode混淆代码:?ω??=/``)?~┻━┻//*′?`*/['_'];o=(???)=_=3;c=(?Θ?)=(???)-(???);(?Д?)=(?Θ?)=(o^_^o)/(o^_^o);(?Д?)={?Θ?:'_',?ω??:((?ω??==3)+'_')[?Θ?],????:(?ω??+'_')[o^_^o-(?Θ?)],?Д??:((???==3)+'_')[???]};(?Д?)[?Θ?]=((?ω??==3)+'_')[c^_^o];(?Д?)['c']=((?Д?)+'_')[(???)+(???)-(?Θ?)];(?Д?)['o']=((?Д?)+'_')[?Θ?];(?o?)=(?Д?)['c']+(?Д?)['o']+(?ω??+'_')[?Θ?]+((?ω??==3)+'_')[???]+((?Д?)+'_')[(???)+(???)]+((???==3)+'_')[?Θ?]+((???==3)+'_')[(???)-(?Θ?)]+(?Д?)['c']+((?Д?)+'_')[(???)+(???)]+(?Д?)['o']+((???==3)+'_')[?Θ?];(?Д?)['_']=(o^_^o)[?o?][?o?];(?ε?)=((???==3)+'_')[?Θ?]+(?Д?).?Д??+((?Д?)+'_')[(???)+(???)]+((???==3)+'_')[o^_^o-?Θ?]+((???==3)+'_')[?Θ?]+(?ω??+'_')[?Θ?];(???)+=(?Θ?);(?Д?)[?ε?]='\\';(?Д?).?Θ??=(?Д?+???)[o^_^o-(?Θ?)];(o???o)=(?ω??+'_')[c^_^o];(?Д?)[?o?]='\"';(?Д?)['_']((?Д?)['_'](?ε?+(?Д?)[?o?]+(?Д?)[?ε?]+(?Θ?)+(???)+(?Θ?)+(?Д?)[?ε?]+(?Θ?)+((???)+(?Θ?))+(???)+(?Д?)[?ε?]+(?Θ?)+(???)+((???)+(?Θ?))+(?Д?)[?ε?]+(?Θ?)+((o^_^o)+(o^_^o))+((o^_^o)-(?Θ?))+(?Д?)[?ε?]+(?Θ?)+((o^_^o)+(o^_^o))+(???)+(?Д?)[?ε?]+((???)+(?Θ?))+(c^_^o)+(?Д?)[?ε?]+(???)+((o^_^o)-(?Θ?))+(?Д?)[?ε?]+(?Θ?)+(?Θ?)+(c^_^o)+(?Д?)[?ε?]+(?Θ?)+(???)+((???)+(?Θ?))+(?Д?)[?ε?]+(?Θ?)+((???)+(?Θ?))+(???)+(?Д?)[?ε?]+(?Θ?)+((?????)+(?Θ?))+(???)+(?Д?)[?ε?]+(?Θ?)+((???)+(?Θ?))+((???)+(o^_^o))+(?Д?)[?ε?]+((???)+(?Θ?))+(???)+(?Д?)[?ε?]+(???)+(c^_^o)+(?Д?)[?ε?]+(?Θ?)+(?Θ?)+((o^_^o)-(xΘ))+(xΘ)[x]+(xΘ)+(x)+(xΘ)+(xД)[εゥ]+(。Θ。)+((o^_^o)+(o^_^o))+((o^_^o)+(o^_^o))+(oДДj)[xiε]+(xiΘ)+(xixi)+(xiΘ)+(xiД)[xixi]+(xiΘ)+((o^_^o)-(xΘ))+(o^_^o)+(xД)[x]+(xΘ)+(x)+(o^_^o)+(xД)[xiε]+(xiΘ)+((o^_^o)+(o^_^o))+((o^_^o)-(xiΘ))+(jД)[xi]+(xiΘ)+((xi)+(xiΘ))+(xiΘ)+(xiД)[xi]+(xiΘo)+((o^_^o)+(o^_^o))+(c^_^o)+(o)[oX]+(oΘ)+((o^_^o)+(o^_^o))+(o)+(oД)[oε]+(o)+((o^_^o)-(oΘo))+(xil)[x]+((x)+(xΘ))+(xΘ)+(xl)[xo])(xΘ))('_');AAEncode的反混淆方法和JJEncode的类似,很简单,下面介绍几种常用的方法:使用在线工具直接解密,如:http://www.hiencode.com/aaencode。;把代码最后一个符号('_')去掉后,放到浏览器中直接执行就可以看到源码;在线调试,在AAEncode代码的第一行打断点,然后一步步执行;反向参数反向目标主要是翻页界面的_signature参数。调用的加密方式还是window.get_sign(),和前两题一样。本文不再赘述,不清楚的可以看K哥之前的文章。继续跟进,会发现是一个AAEncode的表情混淆:我们复制这段代码,去掉末尾的('_'),直接在浏览器控制台运行(建议打开一个可以单独查看源码,点击源码进入虚拟机(VM),整个源码展现在我们面前:除了直接去掉('_')运行,我们还可以同样对代码进行混淆在第一行打断点,然后单步跟进,最后你会得到源码,如下图:看代码,有一个Hookwindow.sign操作,和一个delete操作,后面是一个DES加密函数,下面的try-catch语句设置了一些参数比如key,关键点是try-catch语句,打个断点看看到底是哪条语句执行了:其他逻辑我们不用管,直接copytry语句即可,不要放变得不正常。DES可以直接调用crypto-js,本地改写后,使用Python代码携带_signature逐页计算数据,最终提交成功:完整代码github关注K的爬虫,继续分享爬虫-相关代码!欢迎加星!https://github.com/kgepachong/下面只是演示了部分关键代码,不能直接运行!完整代码仓库地址:https://github.com/kgepachong...JavaScript加密代码/*=====================================#@时间:2021-12-13#@作者:微信:K哥爬虫#@FileName:challenge_3.js#@Software:PyCharm#======================================*/varCryptoJS=require('crypto-js')functionencryptByDES(message,key){varkeyHex=CryptoJS.enc.Utf8.parse(key);varencrypted=CryptoJS.DES.encrypt(message,keyHex,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.Pkcs7});returnencrypted.ciphertext.toString();}functiongetSign(){varmessage="http://spider.wangluozhe.com/challenge/3";消息=消息+'|'+Date.parse(newDate()).toString();varkey=Date.parse(newDate()).toString();returnencryptByDES(message,key);}//测试输出//console.log(getSign())Python计算密钥代码#=====================================#--*--coding:utf-8--*--#@Time:2021-12-13#@Author:WeChat公众号:K哥笨虫#@FileName:challenge_3.py#@Software:PyCharm#==================================importexecjsimportrequestschallenge_api="http://spider.wangluozhe.com/challenge/api/3"headers={"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8","Cookie":"将cookie值得为你自己的!","Host":"spider.wangluozhe.com","Origin":"http://spider.wangluozhe.com","Referer":"http://spider.wangluozhe.com/challenge/2","User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.45Safari/537.36","X-Requested-With":"XMLHttpRequest"}defget_signature():withopen('challenge_3.js','r',encoding='utf-8')asf:ppdai_js=execjs.compile(f.read())signature=ppdai_js.call("getSign")print("signature:",signature)returnsignaturedefmain():result=0forpageinrange(1,101):数据={"page":page,"计数":10,"_signature":get_signature()}response=requests.post(url=challenge_api,headers=headers,data=data).json()fordinresponse["data"]:result+=d["value"]print("结果为:",result)if__name__=='__main__':main()
