案例地址:ctbpsp.com
案例内容:对ctbpsp网响应数据的DES解密案例。
抓包可以看到Response,一段类似Base64编码后的字符串。
定位很简单,全局搜索关键词decrypt。
通过下图可以看出:
- DES算法
- e 是 Hexkey,由字符串处理后所得
- mode是ECB
- padding是PKCS7
- ciphertext是原字符串
先看e,e = w.a.enc.Utf8.parse()
然后是一个w.a.enc.Base64.parse,等同于解码: base64.b64decode(string)
因为网站使用的Cryptojs,接下来我们也用nodejs实现一下这段代码。
JS模拟
// npm install crypto-js
var CryptoJS = require("crypto-js");
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
function parse1(latin1Str) {
// Shortcut
var latin1StrLength = latin1Str.length;
// Convert
var words = [];
for (var i = 0; i < latin1StrLength; i++) {
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
}
return new WordArray.init(words, latin1StrLength);
}
var t = '要解密的字符串'
var keyHex = parse1(unescape(encodeURIComponent("ctpstp@custominfo!@#qweASD")))
var ciphertext = CryptoJS.enc.Base64.parse(t)
const decryptDES = (ciphertext) => {
if (ciphertext) {
let decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
} else {
return '';
}
};
console.log(decryptDES(t))
本地构建后即可执行成功。
大家自己动手测试下, 另外推一个爬虫逆向工具站 , cnlans.com/lx/tools