python爬虫加解密分析及实现

第一种:

1、找到加密的接口地址,通过加密的接口地址全局搜索

2、通过打断点的方式,操作页面,跑到断点处时,即可找到加密串,如图二;

3、找到用的是哪种加密方式,如: crypto-js提供的AES加/解密方法,ECB模式   ,找到对应方式的加密语言加解密即可。

 第二个案例参考:

第二种:

除了加解密外,还有一些签名是不能找现成的对标语言的,需要引用他们自己写的JS,前提需要找到他们关联的JS文件,然后拉下来。

引用方法;

#拉下来的sign.js文件如下:
function f(t) {for (var e = p ? "0123456789ABCDEF" : "0123456789abcdef", n = "", a = 0; a < 4 * t.length; a++)n += e.charAt(t[a >> 2] >> a % 4 * 8 + 4 & 15) + e.charAt(t[a >> 2] >> a % 4 * 8 & 15);return n
}
function hex_hmac_md5(t, e){return f(u(t, e))
}
function sign(t) {var i = hex_hmac_md5("GTO2OINTERFACE2017#@!%88", t);return i
}

#如何加载JS文件: runjs.py
import execjs2 import sys3 import os4 5 curPath = os.path.abspath(os.path.dirname(__file__))6 rootPath = os.path.split(curPath)[0]7 sys.path.append(rootPath)8 # 运行js文件9 def js_from_file():
10     with open(os.path.join(os.path.abspath(".."), "JSConfig/des3.js"), "r", encoding="UTF-8") as file:
11         result = file.read()
12         context = execjs.compile(result)
13         return context
14 
15 def js_from_file1():
16     with open(os.path.join(os.path.abspath(".."), "JSConfig/sign.js"), "r", encoding="UTF-8") as file:
17         result = file.read()
18         context = execjs.compile(result)
19         return context
20 
21 def js_from_md():
22     with open("../jsConfig/md.js", "r", encoding="UTF-8") as file:
23         result = file.read()
24         context = execjs.compile(result)
25         return context
26 
27 
28 if __name__ == '__main__':
29     md = js_from_md().call("md")
30     print(md)

 #request.py中通过加载JS的方法去调用JS文件中的方法获取签名。# 获取签名def sign(self, request, requestType):data = XiangRuiBao().data(request, requestType)sign = js_from_file1().call("sign", data) #通过加载JS的方法去调用JS文件中的方法return sign# 定义加密方法def encrypt(self, data):bytes_str = str(data).encode('utf-8')  # 将data转换为字节bas = base64.b64encode(bytes_str).decode('ascii')request1 = '{"requestPayload":"' + bas + '"}'encrypted = js_from_file().call("encrypt", self.key, request1)  #通过加载JS的方法去调用JS文件中的方法return encrypted

 参考链接:

https://blog.csdn.net/zhinian1204/article/details/124112512 加密文章

https://blog.csdn.net/cuilun000/article/details/125756232 加密文章

https://blog.csdn.net/qq_45664055/article/details/123348485?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169863513816800188585983%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169863513816800188585983&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-123348485-null-null.142^v96^pc_search_result_base9&utm_term=python%20ECB%E8%A7%A3%E5%AF%86&spm=1018.2226.3001.4187 AES加解密代码

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import padclass EncryptDate:def __init__(self, key):# 初始化密钥self.key = key# 初始化数据块大小self.length = AES.block_size# 初始化AES,ECB模式的实例self.aes = AES.new(self.key.encode("utf-8"), AES.MODE_ECB)# 截断函数,去除填充的字符self.unpad = lambda date: date[0:-ord(date[-1])]def fill_method(self, aes_str):'''pkcs7补全'''pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7')return pad_pkcs7def encrypt(self, encrData):# 加密函数,使用pkcs7补全res = self.aes.encrypt(self.fill_method(encrData))# 转换为base64msg = str(base64.b64encode(res), encoding="utf-8")return msgdef decrypt(self, decrData):# base64解码res = base64.decodebytes(decrData.encode("utf-8"))# 解密函数msg = self.aes.decrypt(res).decode("utf-8")return self.unpad(msg)if __name__ == '__main__':# key的长度需要补长(16倍数),补全方式根据情况而定,未补齐会报错# key字符长度决定加密结果,长度16:加密结果AES(128),长度32:结果就是AES(256)eg = EncryptDate("asdfghjklqwertyu")# 加密字符串长同样需要16倍数:需注意,不过代码中pad()方法里,帮助实现了补全(补全方式就是pkcs7)en = eg.encrypt("测试数据")de = eg.decrypt(en)print(f"加密结果:{en}")print(f"解密结果:{de}")

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

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

