f0ng / autoDecoder

Burp插件,根据自定义来达到对数据包的处理(适用于加解密、爆破等),类似mitmproxy,不同点在于经过了burp中转,在自动加解密的基础上,不影响APP、网站加解密正常逻辑等。
843 stars 67 forks source link

我出现了一个bug #24

Closed ruisika closed 9 months ago

ruisika commented 9 months ago

image image 在历史抓包记录里正常解密没有问题 image 问题就出现在这里 返回包是错误的 我查看了我写的接口记录

1697593167790

按理说他那个databody应该是加密前的数据也就是{"sac001":"0","ack001":"2c928ab58acbad7a018b3b6210183399","classPId":"WP00000103","state":"7","pageIndex":1,"pageSize":3} 但是他现在还是加密的数据 导致在发包的时候又进行了一次加密 我不知道是扫描原因 下面是我的js脚本 var http = require('http');
const url = require('url');
const querystring = require('querystring');
var CryptoJS = require("crypto-js");
const key = CryptoJS.PBKDF2('D0so6K', CryptoJS.enc.Hex.parse('40b92f21b7356c04b79fbe18c10752cb'), { keySize: 4, iterations: 1000 }); const iv = CryptoJS.enc.Hex.parse('6a83227ace94510ca9b77878a2d0c6da');

function Encrypt(word) {
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {iv:iv});
return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}

function Decrypt(word) {
var decrypt = CryptoJS.AES.decrypt(word, key, { iv:iv});
return decrypt.toString(CryptoJS.enc.Utf8);
}

http.createServer(function (req, res) {
let path = url.parse(req.url);
let postparms = '';
if (path.pathname === '/encode') {
console.log("encode路由");
req.on('data', (parms) => {
postparms += parms;
});
req.on('end', () => {
postparms = querystring.parse(postparms);
console.log(postparms);
let dataBody = postparms.dataBody;
let Data = Encrypt(dataBody); console.log(Data); res.end(Data); })
} else if (path.pathname === '/decode') {
console.log("decode路由")
req.on('data', (parms) => {
postparms += parms;
})
req.on('end', () => {
postparms = querystring.parse(postparms);
let dataBody = postparms.dataBody.replace(/^"|"$/g, ''); console.log(dataBody);
let decryptData = Decrypt(dataBody); // 解密,默认输出 utf8 字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 填充)
// decryptData = Buffer.from(decryptData) // console.log(decryptData) // decryptData = decryptData.toString('utf-8')
console.log(decryptData);
res.end( decryptData );
})
} else{
res.write("end");
res.end() }
}).listen(8888);

f0ng commented 9 months ago

如果是明文发包想经过自动加密发送到服务端的话,需要设置明文关键字,来标识出是明文从而进行自动加密发包

ruisika commented 9 months ago

太感谢了 刚刚改了一下 可以了