今天分析的网站是: https://www.sohu.com/a/601772603_429139
好久不看搜狐文章了,最近在看搜狐文章的时候发现图片地址加密了,打开控制台查看elements
发现图片是正常显示。
/XgGKGmmy65S51KsF688i+jwr47D8luFD15aBAmwHor+XS3c3VuARtQNV35+hAvijv/Sz6dOdrEuha6PRdIFwIW+R6BlJEMeepEDRfGKUBM=
但是鼠标右键查看网页原代码
发现却是被加密的。
再根据经验,我们大胆的测试加密和decrypt
相关,先用decrypt
搜索下。
看断点的样子,是成功的断进去了。
核心的js代码如下:
function e(e, t) {
return r.AES.decrypt(e, r.enc.Utf8.parse(t), {
mode: r.mode.ECB,
padding: r.pad.Pkcs7
}).toString(r.enc.Utf8)
}
一看这就是非常标准的AES
加密,使用的ECB
模式,填充的padding
是Pkcs7
。
单步进去看看里面的计算逻辑,e
单步进去来到这一步。
然后进到这里面
最后会返回一个固定值,也就是key
:www.sohu.com6666
控制台打印下看看e
和t
是什么。
可以明显的看到e
就是传递过来的加密值,而t
就是AES
解密的key
。
分析的差不多了,js代码如下:
var CryptoJS = require("crypto-js");
var data_text = "QdNDsuFXQTGMjFQB08PVr+vvdZHTeJ37RCxPLJ8UKaYms6eFK0ULx00YMoQf8O+gcYw4MuyOzIPz2Qb+ckk0BgyU8xDuL3lT+J3HruXGTkM="
var aes_key = "www.sohu.com6666"
var dec_data = CryptoJS.AES.decrypt(data_text, CryptoJS.enc.Utf8.parse(aes_key), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
console.log("解密后数据:", dec_data)
运行结果:
解密后数据: //p1.itc.cn/q_70/images03/20221031/4b4add9ac8e042f19fb128b3b6fdd6b9.jpeg
解出来的就是正常的明文了。