相关文章

Unity Apple Vision Pro 保姆级开发教程-准备阶段

视频教程&#xff1a; Unity PolySpatial 开发Apple Vision Pro教程, 三十分钟快速了解 Unity Vision Pro 中文课堂教程地址&#xff1a; Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 开发Apple Vision Pro 使用原生开发和unity 开发有什么区别 如果你的项目需要…

python【装饰器】

装饰器&#xff08;decorators&#xff09;是 Python 中的一种高级功能&#xff0c;它允许动态地修改函数或类的行为。装饰器也称装饰函数&#xff0c;是一种闭包的应用&#xff1a;它接受一个函数作为参数&#xff0c;并返回一个新的函数或修改原来的函数。 基本语法 其主要是…

解决方案:总结描述下知识蒸馏、量化、剪枝的区别

文章目录 一、现象二、解决方案 一、现象 在算法中&#xff0c;时而会听到知识蒸馏、量化、剪枝这三个专业名词&#xff0c;进行记录 二、解决方案 知识蒸馏&#xff1a;一般将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来&#xff0c;传递给参数量小、学习能力弱…

LSTM反向传播及公式推导

先回顾一下正向传播的公式: 化简一下: 反向传播从下到上逐步求偏导: 对zt求偏导(预测值和标签值相减): zt对未知数wt,ht,bt分别求偏导: ht对ot,Ct求偏导: ot对Net0求偏导: Net0对w0,b0求偏导: .... 总体的思路就是那个公式从下到上逐步对未知数求偏导: 下面是总体的流程…

docker 资源限制+调优详解

容器资源限制介绍 下面我将详细讲解 Docker 的各种资源限制及其在生产环境中的实际应用案例。我们将逐一探讨 CPU、内存、磁盘 I/O 和网络带宽的限制&#xff0c;并提供具体的配置示例和解释。 1. CPU 限制 1.1 设置 CPU 份额 --cpu-shares&#xff1a;设置容器的 CPU 优先…

Nginx介绍+openresty配置

参考&#xff1a;资源下载 Nginx介绍openresty配置 nginx使用场景 1.什么是nginx性能高,官方测试5万并发连接;对cpu 内存资源消耗很低,而且运行非常稳定 免费 开源2.nginx应用场景1.http服务器静态资源 图片 js css 2.虚拟主机"虚拟"出多个主机, 域名80 www…

【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;心智理论(Theory of Mind,ToM)心智理论在心理学与神经科学中的重要性心智理论对理解同理心、道德判断和社交技能的重要性结论 &#x1f4af;乌得勒支大学研究对ChatGPT-4…

设计一个多格式文件压缩与解压系统

设计一个多格式文件压缩与解压系统 在现代软件开发中,文件压缩和解压缩是一个常见且重要的需求。无论是为了节省存储空间,还是为了提高文件传输的效率,掌握文件压缩和解压缩的技术都是每个开发者必备的技能。本文将详细介绍如何设计一个支持多种压缩格式的文件压缩和解压系…

【C++篇】类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略

文章目录 前言 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

redhat系列的yum源配置

