一次破解js加密的过程

很早之前就知道前端基本没有安全性可言,代码都是跑在客户机上,但是居然今天才去想到破解js加密这种东西…下面就记录一次完整的破解js加密的过程
破解的是有道翻译.
首先去有道翻译的页面,随便输入一个词看接口:
分析可知,Form Data
里的salt
,sign
,ts
和bv
比较像是处理后的结果,而其余字段则像是固定的.搜索salt,得到一个js文件,打开js文件:
在js文件中查找salt
可以找到这样一个函数,应该就是前端加密的函数.为了方便将函数直接复制到本地查看:1
2
3
4
5
6
7
8
9
10
11var r = function (e) {
var t = n.md5(navigator.appVersion),
r = "" + new Date().getTime(),
i = r + parseInt(10 * Math.random(), 10);
return {
ts: r,
bv: t,
salt: i,
sign: n.md5("fanyideskweb" + e + i + "Nw(nmmbP%A-r6U3EUn]Aj"),
};
};
这里面就比较清楚了,首先ts
是与时间有关的,应该是时间戳,bv
是一个哈希值,salt
是时间戳再加上一个随机值,sign
是一个组合的哈希值,接下来在控制台查看这些的格式及意义,也可以调试查看:
可以看到navigator.appVersion
就是User-Agent
,e
就是用户输入需要翻译的词.构造方式已经弄清楚,接下来就是用python翻译一下这个函数了.
1 | import requests |
这个写起来就很简单了,除了salt
, sign
, ts
和bv
需要自己构造外,其余的直接照抄就行.
然后找了一下自己的网站:
代码都是公开的了…
- 本文标题:一次破解js加密的过程
- 本文作者:Kale
- 创建时间:2020-04-20 16:33:57
- 本文链接:https://kalew515.com/2020/04/20/一次破解js加密的过程/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!