一、數據接口分析
主頁地址:某建筑市場平臺
1、抓包
通過抓包可以發現數據接口是list
2、判斷是否有加密參數
- 請求參數是否加密?
無 - 請求頭是否加密?
無 - 響應是否加密?
通過查看“響應”模塊可以發現,返回的響應是加密數據
- cookie是否加密?
無
二、加密位置定位
1、看啟動器
查看啟動器發現里面包含異步,所以無法正確找到加密位置
2、hook
因為響應加密數據一般都是json數據加密,所以解密后會使用JSON.parse
進行解密,所以我們可以對JSON.parse
進行hook。
hook代碼段:
var my_parse = JSON.parse;
JSON.parse = function (params) {debuggerconsole.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()
}