记一次关于有道翻译的逆向(非常简单)

查看 190|回复 14
作者:12378   
因为之前想逆百度翻译的
但是后来因为难度有点劝退,所以想学习一下再去试一下
但是这几天都没有在学习逆向这方面的知识了感觉有点懈怠了
而且也没什么视频了 b站上的视频也不多 学习的路子就靠付费了哎
我们随便输入明文翻译
查看请求

看请求头就一个 cookie
请求体的话 i 是待翻译字符串
比较特殊的值好像就只有 sign 了
其他的话没什么特殊的地方了
再看响应体

是一串密文  我们先解决 sign 参数再看看这个怎么解密
直接点启动器断点,或者 xhr 断点进到代码里边
下断后重新随便输入一个字符串
然后跟栈
因为代码没有混淆,所以看得比较清楚,就会相对来说简单很多

跟一下就找得差不多了
发现 sign 是用 h 方法来生成的
上边的 h 方法又调用了 v 方法
然后仔细一看是 md5 加密
主要是看传的 t e 分别是什么

发现这里的 e 好像是一个固定值,多试几次,如果不是固定的话那再跟出去看看是什么定西
试完之后发现这个 e 就是一个固定的字符串,而 t 是时间戳
那这样的话就没什么了,该定义的都定义了,就一个时间戳是变量
那我们就可以自己写一个 md5 加密函数
用现在的这些值看一下是否能出相同的结果就好了
试了一下 sign 值就出来了
sign 值出来之后我们可以尝试的去发一下请求了
说一下这个请求体是 query 形式
如果定义一个对象的话,需要把对象转换好才能去发情求
发完请求之后发现跟得到的结果相同
是同一串密文
请求发送成功之后剩下的就只剩下解密响应体的密文了
这种的话肯定是请求回来之后拿到了密文然后解密出来再渲染到前端
刚刚构建请求之后,那我们网上跟栈就能看到他传的参数以及发请求之后的回调函数
主要看回调函数(请求成功或者失败执行的函数)的里面做了那些事情,看一下是否是来解密

我们往上跟一下好像有个比较可疑的地方,可以打个断点看一下
因为调用上一个箭头函数传了俩个参数,并且返回的是一个 promise
这里有个 .then() 好像是发完请求之后处理密文的地方
可以在 .then() 方法的最后打一个断点
因为我们思路明确,现在还是在构建请求,直接下一步然后应该还能再进来
再进来的话应该就是处理响应体密文的时候了

还真进来了,我们看到这个 o 的值就是我们的响应体的密文值,那么解密有很大概率是在这里进行了
我们看一下里边有没有值是我们想要的
const n = an[“a“].decodeData(o, sn[“a“].state.text.decodeKey, sn[“a“].state.text.decodeIv)[\b]
这段应该就是解密的东西了,
我们点进去看一下 decodeDate() 这个方法
耦合性好像不是很强,直接把他给扒拉下来运行一下
报错什么补什么就好了
报错 g() 方法未定义
打个断点,重新输入翻译字符串,进来之后看一下 g 方法
这些都可以问 gpt 然后让他给代码
nodejs 里用 crypto 就可以了
跟着他一步步解密,问问 gpt 然后补齐代码,运行起来就可以了

这里的 a c 是经过加密后的 原来的 o n 是固定的值看他的命名就有点像了
aes 解密 key iv
如果不确定的话可以多试几次看一下值有没有发生改变

请求发送成功
解密也解密出来了
现在就差cookie了
因为没有经过混淆,所以我们直接搜一下cookie

稍微搜索一下就出来了...
到这里就差不多了
没什么难度的一个东西
都挺简单的
难的也做不过来
现在学习已经停滞好久了
有没有大哥推荐一下学逆向的资源
球球了T.T

看一下, 断点

HKP888   
都是大神
北城别、洛城散   
来点有难度的,去搞shape,瑞数vmp,Akamai
后觉   
看不懂,但大受震撼
奈落   
专业
Joshua   
333
爱吃鲱鱼的猫丶   
肉肉肉
院长   
看不懂-,- 掠过
一禅   
吃肉..
Qtalks   
您需要登录后才可以回帖 登录 | 立即注册

返回顶部