网站数据加密之Hook通用方案

news2025/4/22 12:15:34

文章目录

  • 1. 写在前面
  • 2. 请求分析
  • 3. 编写Hook
  • 4. 其他案例

【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章

1. 写在前面

  分析网站开发爬虫的时候,像头部信息参数加密与请求参数加密很常见,但是接口返回数据加密也不会少!作者过往的文章中数据加密的案例就不下三个,感兴趣的可以翻看作者早期的文章

那么好!本期作者也是找到了多个网站,均为响应数据加密。将针对此类场景做一个深度分析与讲解,并给出一个绝大部分场景下能够通杀的极简Hook方案,来辅助我们快速定位到解密入口

需要自行分析及学习的小伙伴可以向作者获取具体的网站集合(数据响应加密类网站

2. 请求分析

首先,打开网站点击下一页,进行一个发包调试,请求信息如下所示:

在这里插入图片描述
接口响应JSON中的data字段可以看到是一段密文。这里大家需要知道的一点就是(尤其新手小白),但凡这种情况,尽管它的网络传输都是通过密文在传输,但前端是一定有相应解密算法的,最终我们看到的页面正常数据都是通过算法解密再渲染到HTML中呈现给用户浏览的

3. 编写Hook

既然在上面我们知道接口返回的是JSON格式的数据,那么我们在编写Hook的时候直接在这上面操作。因为它后端返回这串含加密数据的JSON,前端就需要获取data字段进行解密,在此之前会将它转换成对象格式

所以我们需要编写一段极简的Hook脚本,具体代码如下所示:

var data_parse = JSON.parse;
JSON.parse = function (params){
    debugger;
    console.log("request data:",params);
    return data_parse(params);
}

Hook脚本可以直接放到控制台运行,只要响应的密文数据是JSON格式,上述Hook方案就会立马断住,将分别拦截到加密前与解密后的数据,如下所示:

在这里插入图片描述

在上面成功Hook到了加密数据响应,这里继续执行往下走,成功拦截解密数据,如下所示:

在这里插入图片描述

这个时候,密文如何解密是我们需要关注的!需要分析一下堆栈调用,找到具体的解密入口。然后剩下的就是扣代码算法还原了!如下所示er就是解密方法:

在这里插入图片描述

这里需要注意的是,解密数据Hook到之后,跟栈从前去查看就行,自下而上为入栈加密到出栈解密

4. 其他案例

既然说这是一个通杀的解决思路与方案,当然不会只是说说而已!这里作者也是找了多个网站的案例,它们的特征均为接口响应数据加密

接下来同样使用上面的极简Hook拦截,下面我们看一个的是一个Gov相关网站,点击翻页发包,显示响应数据是一堆密文,如下所示:

在这里插入图片描述

这里我们使用Hook脚本进行拦截,如下所示:

在这里插入图片描述

如上Hook到加密数据,继续执行再次拿到解密数据,如下所示:

在这里插入图片描述

找解密入口,这里我们跟一下栈,来到解密调用的地方,如下:

在这里插入图片描述

下个断点看看,断住后我们直接进入到上图中的b方法内部,查看具体的解密逻辑。可以看到很明显的AES.decrypt解密代码,如下所示:

decrypt

是不是就可以借助Hook辅助我们快速定位到数据的解密入口!接下来我们再看看其他的案例,本期作者不会讲到具体的加密算法还原、分析、甚至是扣代码。本文中的所有网站案例数据解密的还原难度还是很简单的,所有大家感兴趣可以自行研究!

下面我们来看看另一个网站,同样接口数据加密,如下所示:

在这里插入图片描述

可以看到接口响应数据是密文,Hook一下,如下所示:

在这里插入图片描述

最后我们再来看一个示例,这是一个图片网站,我们点击翻页查看接口加载,如下所示:

1696040

启动Hook,看一下是否可以拦截到加密数据,如下所示:

在这里插入图片描述

拦截到密文数据,继续执行一下,照常Hook解密数据,如下所示:

在这里插入图片描述

Hook到解密数据的时候我们就可以跟栈,去查看解密调用的入口,如下所示:

在这里插入图片描述

可以看到上图解密的时候,获取了JSON数据内的result字段,这个字段就是接口响应的加密JSON内的密文数据!

至此,针对网站接口响应数据加密的类似场景,以上的Hook方案或许能够成为你的好帮手!

  好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章

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

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

相关文章

Python进阶学习:Pickle模块--dump()和load()的用法

Python进阶学习:Pickle模块–dump()和load()的用法 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您…

【c语言】探索联合和枚举---解锁更多选择

前言 上一篇 讲解的是结构体相关知识,接着本篇主要讲解的是 联合和枚举 相关知识 结构体、联合体和枚举都属于 自定义类型。 那么接下来就跟上我的节奏,准备发车~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误&#xf…

网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》 DHCP协议 一、简介二、分配方式1)自动分配2&#xff0…

C++笔记(六)--- 静态成员变量/函数(static)

目录 C语言中静态变量 C静态成员变量 C静态成员函数 C语言中静态变量 1.函数内部用static修饰的变量,只能在此函数使用,但所修饰的变量不随函数释放而释放,下次调用时的值仍为上次结束时的值2.static修饰的全局变量只能在其定义的文件使用…

DAY9-防病毒AV概述

DNS过滤 URL过滤和DNS过滤对比

clickhouse 大表数据归档处理解决办法

本文作者为 360 奇舞团前端开发工程师 李彬 一、需求场景 基于目前项目在各个应用上的数据采集,尤其是性能监控上的采集,数据量越来越大,例如pv数据的采集表三个月的数据量已经在3亿,数据量小的也有几百万,但是目前的常…

浅谈 Linux fork 函数

文章目录 前言fork 基本概念代码演示示例1:体会 fork 函数返回值的作用示例2:创建多进程,加深对 fork 函数的理解 前言 本篇介绍 fork 函数。 fork 基本概念 pid_t fork(void) fork 的英文含义是"分叉",在这里就是 …

TypeScript+React Web应用开发实战

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在现代Web开发中,React和TypeScrip…

嵌入式学习day25 Linux

进程基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息(根据CPU占用率排序&a…

54.仿简道云公式函数实战-文本函数-LOWER

1. LOWER函数 将一个文本字符串中的所有大写字母转换为小写字母 2. 函数用法 LOWER(text) 3. 函数示例 将一个文本字符串中的所有大写字母转换为小写字母。 4. 代码实战 首先我们在function包下创建text包,在text包下创建LowerFunction类,代码如下…

Unity中URP实现水体(水的焦散)

文章目录 前言一、原理1、 通过深度图,得到 对应像素 在 世界空间下的Z值2、得到模型顶点在 观察空间 下的坐标3、由以上两点得到 深度图像素 对应的 xyz 值4、最后,转化到 模型本地空间下,用其对焦散纹理采样 二、实现1、获取深度图2、在顶点…

Kali Linux下载与安装

目录 1 kali官网下载镜像文件 2 VMware打开kali linux文件 3 启动kali-linux-2023.4操作系统 1 kali官网下载镜像文件 kali官网:https://www.kali.org/get-kali/#kali-platforms 进入kali官网主页后看到如图所示界面,左边“Installer Images”界面是…

C++:模版初阶 | STL简介

创作不易,感谢支持!! 一、泛型编程思想 如何实现一个通用的交换函数呢? 注:其实swap函数在C的标准库提供了,不需要自己写,这边只是举个例子 void Swap(int& left, int& right) { in…

Linux和Windows集群中部署HTCondor

目录 1、集群架构 2、HTCondor版本 3、Linux系统安装 3.1、HTCondor安装 3.2、中央管理节点配置 3.3、其他节点配置 4、Windwos系统安装 5、安全配置 6、参考 1、集群架构 操作系统IP地址1*Ubuntu22.04192.168.1.742Ubuntu22.04192.168.1.603Ubuntu22.04192.168.1.6…

Ansys Lumerical | 自发参量下变频 (SPDC) 光子源

附件下载 联系工作人员获取附件 此示例演示了如何对真实的光子源进行建模,并将其用作 qINTERCONNECT 的输入。用直波导中一个长度为L且具有χ ( 2 ) 非线性的局部区域计算I型SPDC过程的光子产生速率和波函数,其中泵浦光子被转换为信号和闲置光子对&…

10.广域网技术

1. PPP实验点这里(拓扑代码) 2. PPPoE配置实验点这里(拓扑代码) 目录 一、广域网二、PPP协议三、PPP链路建立过程1-LCP(链路协商)四、PPP链路建立过程2-PAP/CHAP(认证协商,可选&…

基于x86架构的OpenHarmony应用生态挑战赛等你来战!

为了更快速推进OpenHarmony在PC领域的进一步落地,加快x86架构下基于OpenHarmony的应用生态的繁荣,为北向应用开发者提供一个更加便捷的开发环境,推动OpenHarmony北向应用开发者的增加,助力OpenHarmony在PC领域实现新的突破&#x…

工业智能网关的实际应用及其带来的变革-天拓四方

工业智能网关是一种集数据采集、传输、处理和分析于一体的智能化设备。它能够实现对工业现场各种传感器、执行器等设备的数据进行实时采集,并通过网络传输到云端或本地数据中心进行分析处理。同时,工业智能网关还具备边缘计算能力,能够在本地…

六、OpenAI之嵌入式(Embedding)

嵌入模式 学习怎么将文本转换成数字,解锁搜索等案例。 新的嵌入模型 text-embedding-3-small 和 text-embedding-3-large,是目前最新的并且性能最好的嵌入模型,成本低,支持多语言,拥有控制所有大小的新参数 1. 什么是…

Halcon 求孔洞的大小和数量

文章目录 适用场景汽车按钮案例 适用场景 在工业中可以利用孔洞的多少和孔洞的大小来分析出产品的缺陷问题,例如一个产品有8个孔洞,孔洞多和少都会被识别为不合格产品,或者求出孔洞的面积,如果孔洞的大小超出一定的范围将视为不合…