Closed ruisika closed 9 months ago
在历史抓包记录里正常解密没有问题 问题就出现在这里 返回包是错误的 我查看了我写的接口记录
按理说他那个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);
如果是明文发包想经过自动加密发送到服务端的话,需要设置明文关键字,来标识出是明文从而进行自动加密发包
太感谢了 刚刚改了一下 可以了
在历史抓包记录里正常解密没有问题 问题就出现在这里 返回包是错误的 我查看了我写的接口记录
按理说他那个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);