有道翻译逆向,有道翻译js逆向,MD5加密,md5加密,python还原js中MD5加密,逆向思路

仅供参考学习


目录

前言

1.抓包

2.定位加密入口

3.逆向

总结


前言

本例子仅供参考学习,主要学习的是有道翻译的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)

结果出现这样长度的,则证明逆向成功 


总结

逆向需要多实践多思考

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dear.爬虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值