仅供参考学习
目录
前言
本例子仅供参考学习,主要学习的是有道翻译的MD5加密的逆向逻辑。
1.抓包
随便输入两个单词进行抓包,发现加密发生在webtranslate这个包中观察两个包的请求头,发现有三个地方是变化的,分别是i,sign,mysticTime
i:是单词,这个不用逆向
sign:签名,这个需要逆向
mysticTime:时间戳,需要逆向
2.定位加密入口
全局搜索webtranslate
在此位置设置两个断点
随便输入一个单词,让断点停在这里
分析 y = (e,t)=>Object(a["d"])("https://dict.youdao.com/webtranslate", Object(n["a"])(Object(n["a"])({}, e), O(t))
分析各个参数:
{}:undefined
n["a"]({}, e)
Object(n["a"])({}, e)
n["a"]({}, e)f与Object(n["a"])({}, e)是一样的
O(t)
n["a"](({}, e), O(t))
Object(n["a"])(Object(n["a"])({}, e), O(t))其实就是将n["a"])({}, e)与O(t),而需要逆向的的sing,mysticTime都在O(t)中
进入O(t)中,设置断点,往下走几步我们发现
e是固定的
t是时间戳,mysticTime的值为t
sign是由h(t, e)产生的
所以我们进入h中设置断点
发现g(`client=${d}&mysticTime=${e}&product=${u}&key=${t}`),`client=${d}&mysticTime=${e}&product=${u}&key=${t}`中的${}是填充的数据,也是向加密函数中传递的参数
d:"fanyideskweb"
e:"fsdsogkndfokasodnaso"
u:"webfanyi"
t:时间戳
所以加密是在g函数中,我们进入到g函数中,设置断点
此时我们看到了MD5字样,我们测试一下是不是真的MD5加密,
我们随便找一个MD5加密的网站,生成一下123456的加密结果,
结果为:
g函数的加密结果为:
发现结果是一样的,说明g函数就是真正的MD5加密函数
3.逆向
接下来我们就可以用python进行MD5加密的逆向了
具体代码为:
import time
from hashlib import md5
import requests
# 如果跟需要跟JS里面的时间戳一样,需要将python计算的时间戳放大1000倍
t = 'fsdsogkndfokasodnaso'
u = 'webfanyi'
e = str(int(time.time() * 1000)) # 时间戳
d = 'fanyideskweb'
s = f'client={d}&mysticTime={e}&product={u}&key={t}'
obj = md5()
obj.update(s.encode())
sign = obj.hexdigest()
data = {
'i': 'god',
'from': 'auto',
'to': '',
'dictResult': 'true',
'keyid': 'webfanyi',
'sign': sign,
'client': 'fanyideskweb',
'product': 'webfanyi',
'appVersion': '1.0.0',
'vendor': 'web',
'pointParam': 'client,mysticTime,product',
'mysticTime': e,
'keyfrom': 'fanyi.web'
}
headers = {
'Referer': 'https://fanyi.youdao.com/',
'Cookie':'OUTFOX_SEARCH_USER_ID=-596883430@10.110.96.153; OUTFOX_SEARCH_USER_ID_NCOO=120063344.80548316; _ga=GA1.2.840138477.1681322358',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
url = 'https://dict.youdao.com/webtranslate'
resp = requests.post(url, data=data, headers=headers)
print(resp.text)
结果出现这样长度的,则证明逆向成功
总结
逆向需要多实践多思考