【逆向百例】某电商数据分析平台响应数据解密逆向分析

发布时间:2026/7/31 10:42:12

【逆向百例】某电商数据分析平台响应数据解密逆向分析
本文记录了对某电商数据分析平台 API 响应加密机制的完整逆向过程涵盖抓包侦察、参数验证、解密定位、算法识别与本地还原。该加密方案采用AES-ECB PKCS7 gzip的组合模式密钥通过多层 toString(36) 编码混淆属于典型的前端响应加密防护适合作为响应解密类逆向的入门案例。一、目标概况项目说明目标平台某电商数据分析平台页面入口aHR0cHM6Ly93d3cuY2hhbm1hbWEuY29tL3Byb21vdGlvblJhbmsv数据接口aHR0cHM6Ly9hcGktc2VydmljZS5jaGFubWFtYS5jb20vdjYvcHJvZHVjdC9zZWFyY2g鉴权方式请求头固定参数x-client-hash/x-client-id/x-encrypt-version/x-platform-id加密方式响应体加密AES-ECB PKCS7 解密 → WordArray 转 Uint8Array → gzip 解压 → JSON分析日期2026.07.29URL 采用 Base64 编码脱敏解码后可得原始地址。逆向目标还原接口响应中密文数据的解密逻辑使本地可正常获取明文数据。二、抓包侦察2.1 捕获目标请求打开浏览器 DevTools → Network 面板通过翻页操作触发列表数据请求定位到search接口。请求头关键部分x-client-hash: 固定哈希值 x-client-id: 固定ID x-client-version: 1 x-encrypt-version: 2 x-platform-id: 10000请求体明文 JSON{multi_category_id:-1,keyword:,page:2,size:50,sort:duration_volume,day_type:1,platform:平台标识,order_by:desc}响应体密文状态码 2002.2 初步判断通过观察请求体与响应体可以得出两个关键结论数据层存在加密响应体为密文信息需逆向解密方法才能获取明文数据请求层无动态鉴权请求头中的参数均为固定值无需逆向生成逻辑2.3 参数固定性验证拦截多页请求对比各参数变化情况参数多次请求对比结论x-client-hash始终相同固定值硬编码在代码中x-client-id始终相同固定值x-encrypt-version始终相同固定值x-platform-id始终相同固定值结论请求头参数均为固定值无需逆向生成逻辑。核心逆向目标为响应体解密。三、解密定位3.1 Hook 定位在 DevTools Sources 面板中注入 Hook 脚本拦截JSON.parse方法的调用定位解密入口Hook 触发后出现明文信息根据堆栈调用信息向上追溯找到解密方法的调用位置。3.2 断点验证在解密方法处设置断点观察变量值此时可以清晰看到完整的解密链路密文 e → AES 解密 → WordArray a → u(a) 转换 → Uint8Array o → ungzip 解压 → 明文 r → JSON.parse四、解密逻辑分析4.1 源码还原从断点位置提取的关键代码如下// AES 密钥推导ns.enc.Utf8.parse(27..toString(36).toLowerCase().split().map(function(t){returnString.fromCharCode(t.charCodeAt()-39);}).join()24901..toString(36).toLowerCase()33..toString(36).toLowerCase().split().map(function(t){returnString.fromCharCode(t.charCodeAt()-39);}).join()976..toString(36).toLowerCase()20..toString(36).toLowerCase().split().map(function(t){returnString.fromCharCode(t.charCodeAt()-39);}).join()(function(){vartArray.prototype.slice.call(arguments),et.shift();returnt.reverse().map(function(t,n){returnString.fromCharCode(t-e-24-n);}).join();})(10,127,154,91,151,91,136)11..toString(36).toLowerCase()13..toString(36).toLowerCase().split().map(function(t){returnString.fromCharCode(t.charCodeAt()-13);}).join());// AES-ECB 解密as.AES.decrypt(e,n,{mode:s.mode.ECB,padding:s.pad.Pkcs7});// WordArray → Uint8Arrayou(a);// gzip 解压rc.ungzip(o,{to:string});// JSON 解析returnJSON.parse(r);4.2 逻辑拆解将上述代码逐步拆解解密流程如下┌─────────────────────────────────────────────────────────┐ │ Step 1: 推导 AES 密钥 │ │ key 多层 toString(36) 编码 charCode 偏移拼接 │ │ 最终结果: 16字节字符串 (AES-128) │ ├─────────────────────────────────────────────────────────┤ │ Step 2: AES-ECB 解密 │ │ plaintext AES.decrypt(ciphertext, key, { │ │ mode: ECB, padding: PKCS7 │ │ }) │ │ // 输出为 CryptoJS WordArray 对象 │ ├─────────────────────────────────────────────────────────┤ │ Step 3: WordArray → Uint8Array │ │ bytes u(wordArray) │ │ // 逐字提取 4 字节按大端序拆分 │ ├─────────────────────────────────────────────────────────┤ │ Step 4: gzip 解压 │ │ jsonStr pako.ungzip(bytes, { to: string }) │ ├─────────────────────────────────────────────────────────┤ │ Step 5: JSON 解析 │ │ data JSON.parse(jsonStr) │ └─────────────────────────────────────────────────────────┘4.3 子函数验证密钥推导将混淆代码在 Node.js 中执行得到 AES 密钥为 16 字节字符串对应 AES-128。u 方法WordArray → Uint8Array 转换functionu(t){vare,n,it.words.length,anewUint8Array(t.sigBytes),o0;for(n0;ni;n)et.words[n],a[o]e24,a[o]e16255,a[o]e8255,a[o]255e;returna;}该函数将 CryptoJS 的 WordArray32 位整数数组按大端序逐字节拆分为 Uint8Array属于标准转换操作。AES 解密验证使用推导出的密钥对密文进行 AES-ECB PKCS7 解密解密后的数据经u方法转换后为 gzip 压缩的二进制数据符合预期。gzip 解压验证使用pako库对解密后的 Uint8Array 进行解压得到明文 JSON 字符串与浏览器中观察到的明文数据完全一致。五、本地还原5.1 Node.js 实现constCryptoJSrequire(crypto-js);constpakorequire(pako);functionu(t){vare,n,it.words.length,anewUint8Array(t.sigBytes),o0;for(n0;ni;n)et.words[n],a[o]e24,a[o]e16255,a[o]e8255,a[o]255e;returna;}functiondecryptResponse(ciphertext){constkeyCryptoJS.enc.Utf8.parse(推导出的AES密钥);constdecryptedCryptoJS.AES.decrypt(ciphertext,key,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.Pkcs7});constbytesu(decrypted);constjsonStrpako.ungzip(bytes,{to:string});returnJSON.parse(jsonStr);}constciphertext...;// 接口返回的密文console.log(decryptResponse(ciphertext));5.2 Python 实现fromCrypto.CipherimportAESfromCrypto.Util.Paddingimportunpadimportgzipimportjsonimportbase64defdecrypt_response(ciphertext_b64):keyb推导出的AES密钥ciphertextbase64.b64decode(ciphertext_b64)cipherAES.new(key,AES.MODE_ECB)plaintextunpad(cipher.decrypt(ciphertext),AES.block_size)json_strgzip.decompress(plaintext).decode(utf-8)returnjson.loads(json_str)ciphertext...# 接口返回的密文Base64编码print(decrypt_response(ciphertext))5.3 验证结果通过本地还原的解密方法能够正常解密接口返回的密文信息得到明文数据六、总结加密方案特征维度分析算法类型标准 AES-128-ECB PKCS7无魔改配合 gzip 压缩密钥来源前端 JS 中通过 toString(36) charCode 偏移多层混淆但可本地执行还原防护强度较低——密钥推导逻辑硬编码在前端ECB 模式无 IV算法均为标准实现压缩层gzip 压缩服务端加密前压缩客户端解密后解压请求鉴权无动态鉴权参数请求头均为固定值逆向思路回顾抓包侦察 → 参数验证固定性→ Hook JSON.parse 定位 → 断点确认解密链路 → 源码提取 → 密钥推导还原 → 子函数验证u方法/ungzip→ 本地还原 → 一致性验证本案例属于前端响应加密的入门级难度核心难点在于定位解密入口和还原混淆的密钥推导逻辑。解密链路清晰AES → WordArray转换 → gzip解压 → JSON算法均为标准实现还原过程非常直接。免责声明本文仅用于技术学习与研究目的请勿将相关技术用于非法用途。数据采集行为应遵守《网络安全法》等相关法律法规尊重网站的服务条款和 robots.txt 协议。

