一、数据接口分析
主页地址:某建筑市场平台
1、抓包
通过抓包可以发现数据接口是list
2、判断是否有加密参数
- 请求参数是否加密?
无 - 请求头是否加密?
无 - 响应是否加密?
通过查看“响应”模块可以发现,返回的响应是加密数据
- cookie是否加密?
无
二、加密位置定位
1、看启动器
查看启动器发现里面包含异步,所以无法正确找到加密位置
2、hook
因为响应加密数据一般都是json数据加密,所以解密后会使用JSON.parse
进行解密,所以我们可以对JSON.parse
进行hook。
hook代码段:
var my_parse = JSON.parse;
JSON.parse = function (params) {
debugger
console.log("json_parse params:",params);
return my_parse(params);
};
运行hook代码,再次点击翻页,发现有明文参数传入
往下执行,可以发现是在响应拦截器中使用h
方法对数据进行的解密
三、扣js代码
从定位到的解密位置进入h
方法,可以发现该网站使用的是标准AES解密,并且key
和iv
均在此方法上方
所以我们可以直接使用标准AES模块对密文进行解密
源代码:
var CryptoJS = require('crypto-js')
function h(t) {
f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF");
var e = CryptoJS.enc.Hex.parse(t)
, n = CryptoJS.enc.Base64.stringify(e)
, a = CryptoJS.AES.decrypt(n, f, {
iv: m,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
, r = a.toString(CryptoJS.enc.Utf8);
return r.toString()
}