在日常工作中,为了防止请求的数据被Burp等工具抓包,往往会在前端对请求数据进行加密,从而保证数据的安全性。而这要做真的会可靠吗?本篇文章,我们一起来探究!
这里,我们以某靶场为例。输入查询数据,进行查询,并在Burp中抓包。

抓到包后,明显看到数据是加密的。

接下来,让我们一起来看看他是如何加密的。

解密

查看前端 JS 文件:score-xxx.js,直接让AI分析这段JS

JS 中定义了以下常量:
// 被 XOR 混淆后的密钥 hex 字符串
CC = "442d27187049c5828de39efdb0f1314827694a6941df9189eecba1aef03a5679"
// XOR 混淆用的种子(seed)
EC = "ln-score"
// 两个混淆常数
SC = 17
bC = 31解混淆函数 V0
// UTF-8 编码
function nn(e) {
return new TextEncoder().encode(e) // 字符串 → Uint8Array
}
// UTF-8 解码
function Fo(e) {
return new TextDecoder().decode(e) // Uint8Array → 字符串
}
// 核心解混淆函数
function V0(e, t) {
if (!e || !t) return ""
const r = aa(e) // hex字符串 → Uint8Array (待解密数据)
const n = nn(t) // seed字符串 → Uint8Array (XOR密钥)
const i = Uint8Array.from(r, (o, s) => {
// 对每个字节:先用公式生成混淆字节,再 XOR
const a = n[s % n.length] ^ (s * SC + bC) & 255
return o ^ a // 原文 = 密文 XOR 混淆字节
})
return Fo(i) // Uint8Array → 字符串
}


复现

接下来,就很简单了,将得到的Key给AI,让它写一个Burp插件,便可以很快解决数据加密问题。


安全建议