相关新闻

手游联运合作流程实操:步骤、指标与复盘重点

手游联运合作流程实操:步骤、指标与复盘重点

2026/7/31 10:42:12

手游联运合作流程实操的核心,是从渠道选择、资质提交、合同签署、技术接入、数据联调、正式上线、分成结算到运营复盘的完整链条。对于刚接触联运的发行团队、公会或MCN机构来说,流程中的每一个环节都可能影响最终的合作效果和收益。以下是对全流程的拆解…

大模型应用开发工程师:开启AI落地新时代,小白程序员必备收藏指南

大模型应用开发工程师:开启AI落地新时代,小白程序员必备收藏指南

2026/7/31 10:42:12

AI大模型应用开发工程师是连接技术与产业的关键角色,负责将复杂AI技术转化为实用工具。他们需对接业务需求,进行技术选型、应用开发、测试优化,并确保产品安全合规。这一职业薪资高、前景好,是程序员转行或提升技能的重要方向&…

荷载规范中的基本风压

荷载规范中的基本风压

2026/7/31 10:32:12

荷载规范中的基本风压 《建筑结构荷载规范》(GB50009-2001)结构荷载规范原文 8.1.2 基本风压的确定方法和重现期直接关系到当地基本风压值的大小,因而也直接关系到建筑结构在风荷载作用下的安全,必须以强制性条文作规定。 确定基本风压的方法包括对观测场地、风速仪的类…

