爬蟲 | Js逆向某市場監(jiān)督平臺加密分析
聲明:本文只用于學(xué)習(xí)研究,禁止用于非法用途,如有侵權(quán),請聯(lián)系我刪除,謝謝!
大家好,我是村長~~
在做爬蟲逆向中,我們絕大多數(shù)遇到的都是請求參數(shù)或者cookie加密之類的分析
今天給大家分享一個不一樣的,屬于響應(yīng)數(shù)據(jù)response的加密
話不多說,網(wǎng)站地址如下:
aHR0cDovL2p6c2MubW9odXJkLmdvdi5jbi9kYXRhL2NvbXBhbnk=
分析
response加密意味著,你抓包后拿到的響應(yīng)不是我們平??吹降?code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);">json或者html數(shù)據(jù)
而是一大串字符串,比如該網(wǎng)站的數(shù)據(jù)返回

很多人可能會一臉懵逼
其實既然網(wǎng)頁上面返回了真實的數(shù)據(jù)
那么它一定有一個解密的過程,所以我們要做的就是找到解密的Js代碼
這是一個 xhr 請求,和之前一樣下 xhr 斷點,不會的可以看看前面的文章

斷點斷下的位置是發(fā)起請求的地方

這時候我們要做的就是往后找加密函數(shù),按F10繼續(xù)往下走

可以看到,這個 e 就是解密后的響應(yīng)。
那么關(guān)鍵就是這個 h() 函數(shù)了,點擊進去

哇哦!熟悉的味道,這不就是AES解密嗎
驗證
對于這種加密,直接套用 crypto-js 模塊即可,不用費時去扣代碼
找到幾個關(guān)鍵的參數(shù):
密鑰 key,也就是圖片中的 f = d.a.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
密鑰偏移量iv, 也就是圖片中的 d.a.enc.Utf8.parse("0123456789ABCDEF")
完整代碼如下:
const CryptoJS = require('crypto-js');
const key = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn");
const iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');
// AES 解密方法
function Decrypt(word) {
let e = CryptoJS.enc.Hex.parse(word);
let n = CryptoJS.enc.Base64.stringify(e);
let a = CryptoJS.AES.decrypt(n, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
let r = a.toString(CryptoJS.enc.Utf8);
return r.toString();
}
將加密的字符串結(jié)果 t ,傳進去運行解密

對比結(jié)果輸出,game over !!!

THANKS
- End -
爬蟲 | JS逆向某驗滑動加密分析
JS逆向?qū)崙?zhàn)之混淆加密和AES加密的破解


