chanmama响应数据解析

news2024/11/25 4:32:17

0x00目标url

aHR0cHM6Ly93d3cuY2hhbm1hbWEuY29tL2F1dGhvckRldGFpbC85OTI0MjExODcxOC9wcm9tb3Rpb24=

0x01接口分析

简单的get
在这里插入图片描述
但是返回数据被加密了
在这里插入图片描述
这里我们就来想想怎么解密这些数据。首先后端发来的数据是加密的,但是我们在前端看到的可不是加密后的数据。前端必然存在解密的js函数。

0x02定位解密函数

可以直接看看发起程序。这里有更快捷键的方式就是搜索decrpt
在这里插入图片描述
下断点后进行调试。
在这里插入图片描述
在这里插入图片描述
可以看到经过ungzip函数后,解密数据e被解密了,这时我们可以进行rpc,即可获取完整的解密数据。但是我们可以仔细研究下这个ungzip是什么。

0x03关键函数扣取

 n = _.enc.Utf8.parse("cmmgfgehahweuuii"),
 a= _.AES.decrypt(e, n, {
     mode: _.mode.ECB,
     padding: _.pad.Pkcs7
 }),
 i = O(a),
 r = x.ungzip(i, {
     to: "string"
 })

第一个ECB模式的decrypt可以用Crypto-js方便地实现,然后直接跟进ungzip函数
在这里插入图片描述
在这里插入图片描述
Fi函数即使ungzip,正常来说,我们只要把代码扣下来,放到本地运行,然后根据报错信息进行补全(补环境即可)。但是我们把文件拉到最开始,你会发现是webpack打包后的js文件。
那么如何应对呢?
首先要知道webpack是什么以及起到的作用,简单来说webpack就是把要到的js文件进行打包,当然开发者也有可能对其中的js文件进行混淆,作为保护js代码的防护措施。那么打包的型式就有单文件打包和整体打包。同时打包后的模块需要导出才能使用,模块与模块之间可能会存在依赖关系,需要具体情况具体分析,这里推荐一个视频,lx大佬在b站录制的–
https://www.bilibili.com/video/BV1QS4y1i7vp/?spm_id_from=333.337.search-card.all.click&vd_source=ea03b03f388e19d21c8823f140d40a8b

现在回到本文.
在这里插入图片描述

