python实现压缩与解压(zlib)

news2024/10/7 10:17:39

本文将使用python的zlib与base64进行压缩与解压

其中base64模块用于对字节流与字符串的转换,zlib用于数据的压缩与解压

同时在后面附上在JS中遇到需要压缩解压的案例

解压代码:

import base64
import zlib

input_string = 'eJwlzT1OAzEQBeC7pJjSf1rHu0hTRKmQEB0HsLKTjcX6R/YYCQ7DNRAVp8k9MKJ6X/H03sFX8o8rKrh4pn8Efn/2kfD+/XP/+oQ1pET1nHviE3MdHciFQ+ztnFdCrSDXsIX0Une8MZf2IOX2ISIF7j6JS45yuN2CLMlIKH4jNCMqj1nU5ghl93zNNaKGGtrrE73RPtxyZYTe6O/T2ck45ZyB3sOKZnbGklkWo920kPNuvgp9nK1dlNWT0EIJdfgFbwpKlQ=='
# 将字符串解码为字节流
compressed_bytes = base64.b64decode(input_string)
# 解压缩字节流
decompressed_bytes = zlib.decompress(compressed_bytes)
# 将解压后的字节流解码为字符串
decompressed_string = decompressed_bytes.decode('utf-8')
print('result1:', decompressed_string)

压缩代码:

import base64
import zlib

input_string = "areaId=0&cateId=0&cityName=广州&dinnerCountAttrId=&optimusCode=10&originUrl=https://gz.meituan.com/meishi/pn2/&page=2&partner=126&platform=1&riskLevel=1&sort=&userId=754270772&uuid=28725e29921749e7a78f.1685590514.1.0.0"
# 将输入字符串编码为字节流
input_bytes = input_string.encode('utf-8')
# 使用 zlib.compress 方法进行压缩,level 参数指定压缩级别
compressed_bytes = zlib.compress(input_bytes, level=zlib.Z_BEST_COMPRESSION)
# 将压缩后的字节流进行 base64 编码
compressed_string = base64.b64encode(compressed_bytes).decode('utf-8')
print('result2:', compressed_string)

案例网站:aHR0cHM6Ly9nei5tZWl0dWFuLmNvbS9tZWlzaGkvcG4yLw==

目标:该案例网站中的token值

对这个网站(某团)有兴趣的可以看一下这篇文章JS逆向---获取某知名外卖平台数据(_token)_用js美团爬数据_云溪·的博客-CSDN博客

特征:在JS逆向中,将一大串字符串压缩为数组,然后在转为密文,这种加密方式大概率为进制流压缩

在下面案例中:

1、jc为待加密的请求头数据

2、在该代码中先是使用了deflate函数将请求头的数据转换为数组

3、转换为数组后调用iD进行数据加密返回一串密文

这里比较符合进制流压缩加密的特征,下面将尝试对压缩的数据进行解压

 过程:

1、将字符串解码为字节流

2、先解压该字节流

3、将解压后的字节流解码为字符串

import base64
import zlib

