0%

JS解密入门——有道翻译

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 难度系数成几何倍增长,所以...

加油吧,欧里给~ 如有疑问,那么评论区见