福建省公共资源交易中心请求参数AES加密解析
1
2
3# 网页链接 https://ggzyfw.fj.gov.cn/business/list
# 数据接口 https://ggzyfw.fj.gov.cn/FwPortalApi/Trade/TradeInfo
# 加密字段 请求头中的portal-sign 和 响应数据中的 Data
portal-sign字段解析
搜索加密字段portal-sign,找到对应的加密函数,打断点查看加密流程
将请求体放入f.getSign()函数中进行加密,查看该函数
该函数是将固定字符串和请求体中的部分键值对拼接,然后使用md5加密成32位字符串,可以将该函数扣取出来,补全既可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30function u(t, e) {
return t.toString().toUpperCase() > e.toString().toUpperCase() ? 1 : t.toString().toUpperCase() == e.toString().toUpperCase() ? 0 : -1
}
function l(t) {
for (var e = Object.keys(t).sort(u), n = "", a = 0; a < e.length; a++)
if (void 0 !== t[e[a]])
if (t[e[a]] && t[e[a]] instanceof Object || t[e[a]] instanceof Array) {
var i = JSON.stringify(t[e[a]]);
n += e[a] + i
} else
n += e[a] + t[e[a]];
return n
}
function d(t) {
for (var e in t)
"" !== t[e] && void 0 !== t[e] || delete t[e];
var n = '3637CB36B2E54A72A7002978D0506CDF' + l(t);
console.log(n)
return n.MD5(32).toLocaleLowerCase()
}
e = {
"pageNo": 1, "pageSize": 20, "total": 4153, "AREACODE": "", "M_PROJECT_TYPE": "", "KIND": "GCJS",
"GGTYPE": "2,3,7", "PROTYPE": "", "timeType": "6", "BeginTime": "2022-10-06 00:00:00",
"EndTime": "2023-04-06 23:59:59", "createTime": [], "ts": '1680765912258'
}
var sign = d(e)
console.log(sign)得到portal-sign 加入请求头,即可获得响应体
响应体Data解析
通过搜索response关键字,可以找到js中接收响应数据是怎么进行处理的
b(e.Data) b函数是对Data数据进行解密,点击查看解密流程
是经典的AES CBC加密方式,填充方法是pkcs7,加密的key和偏移值iv都是固定的,直接拿过来扣代码或者直接导包都可以
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21const CryptoJS = require('crypto-js')
// 解密
function decrypt(data, key, iv) { //key,iv:16位的字符串
var key1 = CryptoJS.enc.Utf8.parse(key);
var iv1 = CryptoJS.enc.Utf8.parse(iv);
var decrypted = CryptoJS.AES.decrypt(data, key1, {
iv: iv1,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
function run(data) {
var key = "BE45D593014E4A4EB4449737660876CE";
var iv = "A8909931867B0425";
var pazzword = data
pazzword = decrypt(pazzword, key, iv);
return pazzword
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Spider Blog!