提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
今天在网络者反反爬虫了练习平台的第二题第一次遇到了JJEncode加密,在此记录一下破解过程。
提示:以下是本篇文章正文内容,下面案例可供参考
一、JJ混淆是什么?
jj混淆,特点是特别多的$混淆
二、分析步骤
1.找到加密函数位置
通过分析可知get_sign就是加密函数位置,进入函数发现混淆代码
2.分析混淆代码还原
JJ混淆的一般套路就是Function自执行函数,我们只需去掉混淆代码最后的()在控制台输出即可跳入虚拟机显示明文代码。
通过分析解混淆后的代码可知主要的加密函数为hex_sha1,传入的参数是一串时间戳。复制函数到本地运行成功解密。
3.完整代码
# coding:utf-8
import execjs
import requests
from lxpy import copy_headers_dict
headers=copy_headers_dict('''
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Content-Length: 59
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: session=1067f511-2425-4466-b913-b408aa33a932.83jie0DdZhE380VBa7o4mRDRSCw
Host: spider.wangluozhe.com
Origin: http://spider.wangluozhe.com
Pragma: no-cache
Proxy-Connection: keep-alive
Referer: http://spider.wangluozhe.com/challenge/1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
''')
def get_signature():
with open('jj混淆.js','r',encoding='utf-8')as f:
js=f.read()
_signature=execjs.compile(js).call('cason')
return _signature
def main():
num=0
for i in range(1,101):
_signature=get_signature()
url='http://spider.wangluozhe.com/challenge/api/2'
data={
'page': i,
'count': 10,
'_signature': _signature
}
r=requests.post(url,data=data,headers=headers)
for j in eval(r.text).get('data'):
num += j.get('value')
print('答案:',num)
if __name__ == '__main__':
main()
总结
以上就是今天要讲的内容,本文仅仅简单介绍了JJ混淆的简单例子,想要熟练掌握还要多加练习。
最后,如果这篇文章对您有帮助,请给博主点点关注哦~