一、逆向目标
逆向网站:
aHR0cHM6Ly93d3cuaGFuZ2hhbmdjaGEuY29t
逆向接口:
aHR0cHM6Ly9hcGkuaGFuZ2hhbmdjaGEuY29tL2hoYy9hbm9ueW1vdXMvaW52ZXN0L2dldFRvcFRlbk5ld3M/ZmlsdGVyPSU3QiUyMnNraXAlMjIlM0EwJTJDJTIybGltaXQlMjIlM0EyMCU3RA==
二、前期准备
pip install requests
pip install pycryptodome
三、逆向分析
全局搜索是进行逆向分析最简单直接的方法,那么使用什么关键词进行全局搜索呢?
如果使用响应数据字段data进行全局搜索肯定不太行,既然我们想要的是最后的解密数据,可以先使用关键词decrypt进行全局搜索,并在定义位置和return位置打上断点执行:
我们发现Decrypt函数就是解密函数,该函数有两个形参word和keyStr,word就是加密过的响应数据,而keyStr是写死的字符串:
3sd&d24h@$udD2s
并且函数中可直观地看到,解密使用的是AES,模式是ECB,填充方式为Pkcs7
而这种解密方式可以直接通过pycryptodome库完成解密过程,不用再模拟执行JS了,至此逆向分析解密算法完成
四、Python实现解密算法
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
def aes_decrypt(padding=None, encrypt_str=None, key_str=None, mode=None):
key_str = key_str.encode('utf-8')
aes = AES.new(key_str, mode)
encrypt_str = base64.b64decode(encrypt_str)
decrypt_str = aes.decrypt(encrypt_str).decode('utf-8')
return decrypt_str
import requests
import urllib3
from urllib.parse import quote
urllib3.disable_warnings()
key = '3sd&d24h@$udD2s*'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
condition = '{"skip":0,"limit":20}'
api = f'https://*/hhc/anonymous/invest/getTopTenNews?filter={quote(condition)}'
res = requests.get(api, headers=headers, verify=False).json()
data = res.get('data')
data = aes_decrypt(padding='pkcs7', encrypt_str=data, key_str=key, mode=AES.MODE_ECB)
print(data)
成功解密,返回数据类型是str类型,在数据的最后我们发现有一个类似省略号的东西,字符长度为11,我们需要把这个东西去掉,才能较方面的转换为JSON对象并解析,有三种方式可解决:
#第一种解决方式
length = ord(decrypt_str[-1])
return decrypt_str[:-length]
#第二种解决方式
return decrypt_str[:-11]
#第三种解决方式
return decrypt_str.replace(' ', '')
import json
json_object = json.loads(data)
for d in json_object['data']['data']:
print(d, 'n')
数据变得可观了许多;
如果您对爬虫逆向感兴趣、想要深入了解或者有疑问,欢迎与我进行学习与交流。
五、作者Info
原文地址:https://blog.csdn.net/qq_44000141/article/details/134620090
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_23644.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。