从这里看到是整体打包,先全部扣取到本地。
在这里插入图片描述
我们搜索Fi(e,函数,定位到acff
在这里插入图片描述
复制到一个新的js文件

接着先用Crypto-js实现第一部分的AES解密

const CryptoJs = require("crypto-js");
const cfg = {
    mode:CryptoJs.mode.ECB,
    padding:CryptoJs.pad.Pkcs7
}
function O_(t){
    var e, n, a = t.words.length, i = new Uint8Array(t.sigBytes), r = 0;
    for (n = 0; n < a; n++)
        e = t.words[n],
            i[r++] = e >> 24,
            i[r++] = e >> 16 & 255,
            i[r++] = e >> 8 & 255,
            i[r++] = 255 & e;
    return i
}
let key = CryptoJs.enc.Utf8.parse("cmmgfgehahweuuii")
var enc_data = "ka+WNHBuUPTHPXSmTK/vnmD7GVU3MIlUFcCxJk3sRMICNxFcF0NVrlkcwXTAqXvl/ZwBgfRW09jyay6iO8z3Poy+FcvgBD5fV3tk0177InpE2xH2shl8DeqN1p2Qz0x+EPhiJxj609ghJGaBKyeUBzzJobWH+pBEFOk0CDCqFUh2HikNsTO3rTJ2vwpovpA6GszQFSSY2Sj/Kp/NYTqTjThCe08TcxtkmctKs+NcvqyweHrk0jRbOec9c1QIcOIaFaAHCCe6oy9I/Hoi3F5kWk+dAErur0W1ZdxxQStMn0C7yx2hi+qxiYxoGtaYvHatKcR9EY3WDvhUmlwS63XOaZ4Gjay2vPNVi8UtF0LZkQE3AmdUa6P1Bmxd1de14WtEP4F/EK/WiEVcrV3AzzS1dy00n+EAkSiWXYApMgI10KbdPxukWn0QXPlk/YT0/sv4fQRXn8Q3hmX3Q/YJ2UAcZA=="
var dec_data = CryptoJs.AES.decrypt(enc_data,key,cfg)
var i_ = O_(dec_data)
console.log(i_)

与浏览器的数据对比,可以看到完全一致
然后我们将acff有关n的注释掉
在这里插入图片描述
最终得到了可以运行的解密函数。

0x04解密结果

在这里插入图片描述

{"volume_chart":[{"date":"20230401","first":0,"second":64248,"second_text":"5w~7.5w"},{"second":158192,"second_text":"10w~25w","date":"20230402","first":0},{"date":"20230408","first
":0,"second":123907,"second_text":"10w~25w"},{"date":"20230412","first":0,"second":107826,"second_text":"10w~25w"},{"date":"20230415","first":0,"second":154260,"second_text":"10w~25
w"},{"date":"20230423","first":0,"second":195428,"second_text":"10w~25w"}],"amount_chart":[{"date":"20230401","first":0,"second":2737909.51,"second_text":"250w~500w"},{"date":"20230
402","first":0,"second":10213450.8,"second_text":"1000w~2500w"},{"date":"20230408","first":0,"second":8599872.58,"second_text":"750w~1000w"},{"second_text":"750w~1000w","date":"2023
0412","first":0,"second":8676732.92},{"date":"20230415","first":0,"second":10139499.41,"second_text":"1000w~2500w"},{"second_text":"1000w~2500w","date":"20230423","first":0,"second"
:15799242.52}],"aweme_chart":[{"date":"20230401","first":0,"second":0},{"first":0,"second":0,"date":"20230402"},{"date":"20230408","first":0,"second":0},{"date":"20230412","first":0
,"second":0},{"date":"20230415","first":0,"second":0},{"date":"20230423","first":0,"second":0}],"room_chart":[{"date":"20230401","first":64248,"second":2737909.51},{"date":"20230402
","first":158192,"second":10213450.8},{"date":"20230408","first":123907,"second":8599872.58},{"second":8676732.92,"date":"20230412","first":107826},{"date":"20230415","first":154260
,"second":10139499.41},{"second":15799242.52,"date":"20230423","first":195428}]}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/507730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust + WASM 入门

一、参考资料 参考官方技术文档 https://rustwasm.github.io/ 二、安装脚手架 cargo-generate # cargo-generate 用于快速生成 WASM 项目的脚手架&#xff08;类似 create-react-app&#xff09; cargo install cargo-generate 三、下载安装 wasm-pack.exe 打包工具 双击安装…

大数据湖体系规划与建设方案(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 业界主流公司对于数据湖的规划 — IBM IBM 公司提出的数据湖架构&#xff0c;包括六大关键部件&#xff1a;数据湖资源库按照数据特点进行原始格式的分类存储库企业IT交互统…

【新星计划-2023】详解交换机的工作原理、功能与作用

交换机有多个端口&#xff0c;每个端口都具有桥接功能&#xff0c;可以连接一个局域网或一台高性能服务器或工作站&#xff0c;实际上&#xff0c;交换机有时被称为多端口网桥。那么&#xff0c;对于交换机的工作原理这块你是否有了解呢&#xff1f;接下来我们就来为大家详细介…

Android程序员如何面临被优化(亲身经历与看法)

前言 相信大家都有过这样一个经历&#xff0c;就是在一家公司工作久了&#xff0c;能轻松的完成每天的工作内容&#xff0c;无论是在大公司还是其他小公司&#xff0c;这样的状态时间长了之后&#xff0c;公司领导就会认为你每天不做事&#xff0c;总暗中招一些工资低的人代替…

java基础知识梳理

虽然已经在实际工作中与java打交道5年之多&#xff0c;但是一直没系统地对java这门语言进行梳理和总结&#xff0c;掌握的知识也比较零散。恰好利用这段时间重新认识下java&#xff0c;并对一些常见的语法和知识点做个总结与回顾&#xff0c;一方面为了加深印象&#xff0c;方便…

OtterCTF---Memory Forensics内存取证(1-13)

一.OtterCTF 内存取证 CTF地址&#xff1a; OtterCTF 国产化一下&#xff1a; 注册一下 登录就可以 &#xff08;注&#xff1a;因为邮箱不验证&#xff0c;随意搞个就可以&#xff09;&#xff1a; 1 - What the password? 第一题&#xff1a; 国产化&#xff1a; 下载…

DEJA_VU3D - Cesium功能集 之 104-攻击箭头(标绘+编辑)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,…

FreeRTOS:中断配置

目录 一、Cortex-M 中断1.1中断简介1.2中断管理简介1.3优先级分组定义1.4优先级设置1.5用于中断屏蔽的特殊寄存器1.5.1PRIMASK 和 FAULTMASK 寄存器1.5.2BASEPRI 寄存器 二、FreeRTOS 中断配置宏2.1configPRIO_BITS2.2configLIBRARY_LOWEST_INTERRUPT_PRIORITY2.3configKERNEL_…

Class 01 - R语言介绍及部分功能演示

Class 01 - R语言介绍及部分功能演示 教程介绍功能演示数据导入 R语言&Python对比在数据科学中的不同优势 教程介绍 在本章中&#xff0c;将学习到编程的新概念&#xff0c;以及如何使用R语言来做数据的分析。 我们先谈谈计算机编程吧&#xff0c;计算机编程是指向计算机…

计算机网络学习笔记-数据链路层

目录 概述 三个功能 封装成帧 透明传输 差错检测 点对点协议PPP 三个组成部分 帧格式 透明传输 工作状态 使用广播信道的局域网 以太网 两个主要标准 高速以太网&#xff08;速率 > 100Mb/s&#xff09; MAC层&#xff1a; 集线器 交换机 自学习和转发帧 生…

tkinter+re实现百度网盘分享链接自动跳转

目录 一、背景 二、需求分析 三、实现 三、打包 四、测试 一、背景 相信大家使用百度网盘的时候都会去一些链接网站吧&#xff0c;比如下面这个网站 这个网站具体实现的功能是&#xff1a;管理员上传百度网盘链接&#xff0c;用户点击复制链接按钮可以将百度网盘的分享链…

线性结构-数组

数组(Array)是最简单的数据结构&#xff0c;是由有限个相同类型的变量或对象组成的有序集合。因为数组中各元素之间是按顺序线性排列的&#xff0c;所以数组是一种线性数据结构。 数组是一类物理空间和逻辑形式都连续的线性数据结构&#xff1a; 数组用唯一的名字标识&#xf…

输出数字的位数(C语言)以及逆序输出

#include <stdio.h>int main() {int N;int i 0;scanf("%d",&N);int a[5];int j;while(N > 0){a[i] N%10;i;N N/10;}printf("这个数字是%d位数\n",i); for(j 0;j < i;j){printf("%d",a[j]);} } 原题如下&#xff1a;

并发编程08:原子操作类

文章目录 8.1 基本类型原子类8.1.1 常用API简介8.1.2 Case 8.2 数组类型原子类8.2.1 常用API简介8.2.2 Case 8.3 引用类型原子类8.4 对象的属性修改原子类8.4.1 使用目的8.4.2 使用要求8.4.3 Case 8.5 原子操作增强类原理深度解析8.5.1 常用API8.5.2 面试题8.5.3 点赞计数器8.5…

读书笔记-《ON JAVA 中文版》-摘要15[第十五章 异常]

文章目录 第十五章 异常1. 异常概念2. 基本异常2.1 基本异常2.2 异常参数 3. 异常捕获3.1 try 语句块3.2 异常处理程序3.3 终止与恢复 4. 自定义异常4.1 自定义异常 5. 异常声明6. 异常捕获6.1 捕获所有异常6.2 多重捕获6.3 栈轨迹6.4 重新抛出异常6.5 精准的重新抛出异常 6.6 …

ExpressGridPack Crack快速电子表格

ExpressGridPack Crack快速电子表格 ExpressEditors库 外壳对话框-对话框窗体不会出现在活动监视器中。 TdxVisualRefinements.PPadding属性对dxTokenEdit没有影响。 Express库 TdxVisualRefinements.PPadding属性对dxTokenEdit没有影响。 ExpressQuantumTreeList套件 TcxTreeL…

二层交换机和三层交换机到底区别在哪?

你好&#xff0c;这里是网络技术联盟站。 今天我们谈谈二层交换机和三层交换机。 二层交换机的概念和特点 二层交换机是一种工作在数据链路层的网络设备&#xff0c;主要功能是根据数据帧中的MAC地址进行转发&#xff0c;并将这些MAC地址与对应的端口记录在自己内部的一个地…

IDA常用宏定义函数

一.引言 做题目遇到了几个神奇的函数. SDWORD1(x), SDWORD2(x), SHIDWORD(x) 通过查询得知是IDA的宏定义函数 宏定义本身类似字符串替换,假设#define x 666 只是编译器在预处理阶段进行宏展开,将所有的x替换为666,然后再进行编译 二.IDA宏定义头文件 可以在路径\IDA_Pro_7.7…

Dubbo2.7 纯注解使用+ Nacos + Springboot 整合集成

Dubbo2.7 纯注解使用 NacosSpringboot 环境准备篇相关依赖nacos准备代码编写服务提供者服务使用者整体结构图 结果 常规操作篇服务分组服务版本参数传递泛化调用参数校验只订阅延迟暴露服务端异步回调多协议复用多注册中心本地存根 服务治理篇超时时间重试并发控制权限控制服务…

css04笔记

目录 盒子模型 5.7 外边距折叠现象 – ① 合并现象 5.8 外边距折叠现象 – ② 塌陷现象 5.9 行内元素的margin和padding无效情况 一、结构伪类选择器 &#xff08;了解&#xff09;nth-of-type结构伪类选择器 二、伪元素 三、标准流 四、浮动 浮动的代码&#xff1a; …