JS逆向-AQI正文加密逻辑分析

目标网站

IGh0dHBzOi8vd3d3LmFxaXN0dWR5LmNuLw0K

还是上次的那个网站,上一篇分析了关于反爬的绕过,在正文里随口提了一句说这个网站关于正文加密的部分很简单,晚上就收到几位读者的私信,希望能够讲讲关于正文的加密是如何解密的。

所以,我来了。

还是老样子,先打开网站,这里关于如何过反爬,直接参考上一篇的内容,这里不做重复了。

【链接】

请求分析

打开控制台之后,重新加载一下页面,捕捉请求。【图2-1】

图2-1

可以看到有一条xxxapi的请求链接,可以看到请求参数也加密了。【图2-2】

图2-2

除了参数之外,同样这个请求的返回值同样也是密文的。【图2-3】

图2-3|部分结果截图

经过请求分析,明确了现在要分析的加密是参数和返回值。

加密参数分析

先开始关于参数的分析。

通过多次加载请求,发现所有的参数加密的名字都是不相同的,所以全局检索参数名定位到参数加密的可能性很小。所以直接用 XHR 断点。【图3-1】

图3-1

重新加载页面,加载数据就断上了。

可以看到这里是请求发起的地方,数据已经加密好了。【图3-2】

图3-2

所以需要分析堆栈,在【图3-3】所示的位置,我们找到了生成好的参数。

在这里可以看得到,参数是经过pxteFCahl这个方法生成的。【图3-4】

图3-4

追进去可以看到参数的生成逻辑了。【图3-5】

图3-5

加密参数就是将相关的参数哈希之后再 Base64 编码的结果,如果直接用 Python 复写需要注意 NodeJS 与 Python 的关于 Json 转化是有一点点区别的。

如果搞不明白的可以直接扣一下代码,对新手友好。

返回值解密

分析完加密参数后,再来看看返回值是如何解密的。

在上一部分,我们定位到了加密参数生成的地方,在生成的位置下方就是加密返回值解密的位置。

在 Ajax 中,发起请求后,可以根据请求的结果执行不同的操作,这里在请求成功后,执行了结果的解密。【图4-1】

图4-1

上图的daA0vPWcfr2就完成了返回结果的解密,我们可以追进去看看他的逻辑。【图4-2】

图4-2

可以看到这个逻辑也是很简单的,加密的结果先后经过 AES + DES + BASE64 的解密/解码就可以得到明文的代码了。

并且相关的秘钥都可以直接检索得到。【图4-3】

图4-3

这类简单的加密代码,扣取起来难度很低,也可以用 Python 直接复写。

简单扣取之后,就可以直接将加密的返回值带入运算了。【图4-4】

总结

这个网站还是比较适合新手练手,加密的难度相比上一个版本略有下降,更多的是对浏览器使用方面的考察。

没有动手扣过代码的可以试试扣取一下代码,非常适合新手动手实践。

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2020/02/28/每日JS-AQI正文加密/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!