mouchacha请求头加密逆向分析
PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。
请求分析
本次目标站点
aHR0cHM6Ly93d3cucWNjLmNvbS9maXJtLzU3NmMyMWUzNDY4YTZiMTc4YmJmMjkxZTQ4MjBlODk2Lmh0bWw=
形如上图这种,该网站很多链接的请求头中都有类似的加密,key:value 都不固定。
JS 分析
既然是在请求头中的加密,那么较大概率是在 js 中生成的。全局搜索大法,搜索关键词 headers,经测试,main.be3416fa.js 文件就是我们要寻找的。这个文件超过20万行,不能莽,打上断点慢慢来。
成功断上,主要代码如下
1 | var n = (0, i.default)(t) , r = (0, s.default)(t, e.data); |
将这两句转成容易看懂的,可以看到 headers 的 key 是 n,value 是 r。
1 | var n = i.default(t), r = s.default(t, e.data); |
分析 n
在合适的位置打上断点
进入下一步,嗯。。。怎么又有 i.default 和 s.default,先不管扣下来继续往下走。
进入到 s.default,这里的 i.default.n 与 i.default.codes 都是固定的写死即可。
继续下一步
继续下一步跳转到了另一个文件,在这里看到了 HMAC
继续往下走了不知多少步,到了这里,看到了 SHA512,至此我们已经晓得这个网址用了什么算法了。接下来我们不扣算法代码,因为全扣下来太多了,在 node 里很容易实现,这里就不贴了,直接百度一下即可。
到这里 n 就分析完了。
分析 r
合适的位置打上断点,跟进去
嗯。。。又看到了 i.default 和 s.default,盲猜这里的 i.default、 s.default 方法和 n 里面的是一样的。
继续下一步,进入到 s.default 里面,果然和 n 里面 s.default 是一样的
跳出 s.default,进入到 i.default。果然 i.default 也是和 n 里面的 i.default 一样。
既然这样,就不用往下扣了呗!整理整理,一共五十来行代码,运行看看和浏览器的是不是一致的。没毛病,一毛一样
写在最后
本次分析没什么特别注意的,主要是 i.default 和 s.default 很多地方都有它们,一不留神就被绕懵了,分不清哪个是哪里的了,我们只需捋清楚逻辑,一步步来就能成功。