目录
- 前言
- [1. 定位解密函数](#1. 定位解密函数)
- [2. 抽离解密函数](#2. 抽离解密函数)
前言
以学习为主,主要讲解思路,请勿越过红线!
此处搜索之后,查询的结果是加密数据!如果要拿到数据,需要对应进行解密,对此需要逆向
1. 定位解密函数
F12 点击XHR
之后点击 函数调用,一个个过
时刻观察数据的反应,直到解密出正式的数据
此时发现加密数据消失,对应通过XX.gzip(i)进行解密
最终定位到gzip的函数
2. 抽离解密函数
函数已经定位,此时将其抽离,以js的形式呈现
注意此处抽离的时候,由于inflate使用的是内置的,对此可能为zlib或者是pako,对应进行尝试即可,后续发现是pako的
对应封装相关的解密函数:
js
const zlib= require("pako");
window = global
const base64 = require('base64-js');
function gzip(t) {
let e, n = base64.toByteArray(t), i = new Uint8Array(n), r = zlib.inflate(i), o = "";
s = 8192, a = r.length / s;
for (e = 0; e < a; e++)
o += String.fromCharCode.apply(null, r.slice(e * s, (e + 1) * s));
return o += String.fromCharCode.apply(null, r.slice(e * s)),
decodeURIComponent(window.escape(o))
}
console.log(gzip("xxxx"))
截图如下:
如果转换为Python函数:
python
import base64
import zlib
def gzip(encoded_str):
# 将 base64 字符串解码为字节数组
byte_array = base64.b64decode(encoded_str)
# 使用 zlib 解压缩,并指定 gzip 格式
decompressed_data = zlib.decompress(byte_array, zlib.MAX_WBITS | 16)
# 将字节数据转换为字符串
return decompressed_data.decode('utf-8')
result = gzip("xxxxx")
print(result)
截图如下: