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

文章目录

  • 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.mfbz.cn/a/416570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ArcgisForJS如何使用ArcGIS Server发布的GP服务?

文章目录 0.引言1.ArcGIS创建GP服务2.ArcGIS Server发布GP服务3.ArcgisForJS使用ArcGIS Server发布的GP服务 0.引言 ArcGIS for JavaScript(或简称AGJS)是一个强大的工具,它允许开发者使用JavaScript在Web浏览器中创建和运行ArcGIS应用程序。…

Leetcoder Day29| 贪心算法part03

1005.K次取反后最大化的数组和 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。) 以这种方式修改数组后&a…

【数据结构】双链表解析+完整代码(创建、插入、删除)

3.2 双链表 3.2.1 双链表的定义 定义 单链表的缺点:无法逆向操作,插入删除时只能从头开始遍历,很不方便。 双链表:每个结点都定义两个指针prior和next,分别指向前驱和后继,可进可退。 typedef struct DNod…

STM32F103学习笔记(七) PWR电源管理(原理篇)

目录 1. PWR电源管理简介 2. STM32F103的PWR模块概述 2.1 PWR模块的基本工作原理 2.2 电源管理的功能和特点 3. PWR模块的常见应用场景 4. 常见问题与解决方案 1. PWR电源管理简介 PWR(Power)模块是STM32F103系列微控制器中的一个重要组成部分&…

阿里云短信验证笔记

1.了解阿里云的权限操作 进入AccessKey管理 选择子用户 创建用户组和用户 先创建用户组,建好再进行权限分配 添加短信管理权限 创建用户 创建好后的id和密码在此处下载可以得到 2.开通阿里云短信服务 进行申请,配置短信模板 阿里云短信API文档 短信服务…

xss过waf的小姿势

今天看大佬的视频学到了几个操作 首先是拆分发可以用self将被过滤的函数进行拆分 如下图我用self将alert拆分成两段依然成功执行 然后学习另一种姿势 <svg id"YWxlcnQoIlhTUyIp"><img src1 οnerrοr"window[eval](atob(document.getElementsByTagNa…

zk和etcd的读一致性对比

背景 zk和etcd都是日常我们用到的分布式一致性的组件集群&#xff0c;不过他们在读一致性上还是有一些差别的&#xff0c;本文就来对比一下 zk和etcd的读一致性对比 如果读客户端没有通过zk或者etcd自带的watcher监听的方式监听某个写客户端写入的内容&#xff0c;而是依赖写…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

力扣每日一题 统计可能的树根数目 换根DP

Problem: 2581. 统计可能的树根数目 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 时间复杂度: O ( n m ) O(nm) O(nm) 空间复杂度: O ( n m ) O(nm) O(nm) Code class Solution {List<Integer>[] g;// 邻接表Set<Long> se…

安泰电压放大器怎么用

电压放大器是一种常见的电子设备&#xff0c;用于放大电压信号。它是许多电子系统中的关键组件之一&#xff0c;可以增加电压信号的幅度&#xff0c;以便于后续的处理和驱动其他设备。以下是电压放大器的使用方法&#xff1a; 确定需求&#xff1a;首先&#xff0c;明确你的需求…

Jquery操作DOM对象

文章目录 目录 文章目录 本章目标 一.DOM操作分类 二.JQuery中的DOM操作 内容操作 属性值操作 节点操作 节点属性操作 节点遍历 总结 本章目标 使用Jquery操作网页元素使用JQuery操作文本与属性值内容使用JQuery操作DOM节点使用Jquery遍历DOM节点使用JQuery操作CSS-DOM 一…

linux下 将指定网卡名加入udp组播代码示例(端口复用)

linux下可通过指定网卡名字来将网卡加入组播 一般来说网卡名为 eth0,eth1之类的,具体的需要通过ifconfig查看 具体逻辑就是通过指定的网卡名来获取网卡ip,后面就跟普通的创建udp套接字一样了,需要注意的是将网卡绑定到组播最好启用地址重用来避免端口相同导致的失败 SO_REUSE…

Python程序打包成exe可执行文件的常用方法

在Python中,您可以使用一些工具将您的Python程序打包成可执行文件(.exe)。以下是一些常用的工具: PyInstaller: PyInstaller是一个流行的工具,它可以将Python脚本打包成独立的可执行文件,支持Windows、Linux和Mac。您可以使用以下命令安装PyInstaller: pip install pyin…

疾控污水采样设备需具备云控功能吗

疾控污水采样设备是否需要具备云控功能&#xff0c;是一个值得深入探讨的问题。从当前的技术发展趋势和实际应用需求来看&#xff0c;具备云控功能的疾控污水采样设备具有显著的优势和必要性。 第一&#xff0c;云控技术的应用可以实现远程监控和管理。在污水采样过程中&#…

测试环境搭建整套大数据系统(七:集群搭建kafka(2.13)+flink(1.13.6)+dinky+hudi)

一&#xff1a;搭建kafka。 1. 三台机器执行以下命令。 cd /opt wget wget https://dlcdn.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar zxvf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.1/config vim server.properties修改以下俩内容 1.三台机器分别给予各自的broker_id…

在Ubuntu中安装Anaconda和创建虚拟环境(保姆级教学,值得借鉴与信任)

一、下载linux版本的Anaconda 1.方法一&#xff1a;官网下载 https://www.anaconda.com/download#downloads2.方法二&#xff1a;在清华大学开源软件镜像站里下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/最后选择了Anaconda3-2022.10-Linux-x86_64.sh进行下…

AUTOMATION 自动化控制

Ansible介绍: 部署ansible:yum -y install ansible 批量管理服务器的工具2015年被红帽公司收购使用Python语言编写的基于ssh进行管理&#xff0c;所以不需要在被管端安装任何软件 ansible在管理远程主机的时候&#xff0c;主要是通过各种模块进行操作的 配置ansible管理环境: …

使用js写一个登录验证码效果

面试题 登录页面获取验证码的功能&#xff0c;用户点击获取验证码按钮(id”btn1”)&#xff0c;按文字变为“(N)后获取验证码”&#xff0c;N为倒计对秒数&#xff0c;从 60 开始&#xff0c;每秒减一&#xff0c;减到 0的时候&#xff0c;按钮文字变为“获取验证码”&#xff…

Python爬虫项目实战案例-批量下载网易云榜单音乐保存至本地

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

Linux系统Docker部署StackEdit Markdown并实现公网访问本地编辑器

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…