input_string = 'eJwlzT1OAzEQBeC7pJjSf1rHu0hTRKmQEB0HsLKTjcX6R/YYCQ7DNRAVp8k9MKJ6X/H03sFX8o8rKrh4pn8Efn/2kfD+/XP/+oQ1pET1nHviE3MdHciFQ+ztnFdCrSDXsIX0Une8MZf2IOX2ISIF7j6JS45yuN2CLMlIKH4jNCMqj1nU5ghl93zNNaKGGtrrE73RPtxyZYTe6O/T2ck45ZyB3sOKZnbGklkWo920kPNuvgp9nK1dlNWT0EIJdfgFbwpKlQ=='
compressed_bytes = base64.b64decode(input_string)
print(compressed_bytes)         # b'x\x9c%\xcd=N\x031\x10\x05\xe0\xbb\xa4\x98\xd2\x7fZ\xc7\xbbHSD\xa9\x90\x10\x1d\x07\xb0\xb2\x93\x8d\xc5\xfaG\xf6\x18\t\x0e\xc35\x10\x15\xa7\xc9=0\xa2z_\xf1\xf4\xde\xc1W\xf2\x8f+*\xb8x\xa6\x7f\x04~\x7f\xf6\x91\xf0\xfe\xfds\xff\xfa\x845\xa4D\xf5\x9c{\xe2\x13s\x1d\x1d\xc8\x85C\xec\xed\x9cWB\xad \xd7\xb0\x85\xf4Rw\xbc1\x97\xf6 \xe5\xf6!"\x05\xee>\x89K\x8er\xb8\xdd\x82,\xc9H(~#4#*\x8fY\xd4\xe6\x08e\xf7|\xcd5\xa2\x86\x1a\xda\xeb\x13\xbd\xd1>\xdcre\x84\xde\xe8\xef\xd3\xd9\xc98\xe5\x9c\x81\xde\xc3\x8afv\xc6\x92Y\x16\xa3\xdd\xb4\x90\xf3n\xbe\n}\x9c\xad]\x94\xd5\x93\xd0B\tu\xf8\x05o\nJ\x95'
decompressed_bytes = zlib.decompress(compressed_bytes)      # 
print(decompressed_bytes)       # b'"areaId=0&cateId=0&cityName=\xe5\xb9\xbf\xe5\xb7\x9e&dinnerCountAttrId=&optimusCode=10&originUrl=https://gz.meituan.com/meishi/pn2/&page=2&partner=126&platform=1&riskLevel=1&sort=&userId=754270772&uuid=28725e29921749e7a78f.1685590514.1.0.0"'
decompressed_string = decompressed_bytes.decode('utf-8')
print('result1:', decompressed_string)          # result1: "areaId=0&cateId=0&cityName=广州&dinnerCountAttrId=&optimusCode=10&originUrl=https://gz.meituan.com/meishi/pn2/&page=2&partner=126&platform=1&riskLevel=1&sort=&userId=754270772&uuid=28725e29921749e7a78f.1685590514.1.0.0"

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

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

相关文章

yum方式安装mysql 8.0.33失败,缺少依赖包

配置网络源 [rootlocalhost yum.repos.d]# ping www.163.com PING z163picipv6.v.bsgslb.cn (61.184.215.68) 56(84) bytes of data. 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq1 ttl128 time13.2 ms 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq2 tt…

造船码头行车限位器与驾驶室控制柜无线通讯

随着我国海洋交通的快速发展,船舶信息化管理的建设,无线通信资源的配置,将先进的无线通信技术引入水上交通安全的监管业务中已是大势所趋。码头安装(设备和系统的安装) 船舶下水后常停靠于厂内舾装码头, 以安装船体设备, 机电设备&#xff0c…

第6集丨JavaScript 使用原型(prototype)实现继承——最佳实战3

目录 一、原型继承与属性拷贝1.1 功能说明1.2 功能测试 二、多重继承2.1 功能实现2.2 功能测试 三、寄生式继承四、构造器借用4.1 简单实现4.2 进化版4.2.1 功能实现4.2.2 案例测试 五、借用构造器和原型复制六 综合案例6.1 需求说明6.2 代码实现 一、原型继承与属性拷贝 1.1 功…

免费的音频转文字软件这么多,音频转文字软件推荐有哪些?

在一次音频转文字工作者的聚会上,艾米和迈克正在探讨如何提高他们的工作效率。他们都深知手动转录音频文件的困难和耗时,因此开始讨论是否有一种音频转文字软件可以推荐。 迈克:嘿,艾米!我们都知道,音频转…

Scratch 星际飞船

Scratch 星际飞船 本程序主要增加了背景切换功能,飞船跟随鼠标移动,接触到右边的方块时切换到下一张背景,切换后飞船移动到左边,左边的椭圆则相反。随机生成另外两种飞船角色为背景,接触到边缘后移除。 图形化程序如下…

