JS 解密入门——有道翻译
此篇文章省略了很多基础的,例如 json 格式数据的提取啊。试试手,练练感觉。似乎也没啥用。
一 了解加密与解密 :
什么是加密,什么是解密?
- 加密:数据加密的基本过程,将原为明文的文件或数据经过某种算法进行一次或多次处理。得到的结果常称之为密文的东东。
- 解密:加密的逆过程,找到加密相同的方式,对其逆向处理,得到原本文件或数据的过程
常用的加密方式:
加密算法分 对称加密 和 非对称加密 其中对称加密算法的加密与解密 密钥相同,非对称加密算法的加密密钥与解密 密钥不同,此外,还有一类 不需要密钥 的 散列算法。
本节所涉及的方式:MD5
MD5
用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5
不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5
都会输出长度为 128bits
的一个串 (通常用 16
进制 表示为 32
个字符)。 更多相关详情请点击此处>)
二 造!点击进入本节源码
这段内容图会比较多,文字叙述会比较少.
确定 URL:
Basic URL : http://fanyi.youdao.com/ 结论缘由,在不刷新全局页面的情况下,在输入框中输入,翻译动态刷新.可知此链接为 Ajax. 经过一系列测试发现,其实际需操作的 URL 为 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 在开发者工具中具体观察以下. 基本网站的分析就分析完毕了 注意此处为 POST 请求!!!
观察加密
仔细观察红色方框中,重点观察随着时间改变而改变的参数(图中红色箭头所指之处)
分析加密:
仔细经过上述步骤即可进入本次加密的源码详情页 搜索 sign 参数,得知本页面有 15 个 sign,筛选排查过后可得知以下位置为 sign 等参数,赋值加密过程 为什么会大概确定是此处呢? 理由一:var 声明赋值 理由二:md5() 为什么深信此处呢?
断点一打,debug 一下,啥都出来了.
根据其语法可知,Javascript
- e 为输入所翻译的内容
- ts 为七位整数的时间戳
- salt 为时间戳后加上一位,大于 0 小于 9 的数字
- bv 为 User-Agent 的值经过md5 加密的 密文
- sign 为(“fanyideskweb” + e + salt + “Nw(nmmbP%A-r6U3EUn]Aj”)经过 md5 加密的 密文
到这里就基本完成了,那接下来就开始码码吧.
码!!!
看到这里,转而看一下源码。对着上面的注释,仔细看看,相信你一定会有所收获的。
拓展:
可以将此源码打包,并建立用户界面
其实这篇完全就是用来找感觉的,真正的 JS 难度系数成几何倍增长,所以...
加油吧,欧里给~ 如有疑问,那么评论区见