爬虫逆向非对称加密和对称加密案例

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!!

案例--aHR0cHM6Ly9jcmVkaXQuaGxqLmdvdi5jbi94eWdzL3l6d2ZzeHF5bWQv

第一步:分析页面、请求方式和响应内容

可以看出,请求参数和响应内容均为密文,且不能直观看出是哪一种加密方式。那么我们进行逆向解析,打断点进行分析。

第二步:请求页面,并分析请求,进行逆向解析操作

在XHR/fetch Breakpoint 进行 新增 当前请求网址,这样重新请求时,即可直接停止,方便进行分析。同时我们可以看到 call stack 中显示请求顺序。我们可以往回找一找。在 【search】 中可以看出。定义了 变量 data 且赋予 空对象,但是,经过请求data 中已经有了数据,其中有两个值,密文 saltsign 并且 salt 和请求参数、响应的密文很像可以暂定是相同加密方式。那就先解决 saltsign 的加密

第三步:逆向解析找到 data ,salt,sign

逆向解析时可以看到 含有数据的data 被当做参数传入方法里。其中_0x493352 是data ,并且该方法中很多地方都用到了data。

那我们可以先找一下 salt 和sign。再找一下data用在方法中的位置

第四步: 分析sign

通过分析可以知道 sign使用  sha256加密。

第五步: 分析salt

通过分析可以知道 salt使用非对称加密方法。

第五步: 分析data 

通过分析可以知道 data使用 DES3对称和hex_md5加密。

第六步:代码块分享

