当前位置: 首页 > news >正文

Cyberchef使用功能之-多种压缩/解压缩操作对比

cyberchef的compression操作大类中有大量的压缩和解压缩操作,每种操作的功能和区别是什么,本章将进行讲解,作为我的专栏《Cyberchef 从入门到精通教程》中的一篇,详见这里。

关于文件格式和压缩算法的理论部分在之前的文章《压缩文件格式和压缩算法的那些事》,这里,已经进行了说明,可先行参考之。

对于Cyberchef中compression大类中的操作大致可以分成两类,一类是针对文件的压缩和解压缩,一类是针对数据流的压缩和解压缩。当然这么说可能会有些不严谨之处,因为文件其实也是被cyberchef当作数据流进行对待的。做这种区分的目的在于说明这些操作针对的是有意义的文件和数据流,而并非是无意义的数据流。

文件格式

从名称上可以看出其中Gzip/Gunzip,Zip/Unzip,bzip2,Tar/Untar,zlib都是可以针对对应格式的文件进行压缩和解压缩。

压缩文件

使用文本文件测试cyberchef压缩功能,文件的内容+包含中英文,如下:

this is a blog of xiaofan
这是村中少年的CSDN博客
https://xiaofan.blog.csdn.net/

gzip压缩如图1:
在这里插入图片描述
图1
zip压缩如图2:
在这里插入图片描述
图2
bzip2压缩如图3:
在这里插入图片描述
图3
tar打包如图4:
在这里插入图片描述
图4
由之前的理论部分可知tar只负责打包,不具备压缩功能,因此tar中的数据还是以明文的形式显示,只是多了一些文件的结构数据而已,从后图6的untar可以对比压缩和打包的区别。

上述可以看到,采用这种这些方式的压缩之后的数据,都会有显著的文件特征,例如

  1. 例如gz格式文件的signature 是 1F 8B
  2. 例如tar格式文件的signature 是 75 73 74 61 72
  3. 例如zip格式文件的signature是 50 4B 03 04
  4. 例如bzip2格式文件的signature 是 42 5A 68

更多文件格式详见这里。

解压缩文件

因此在解压缩的时候,如果在提前并不知道文件的压缩算法的情况下,通过判断文件的头部特征,则可以选择对应的操作进行处理。由于tar只是负责文件打包,gzip负责文件压缩,因此解压之后的显示略有区别,如下图5,图6:
在这里插入图片描述
图5
在这里插入图片描述
图6
虽然输入文单个文件,但是tar打包的时候是以文件夹的格式进行打包,因此在untar之后,可以看到显示的是文件夹中的文件而不是直接显示数据。

解压缩部分文件数据

这里需要注意的cyberchef只能对于完整的文件进行处理,如果缺少文件尾部数据,则可能出现无法解压缩的情况,可能的原因是cyberchef对于文件完整性进行了判定,使用上述图1,2,3,4中的部分数据(去除部分尾部数据)进行验证,如下图7, 图8,图9,图10:
在这里插入图片描述
图7
在这里插入图片描述
图8
在这里插入图片描述
图9
在这里插入图片描述
图10

untar虽然也只是使用了部分数据,但是没有破坏文件结构,还是能够还原部分数据。虽然cyberchef不能使用一些压缩算法的针对部分数据进行还原,但是7z等压缩软件可以,因此可以使用7z等压缩软件进行尝试。当然本质要研究每种文件的文件结构,看看缺少的数据是否是关键部分数据。

压缩算法

针对数据流的压缩算法因为数据结构敏感性低,按块压缩,理论上问题偏少。由之前的文章《压缩文件格式和压缩算法的那些事》,这里,可知对于raw deflate,LZMA ,bzip2事实上是一种混合压缩算法,即封装了几种算法并形成了一种新的数据格式。对于数据结构来说,不同的混合压缩算法则表现不同。

失败解压部分数据

下图11,12为 和raw inflate的示例,可以看到cyberchef对于部分数据的解压缩是失败的,只有部分数据则破坏了某个块的数据结构,因此出现解压缩失败的场景。同样不能部分解压成功的还有Lzstring算法。
在这里插入图片描述
图11
在这里插入图片描述
图12

成功解压部分数据

下图13,14为LZ4压缩和解压缩的示例,可以看到cyberchef对于部分数据的解压缩是成功的。
在这里插入图片描述
图13
在这里插入图片描述

图 14
其中LZMA 也可以解压缩部分数据,可自行尝试之。

针对上述的尝试,可以使用更多的数据进行的验证。当然本质要研究每种压缩算法的数据结构,看看缺少的数据是否是关键部分数据。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。

http://www.lryc.cn/news/489719.html

相关文章:

  • TypeScript 装饰器都有那些应用场景?如何更快的上手?
  • 堆优化版本的Prim
  • Ubuntu上安装MySQL并且实现远程登录
  • 蓝桥杯每日真题 - 第21天
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)
  • NLP论文速读(CVPR 2024)|使用DPO进行diffusion模型对齐
  • 操作系统——揭开盖子
  • 如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
  • C++学习第四天
  • 【从零开始的LeetCode-算法】3232. 判断是否可以赢得数字游戏
  • 一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
  • 24/11/22 项目拆解 艺术风格转移
  • 数字赋能,气象引领 | 气象景观数字化服务平台重塑京城旅游生态
  • 关于Redux的学习(包括Redux-toolkit中间件)
  • 【无人机】
  • Zabbix7.0.6的容器镜像准备
  • 利用 GitHub 和 Hexo 搭建个人博客【保姆教程】
  • React第四节 组件的三大属性之state
  • MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)
  • 使用FFmpeg实现视频与GIF的画中画效果
  • 车载信息安全框架 --- 车载信息安全相关事宜
  • Unreal5从入门到精通之EnhancedInput增强输入系统详解
  • 泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接
  • 理解设计模式与 UML 类图:构建稳健软件架构的基石
  • FastAPI重载不生效?解决PyCharm中Uvicorn无法重载/重载缓慢的终极方法!
  • 最新子比主题zibll8.0开心版源码 无加密无后门
  • 【数据分析】认清、明确
  • 工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程
  • 人工智能(AI)与机器学习(ML)基础知识
  • 得物彩虹桥架构演进之路-负载均衡篇