zip压缩包——加密破解篇

Aimerl0
• 阅读 3040

写在前面

前几天在某个 CTF 的交流群想看看大佬们都在聊什么,偶然间看到有人发了一个 pdf (就是这篇文章),一开始顺手点下载下来没怎么看,过几天打开看了一下发现写得挺好的,这篇文章应该是一个大佬的博客里的文章,但是尝试去找到大佬的博客地址却一直没有找到,很遗憾 QAQ

伪加密、爆破、明文攻击和CRC32碰撞

  • zip 文件格式:

    zip 文件由三部分组成:压缩的文件内容源数据、压缩的目录元数据、目录结束标识结构

伪加密

  • 如果是没有加密的 zip 文件,压缩源文件数据区和压缩源文件目录区的全局方式位标记都为00 00

zip压缩包——加密破解篇

  • 如果是真正加密的 zip 文件,压缩源文件数据区和压缩源文件目录区的全局方式位标记都为09 00
    • 不同的压缩软件有差异,有些软件的全局方式位标记是01 00

zip压缩包——加密破解篇

  • 如果将未加密的 zip 文件中的压缩源文件目录区的全局方式位标记改为01 00(或者09 00),就会被压缩软件认定为是已加密,这就是伪加密的原理

zip压缩包——加密破解篇

如何破解伪加密?

1、把压缩文件目录区的全局方式标记改回00 00

2、kali360压缩 能够直接打开伪加密压缩包

爆破

  • 爆破就是逐个尝试字典中的密码去对压缩包进行解密,大概分为暴力破解掩码破解字典破解三种
  1. 暴力破解:选择密码的范围、长度等,由软件组合生成的密码进行破解
  2. 掩码破解:知道密码中的一部分,只需要按照规则构造其他部分进行破解
  3. 字典破解:通常是用户总结出来的常用的密码字典,导入字典文件用字典中的密码进行破解,强度取决于每个人的字典强度
  • 爆破常用工具是 Windows 的软件 AZPR,也可以自己动手写 py 脚本来爆破

zip压缩包——加密破解篇

已知明文攻击

  • 已知明文攻击:攻击者已知明文、密文及算法,求密钥的过程
  • 明文攻击是一个高效的攻击手段,比如当你不知道一个 zip 压缩包文件的密码,但是你有 zip 包中的一个已知文件(文件大小要大于12Byte)时,因为同一个 zip 压缩包里的所有压缩文件使用的是同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件
  • 简单来说,就是利用已知文件推理爆破出加密所用密钥,利用这个密钥来解密其他文件

举个栗子:

现在我压缩了带密码的四个文件,已知明文 攻击测试.zip 中的 明文攻击.docx

zip压缩包——加密破解篇

进行对已知文件进行压缩,对比crc值是否跟加密文件中的crc值一样

zip压缩包——加密破解篇

同样是利用软件AZPR进行明文攻击,成功获取到密文

zip压缩包——加密破解篇

注意:当明文的大小比较小时,或者密文过长,攻击速度会比较慢;即使有时没有恢复密码,也可以使 用明文攻击,最后点保存还是能得到压缩包里内容的,如果出现错误可以多试几款压缩软件

zip压缩包——加密破解篇

CRC32碰撞

  • CRC32:CRC 本身是“冗余校验码”的意思,CRC32 标识则会产生一个 32bit (8 位 16 进制)的校验值
  • CRC校验实用程序库,在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段,在诸多检错手段中,CRC 是最著名的一种,CRC 的全程是循环冗余校验
  • 在产生CRC32 时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也会得到不同的CRC32 值,利用这个原理可以直接爆破出加密文件中的内容
  • 每个文件都有唯一的CRC32 值,即便数据中的一个 bit 发生变化,也会导致CRC32 值不同,若是知道一段数据的长度和CRC32 值,便可以穷举数据,与其CRC32 对照,以此达到暴力破解的目的,但是限于CPU的性能,只适用于较小文本文件
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
xpath的一次性同时获取a标签和p标签的内容?(下篇)
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python网络爬虫数据提取的问题,一起来看看吧。他的需求就是:xpath的一次性同时获取a标签和p标签的内容。上一篇文章中,大佬们已经给出了一个答案,可是数据获取下来后发现和网
Python进阶者 Python进阶者
10个月前
盘点一个AI都无法解决的Python基础题目(下篇)
大家好,我是皮皮。一、前言前几天在Python白银交流群【大侠】问了一个Pandas实战的问题,一起来看看吧。上一篇文章说到,看上去AI给的答案,似乎让【大侠】不满意,遂来白银交流群问问大佬们。这一篇文章,我们一起来看看其他大佬给的代码。二、实现过程前面的
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这