一、Linux更改yum源为阿里云源 一&#xff09;原yum源备份 cp -rp /etc/yum.repos.d/CentOS-Base.repo{,.bak} cp -rp /etc/yum.repos.d/epel.repo{,.bak} 二&#xff09;更改为阿里云源  1、更改yum base源 下载新的CentOS-Base.repo 到/etc/yum.repos.d/ http://mirrors.al…

Android中的IntentService及其作用。

在Android开发中&#xff0c;处理后台任务是一个常见的需求。为了保证应用的流畅性和响应性&#xff0c;许多耗时操作需要在后台线程中执行。然而&#xff0c;直接管理后台线程可能会变得复杂且容易出错。为了简化这一过程&#xff0c;Android提供了IntentService&#xff0c;一…

软件设计模式------工厂方法模式

工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff0c;又称工厂模式&#xff0c;也叫虚拟构造器模式&#xff08;Virtual Constructor Pattern&#xff09;或多态工厂模式&#xff08;Polymorphic Pactory Pattern&#xff09;,属于类创建型模式。 我们知道…

WIFI实现透传+接线图

单片机通过TX接WIFI模块的RX将设置的AT代码写入WIFI模块&#xff08;连接WIFI调为设备模式&#xff08;有设备&#xff0c;路由&#xff0c;双模等模式&#xff09;&#xff09; WIFI模块将响应信号通过TX通过CH340发给PC的RX 通过STC-ISP或安信可串口调试助手查看响应信息 …

Golang | Leetcode Golang题解之第495题提莫攻击

题目&#xff1a; 题解&#xff1a; func findPoisonedDuration(timeSeries []int, duration int) (ans int) {expired : 0for _, t : range timeSeries {if t > expired {ans duration} else {ans t duration - expired}expired t duration}return }

速盾:cdn走国内要备案吗?

在当今互联网时代&#xff0c;CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;已经成为许多网站提高访问速度和稳定性的重要手段。然而&#xff0c;对于使用 CDN 走国内线路的网站来说&#xff0c;是否需要备案呢&#xff1f;这是许多网站管理员…

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址&#xff1a;https://gitee.com/zht639/my_gopkg autosql autosql 是一个简化数据库使用的模块&#xff0c;支持常见的数据库&#xff08;MySQL、PostgreSQL、SQLite、SQL Server&#xff09;。该模块不仅提供了数据库连接函数&#xff0c;还能自动生成数据表对应的结…

qt QGraphicsEffect详解

一、QGraphicsEffect概述 QGraphicsEffect通过挂接到渲染管道并在源&#xff08;例如QGraphicsPixmapItem、QWidget&#xff09;和目标设备&#xff08;例如QGraphicsView的视口&#xff09;之间进行操作来更改元素的外观。它允许开发者为图形项添加各种视觉效果&#xff0c;如…

基于netty实现简易版rpc服务-理论分析

1.技术要点 1.1 rpc协议 定义一个rpc协议类&#xff0c;用于rpc服务端和客户端数据交互。 1.2 netty粘包半包处理 由于数据传说使用tcp协议&#xff0c;rpc协议的数据在网络传输过程中会产生三种情况&#xff1a; 1&#xff09;刚好是完整的一条rpc协议数据 2&#xff09;不…

Java网络编程-简单的API调用

Get请求 - 无参数 安装依赖库 首先需要安装一个库&#xff1a; Okhttp3&#xff0c;这是一个非常流行的 HTTP 库&#xff0c;可以简单、快速的实现 HTTP 调用。 安装 Okhttp3 的方式是在 pom.xml 文件中增加依赖&#xff1a; <!-- https://mvnrepository.com/artifact/co…

【算法】哈希表:49.字母异位词分组

目录 1、题目链接 2、题目介绍 3、解法 初始化设定--图解 步骤图解 4、代码 1、题目链接 49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 3、解法 字母异位词的本质是字符相同但排列不同。因此&#xff0c;我们可以对字符串进行排序&#xf…