AI面试训练系统:从技术原理到实战应用

AI面试训练系统:从技术原理到实战应用

2026/7/31 11:42:15

1. 项目概述"面霸"是一款基于AI技术的智能面试训练系统,专为求职者打造的全天候面试陪练工具。这个项目的核心价值在于通过模拟真实面试场景,帮助用户从面试小白成长为offer收割机。我在人力资源行业摸爬滚打十年,见过太多优秀的候…

[论文学习]Kill-Chain Canaries:提示注入攻击的杀伤链分阶段追踪研究

[论文学习]Kill-Chain Canaries:提示注入攻击的杀伤链分阶段追踪研究

2026/7/31 11:42:15

Kill-Chain Canaries: Stage-Level Tracking of Prompt Injection Across Attack Surfaces and Model Safety Tiers (2026) 論文重點 这篇论文的核心贡献在于:把提示注入攻击的评估从“任务级成功率”推进到了“管道级定位”。 作者设计了一套“杀伤链金丝雀”&…

[论文学习]IterInject:基于反馈引导迭代优化的LLM智能体间接提示注入攻击

[论文学习]IterInject:基于反馈引导迭代优化的LLM智能体间接提示注入攻击

2026/7/31 11:42:15

IterInject: Indirect Prompt Injection Against LLM Agents via Feedback-Guided Iterative Optimization 论文重点 IterInject提出了一套基于反馈引导的迭代优化框架,将间接提示注入(Indirect Prompt Injection, IPI)从“一次性手工构造”…

抖音批量下载神器完整指南:5分钟掌握高效内容管理

抖音批量下载神器完整指南:5分钟掌握高效内容管理

2026/7/31 11:42:15

抖音批量下载神器完整指南:5分钟掌握高效内容管理 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …

5分钟快速上手:SPT-AKI Profile Editor离线版逃离塔科夫存档修改器终极指南

5分钟快速上手:SPT-AKI Profile Editor离线版逃离塔科夫存档修改器终极指南

2026/7/31 11:42:15

5分钟快速上手:SPT-AKI Profile Editor离线版逃离塔科夫存档修改器终极指南 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitc…

修勾逃生巨人危机v10.9.9修改版:免广告无限内购与GM工具详解

修勾逃生巨人危机v10.9.9修改版:免广告无限内购与GM工具详解

2026/7/31 11:32:14

这次我们来看一个名为"修勾逃生巨人危机"的游戏项目,它提供了v10.9.9版本的特色功能,包括免广告和无限内购。这个版本还内置了GM工具,通过特定操作路径即可开启。 从项目描述来看,这应该是一个修改版的游戏应用&#x…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/30 9:53:22

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/30 1:17:46

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/30 2:52:37

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

2026优质EMBA择校榜单:校友圈质量高的EMBA适配民企创始人

2026优质EMBA择校榜单:校友圈质量高的EMBA适配民企创始人

2026/7/31 0:01:23

【客观独立测评】深耕商科教育测评多年,聚焦民企创始人、科创企业实控人择校痛点,避开镀金空壳、课程脱节、圈层杂乱的踩坑问题,结合真实办学数据与学员口碑,整理出适配实业高管的高性价比EMBA榜单,理性分析各项目适配…

绝区零一条龙:5分钟快速上手的终极自动化助手

绝区零一条龙:5分钟快速上手的终极自动化助手

2026/7/31 0:01:23

绝区零一条龙:5分钟快速上手的终极自动化助手 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零一条龙是一…

2026民企老板EMBA择校榜单:人脉圈广的EMBA高性价比测评

2026民企老板EMBA择校榜单:人脉圈广的EMBA高性价比测评

2026/7/31 0:01:23

【客观中立测评声明】本文基于学费成本、课程落地、圈层纯度、长期赋能四大维度实测打分,无商业洗脑吹捧,仅为民企创始人、科创高管提供真实择校参考,规避镀金踩坑陷阱。不少民营企业家读EMBA容易踩两大坑:盲目追名校排名&#xf…