近期遇到一个需求是一个小说网站。该网站没有什么特殊的地方,但是接口响应数据是加密的。
逆向过程
接口定位过程不在细述,可知请求头没有什么特别的,但是响应内容是加密的。
可知截图中的m是关键点。
继续定位到下面的函数。
最为关键的函数就是:
decrypt(e) {
const t = _e.exports.AES.decrypt(e, this.key, {
mode: _e.exports.mode.CBC,
padding: _e.exports.pad.Pkcs7,
iv: this.iv
});
return _e.exports.enc.Utf8.stringify(t).toString()
}
模式很常规,就是使用的CBC算法,加上一个padding参数,以及常规的iv。只是这个key和iv是个对象,没有直接获取的方式,可以先直接复制出来调用一下。
代码思路
使用crypto-js来代替原来的加解密,当然也可以使用Python自己的模块进行处理,但是怎么简单怎么来就可以了,殊途同归。
总结
代码很简单,就是直接使用开源的crypto-js来替代就行了。