# -*- coding:utf-8 -*-
# @Time : 2024/3/1 15:05
# @Author: 水兵没月
# @File : XXXXX.py
# @Software: PyCharmimport timeimport execjs
import requestsfor p  in range(1, 2):t = int(time.time()*1000)sgin_parse = "pageSize=10&pageStart={}&q=&tyshxydm=&key={}".format(p,t)salt_parse = twith open('./XXXXX.js', 'r', encoding='utf-8')as f:html = ''.join(f.readlines())f.close()ctx = execjs.compile(html)sgin_js = ctx.call('SHA256', sgin_parse)salt_js = ctx.call('salt_encrypt_node', salt_parse)parse = {"q":"","tyshxydm":"","pageStart":p,"pageSize":10,"sign":sgin_js,"salt":salt_js}parse_js = ctx.call('jiemi_encrypt', parse)s = requests.session()url = "https://XXXX.XXXX.XXX.XX/ospapi/cedit/yzwfcxczysmdxx"headers = {"Content-Type":"application/json","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",}res = s.post(url=url, data=parse_js, headers=headers, verify=False,  proxies=eval(str(get_proxy(4)).replace('https', 'HTTPS').replace('http', 'HTTP')))    # impersonate="chrome101",res.encoding='utf-8'text = res.textres_js = ctx.call('jiemi_decrypt', text.strip('"'))print(res_js)print('----------------')
/* =====================
#@Time : 2024/3/1 17:09
#@Author: 水兵没月
#@File : XXXXX.js
#@Software: PyCharm
=======================*/const des3iv='12345678';
const CryptoJS = require('crypto-js')
// const JSEncrypt = require('jsencrypt')
const NodeRSA  = require('node-rsa')/*
注意!!!!!!!!还有部分代码,可以直接扣代码即可。很简单很简单,需要耐心。
*/
function jiemi_encrypt (message) {var keyHex = CryptoJS.enc.Utf8.parse(getkey());var encrypted = CryptoJS.TripleDES.encrypt(JSON.stringify(message), keyHex, {iv: CryptoJS.enc.Utf8.parse(des3iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return encrypted.toString();}function jiemi_decrypt(message) {var keyHex = CryptoJS.enc.Utf8.parse(getkey());var decryptData = CryptoJS.TripleDES.decrypt(message, keyHex, {iv: CryptoJS.enc.Utf8.parse(des3iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});var tempStr = decryptData.toString();return decryptData.toString(CryptoJS.enc.Utf8);}function salt_encrypt_node(_0x249e42) {var _0x70805e = "-----BEGIN PUBLIC KEY-----"+ "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMdek/OvlEBhsSfIoDEbnwUPEwn3WbI+WY4O/0nrDnL8DHkNdeZytcfhjX4nV713FYKe7EeEDQVmRlU2e//h/eECAwEAAQ=="+ "-----END PUBLIC KEY-----";var nodersa = new NodeRSA(_0x70805e);nodersa.setOptions({encryptionScheme: 'pkcs1'})return nodersa.encrypt(_0x249e42, 'base64');
}

 仅作为笔记记录,如有问题请各位大佬来指导

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信: 文章提供整体代码、解释、测试效果截图、整体测试工程下载: 主要包含的知识有:下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…

【游戏分析】某游戏 无敌+代码

0x1 线索: 血量 1,开启DXF 2. OD附加 3. ce搜索 我们要实现无敌的思路是,把减去血量的逻辑给移除,这样就达到了无敌的效果 我们先找到血量的地址 535,改变一次血量,前面2个绿色的都是GameRpcs.dll中的地址,我们忽略掉。.. 这2个&#xff…

【服务器uwsgi + flask + nginx的搭建】

目录 服务器uwsgi flask nginx的搭建1. 安装必要的软件2. 启动nginx服务3. 测试Nginx4. 配置uwsgi和flask5. 配置nginx 服务器uwsgi flask nginx的搭建 1. 安装必要的软件 安装Python、uWSGI、Flask 和 Nginx。 # Ubuntu 安装命令 sudo apt-get update sudo apt-get ins…

MySQL-主从复制:概述、原理、同步数据一致性问题、搭建流程

主从复制 1. 主从复制概述 1.1 如何提升数据库并发能力 一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并…

【引子】C++从介绍到HelloWorld

C从介绍到HelloWorld 一、C的介绍1. 简介2. 应用场景3. C的标准![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3efb0f207f647729b92c0b5bcd4b330.png)4. C的运行过程 二、Visual Studio的安装1. 什么是Visual Studio2. Visual Studio的安装 三、完成HelloWorld1.…

突破编程_前端_SVG(概述)

1 什么是 SVG SVG,全称可缩放矢量图形(Scalable Vector Graphics),是一种基于 XML(可扩展标记语言)的矢量图像格式。这种图像格式的主要特点是它描述的是矢量图形,而不是基于像素的位图图像。因…

RabbitMQ的交换机与队列

一、流程 首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图 黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲&am…

Java初始——IDEA-web的启动

Tomcat 文件夹作用 bin 启动 关闭的脚本文件 conf 配置 lib 依赖的jar包 logs 日志 temp 临时文件 webapps 存放的网站 Maven 1.在javaweb中,需要使用大量的jar包,手动导入 2.Maven 架构管理工具 核心:约定大于配置 必须按照规则 web idea-we…

蓝桥杯考前复习三

1.约数个数 由乘法原理可以得出&#xff1a; import java.util.*; public class Main{static int mod (int)1e9 7;public static void main(String[] args){Map<Integer,Integer> map new HashMap<>(); //创建一个哈希表Scanner scan new Scanner(System.in);i…

【Figma】安装指南及基础操作

先前做UI设计一直都是用PS等绘图软件设计&#xff0c;但发现在纠结像素和排版问题上会花很多时间&#xff0c;再加上AI没来得及上手&#xff0c;就需要迅速出成图&#xff0c;此时通过论坛发现了figma&#xff0c;基本上可以满足足够的需求&#xff0c;并且可以在windows系统上…

绿联 安装Redis内存数据库

绿联 安装Redis内存数据库 1、镜像 redis:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、命令 命令说明 redis-server 启动服务用&#xff0c;不可删除&#xff1b; /etc/redis/redis.conf 添加此命令启用自定…

免费SSL通配符证书/SSL泛域名证书获取教程

我们先基本了解什么是SSL证书以及其作用。SSL证书是一种数字证书&#xff0c;它通过为网站提供身份验证和数据加密服务&#xff0c;从而保护网站的用户信息安全。当我们在浏览器的地址栏看到“https”和绿色锁标志时&#xff0c;就表示该网站使用了SSL证书。 那么什么又是通配…