【算法与数据结构】150、LeetCode逆波兰表达式求值

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:我们常看见的表达式是中缀表达式(关于中缀表达式的定义可以参考前缀、中缀、后缀表达式&am…

0经验也能轻松设计商标logo的方法

如今,越来越多的人开始创业,而拥有一个好看的商标就显得尤为重要。但是,很多人并不具备设计技能,对于商标设计也是一头雾水。不过,现在有了一键logo设计应用,即使零经验的人也能轻松设计出自己满意的商标。…

IoT开发者为王,涂鸦智能硬核“靠边站”

文 | 智能相对论 作者 | 沈浪 6月底,全球化IoT开发平台服务商涂鸦智能开了个TUYA开发者大会,面向行业传达了两个关键的信息点: 1. 当前IoT领域的行业竞争不再局限于技术、渠道的单一纬度,开始演化为整体的生态之争。 2. 紧随行…

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 Proteus仿真小实验: STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 功能: 硬件组成:本系统由2个设备组成 设备1:STM32F103R6单片机 8位数…

GaussDB OLTP云数据库配套工具DRS

目录 一、前言 二、DRS定义与使用场景 1、DRS定义 2、DRS场景示意图 三、DRS核心功能 1、实时迁移管理 2、实时同步管理 3、备份迁移管理 4、数据订阅管理 5、实时灾备管理 四、小结 一、前言 华为GaussDB云数据库提供了配套的生态工具数据复制服务DRS。 DRS围绕云…

IO流学习09(Java)

解压缩流/压缩流: 解压缩流: 解压本质:把每一个ZipEntry按照层级拷贝到本地另一个文件夹中 注:Java只认zip格式 在正式写之前,先准备好压缩文件和解压完需要存放文件的文件夹 下面直接给出案例: pack…

步进电机的MATLAB仿真程序分享(采用了卡尔曼滤波,对定子电流进行估计,并估算出转子的位置和速度)

两相步进电机的连续时间延长卡尔曼滤波器仿真, 根据定子电流的噪声测量,估计定子电流以及转子位置和速度。 主程序: function MotorKalman % 两相步进电机的连续时间延长卡尔曼滤波器仿真 % 根据定子电流的噪声测量,估计定子电…

为什么InnoDB存储引擎选择使用B+tree索引结构?

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉欢迎光临🎉🎉🎉🎉🎉&…

CS231W assignment3 RNN

对作业进行一些形象的解释 首先是def rnn_step_forward: 这里的t时刻其实就是一个句子里面的单词数,为了方便会统一到一个最长长度,对于比这个长度短的部分用null进行填充,并且在方法内部会让Null不进行传播和梯度计算。 我们最…

Simpleitk简单应用-python版本

安装: pip install simpletik读取 目前主流的医疗图像格式是nifti格式,相比于dicom格式更加简单和更加容易读取和操作。后缀名为nii或者nii.gz(nii为原格式,gz结尾的是经过压缩格式,因为医疗图像的重复像素特别多,通…

【Hello mysql】 mysql的基本查询(二)

Mysql专栏:Mysql 本篇博客简介:介绍mysql的基本查询 mysql的基本查询(二) 将筛选出来的数据插入到数据库中(insertselect)聚合函数统计班级共有多少同学统计班级手机的qq号有多少统计本次考试去重的数学成绩…

Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).

Xcode真机调试时,出现了Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).,Xcode不支持iPhone的版本。升级Xcode太耗时,用了找支持SDK文件方式解决了此问题。下图是本地的SDK支持文件。 从GitHub下载了15.7的设备支持文件&#xff0c…

N-123基于springboot房屋租赁管理系统

开发工具:IDEA,jdk1.8 服务器:tomcat9.0 数据库:mysql5.7 前端:jsp、bootstrap 技术: springbootmybatis-plus 系统主要分前台和后台,分租客、房东、管理员三个角色 系统功能介绍说明&am…

19 动态库和静态库

文章目录 静态库动态库dll模块入口函数 静态库 选择桌面向导里面的静态库 设置为发布版,设置重新生成 创建文件夹放入库和头文件 将库放入工程目录下面 在属性中选择C/C附加包含目录&#xff0c;选择include 属性中链接器选择附加目录将lib选中 #include <stdio.h> #i…