本节内容是AES链接加密案例,主要内容是对列表页url的加密分析。
目标网站链接:天津市公共资源交易网
该网站的url直接点击无法访问,发现在访问详情页时会将url进行加密后才能继续访问,首先要分析加密的逻辑,发现加密是在点击事件发生后才触发的。如图1所示:

点击方法查看详细内容,成功发现加密部分的代码,采用的AES加密,mode为ECB,padding为Pkcs7,如图2所示:

将代码简化后复制到Snippets后开始模拟运行,如图3所示:

接下来用python还原代码如下:
import execjs
js = """
var CryptoJS = require("crypto-js");
function get(hh) {
var aa = hh.split("/");
var aaa = aa.length;
var bbb = aa[aaa - 1].split('.');
var ccc = bbb[0];
var cccc = bbb[1];
// var r = /^\+?[1-9][0-9]*$/;
// var ee = $(this).attr('target');
var srcs = CryptoJS.enc.Utf8.parse(ccc);
var s = "qnbyzzwmdgghmcnm";
var k = CryptoJS.enc.Utf8.parse(s);
var en = CryptoJS.AES.encrypt(srcs, k, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var ddd = en.toString();
ddd = ddd.replace(/\//g, "^");
ddd = ddd.substring(0, ddd.length - 2);
var bbbb = ddd + '.' + bbb[1];
aa[aaa - 1] = bbbb;
var uuu = '';
for (i = 0; i < aaa; i++) {
uuu += aa[i] + '/'
}
uuu = uuu.substring(0, uuu.length - 1);
return uuu
}
"""
url = "http://ggzy.zwfwb.tj.gov.cn:80/zwyw/989467.jhtml"
result = execjs.compile(js).call('get',url)
print(result)
程序运行成功,点击该链接可以直接访问页面,结果如图: