逆向目标
目标:某壁纸响应数据加密逆向
网站:aHR0cHM6Ly9iei56enptaC5jbi9zZWFyY2g=
逆向参数:OB 混淆、result:“ak+9VCsq4dEdB+UdVfGo8kh5JD……”
今天给大家带来的是爬取小姐姐壁纸,其实我是不想的,因为我不喜欢看这种的,咳咳!
抓包分析
老套路,F12抓包,发现返回数据是加密的,这时我们该怎么做呢
今天我们采用HOOK的方式,来进行解决。如果有小伙伴对hook不熟悉或不了解的,
可以参考K哥的这篇文章:https://blog.csdn.net/kdl_csdn/article/details/120548182
使用以下hook脚本注入到控制台。
var my_parse = JSON.parse;
JSON.parse = function (params) {
debugger;
console.log("json_parse params:",params);
return my_parse(params);
};
然后我们点击下一页进行触发脚本操作。
点击倒三角执行脚本,就会拦截到响应的加密数据
这时我们继续执行脚本,就会得到解密数据。这时候我们就可以跟栈进行调试了。看是怎么解密的,然后模拟解密逻辑即可。
如下图就是解密位置。我们跟进去
点击进入
下断点,后面就是扣代码,实现解密逻辑。根据分析这个解密是有三个函数嵌套而成。所以我们只要一步步扣取每个函数即可。我就不加赘述了。
在这过程中,要注意 window[‘atob’]这个方法,这是base64解码,在node.js pycharm中直接用atob即可。
最后就成功解密了
发现解密中的i与我们在元素页面找到的图片完整地址相比少了20.因此再用python请求时,我们只需拼接上去即可。
最终结果
最后使用python也是成功实现下载。缺点就是图片是压缩的。如果想高清下载。还是得去网站下载。这里只是分享技术。
python代码只展示关键部分,已做脱敏处理。
"""
@FileName:某壁纸.py
@IDE :PyCharm
@Author :落花为谁
@Date :2023/6/6 19:43
"""
import json
import requests
import execjs
from loguru import logger
url = "脱敏处理"
headers = {
"authority": "脱敏处理",
"content-type": "application/json;charset=UTF-8",
"origin": "脱敏处理",
"pragma": "no-cache",
"referer": "脱敏处理",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
for d in range(1, 5):
data = {
"category": "2",
"categoryId": "0",
"color": "0",
"current": str(d),
"ratio": "0",
"resolution": "1",
"size": "24",
"sort": "1"
}
res = requests.post(url, headers=headers, json=data)
result = res.json().get('result')
datas = execjs.compile(open('1.js', encoding='utf-8').read()).call('decrypt', result)
data = json.loads(datas)
# # https://脱敏处理/bz/v3/getUrl/b9ffdd6c84544695bd4b1e4182a06dde20
for u in data['list']:
img_url = '脱敏处理' + u['i']+ '2' + str(0)
res = requests.get(url=img_url, headers=headers)
with open(f'D:\\pics\\脱敏处理/{
u["i"]}.webp', 'wb') as f:
f.write(res.content)
logger.success(f"download success {
u['i']}.webp")
最终效果