逆向 解密接口信息(附Demo)

目录

  • 前言
  • [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)

截图如下:

相关推荐
sugar__salt7 分钟前
基于Prompt的NLP项目实战:ES6模块化落地开发指南
javascript·自然语言处理·prompt·es6
小雨下雨的雨10 分钟前
通过鸿蒙PC Electron框架技术完成-井字棋游戏 - 实现详解
前端·javascript·游戏·华为·electron·鸿蒙
冰暮流星22 分钟前
javascript建立对象之构造函数
开发语言·javascript·ecmascript
HackTwoHub26 分钟前
WEB扫描器Invicti-Professional-V26.50.0(自动化爬虫扫描)更新
前端·人工智能·chrome·爬虫·web安全·网络安全·自动化
小雨下雨的雨1 小时前
基于鸿蒙PC Electron框架技术完成的五子棋游戏 - 技术实现详解
前端·javascript·游戏·华为·electron·鸿蒙
老毛肚1 小时前
jeecgboot vue API 拆分02
前端·javascript·vue.js
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_4:如何存储你需要的信息——变量
开发语言·前端·javascript·ui·ecmascript
VcB之殇1 小时前
[Three.js] 实现两个3D模型之间的粒子化切换
前端·javascript·three.js
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_6:JavaScript 中的基础数学——数字与运算符
开发语言·前端·javascript·学习·ecmascript
sugar__salt10 小时前
从栈队列数据结构到JS原型面向对象全解
前端·javascript·数据结构