mouchacha请求头加密逆向分析

People shouldn’t brood around their past. ——《最后的巫师猎人》

不要沉溺于过往之中。

PS: 本文仅供学习参考、仅供学习参考、仅供学习参考,不得用于商业用途。

请求分析

本次目标站点

aHR0cHM6Ly93d3cucWNjLmNvbS9maXJtLzU3NmMyMWUzNDY4YTZiMTc4YmJmMjkxZTQ4MjBlODk2Lmh0bWw=

  形如上图这种,该网站很多链接的请求头中都有类似的加密,key:value 都不固定。

JS 分析

  既然是在请求头中的加密,那么较大概率是在 js 中生成的。全局搜索大法,搜索关键词 headers,经测试,main.be3416fa.js 文件就是我们要寻找的。这个文件超过20万行,不能莽,打上断点慢慢来。

  成功断上,主要代码如下

1
2
var n = (0, i.default)(t) , r = (0, s.default)(t, e.data);
e.headers[n] = r

  将这两句转成容易看懂的,可以看到 headers 的 key 是 n,value 是 r。

1
2
var n = i.default(t), r = s.default(t, e.data);
e.headers[n] = r

分析 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 很多地方都有它们,一不留神就被绕懵了,分不清哪个是哪里的了,我们只需捋清楚逻辑,一步步来就能成功。