zip加密的常见破解方法

几种zip加密的常见破解方法

简介

​ ZIP是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件;理论上,这种格式允许对不同的文件使用不同的算法。不管用何种方法,对这种格式的一个告诫是对于包含很多小文件的时候,存档会明显的比压缩成一个独立的文件(在类Unix系统中一个经典的例子是普通的tar.gz存档是由一个使用gzip压缩的TAR存档组成)要大。

ZIP支持基于对称加密系统的一个简单的密码,现在已知有严重的缺陷,已知明文攻击,字典攻击和暴力攻击。ZIP也支持分卷压缩。在近来一段时间,ZIP加入了包括新的压缩和加密方法的新特征,不过这些新特征并没有被许多工具所支持并且没有得到广泛应用。

ZIP伪加密

​ ZIP文件是一种压缩文件,可进行加密,也可不加密。而伪加密是在未加密的zip文件基础上修改了它的压缩源文件目录区里的全局方式位标记的比特值,使得压缩软件打开它的时候识别为加密文件,提示输入密码, 而在这个时候,不管你用什么软件对其进行密码破解,都无法打开它!这就是它存在的意义!

一、使用ZipCenOp.jar

需要java环境,在cmd中使用 java -jar ZipCenOp.jar r xxx.zip 成功后压缩包可以直接打开

二使用winRAR

进入工具,压缩修复文件,修复完后压缩包就可以打开了

上述两种方法很多情况都可以用,但是有时不行,第三种方法可以应对各种zip伪加密

三、修改文件头的加密标志位

原理:一个zip文件由三部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。

压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密) 头文件标记后2bytes
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500
压缩源文件目录区
50 4B 01 02:目录中文件文件头标记(0x02014b50)
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,伪加密的关键) 目录文件标记后4bytes
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001
压缩源文件目录结束标志
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度

这个详细的介绍了各部分的含义,修改其压缩源文件目录区的全布局方式标记比特值之后即可对文件加密或解密。

具体操作如下:
压缩源文件数据区:50 4B 03 04:这是头文件标记
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
压缩源文件目录结束标志 :50 4B 05 06:目录结束标记

全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性!
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密

2.暴力破解

逐个尝试选定集合的密码,直到正确

1.暴力:选择密码范围,长度等,由软件组合生成密码进行爆破

2.掩码:知道密码中的一部分,只需按规则构造其余部分

3.字典:通常是多数用户常用的一些密码集合,导入字典文件用其中的密码进行爆破

我一般使用Ziperello

3.明文攻击

如果得到了加密压缩包中的某个文件,那么就可以通过明文攻击来获取压缩密码

因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件

举个例子,这里我们有一个压缩包和一张图片,图片也是在压缩包里,这样就可以进行明文攻击

先将已知的文件压缩,从CRC32也可以看出两个文件是一样的

ARCHPR的明文攻击功能,将要解密的压缩包放在上面的路径,已知文件放明文路径

点击开始,跑一会就有结果了

4. CRC32碰撞

CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段,CRC的全称是循环冗余校验。

每个文件都有唯一的CRC32值,即便数据中一个bit发生变化,也会导致CRC32值不同。若是知道一段数据的长度和CRC32值,便可穷举数据,与其CRC32对照,以此达到暴力猜解的目的。但通常只适用于较小文本文件。

爆破脚本:https://github.com/theonlypwner/crc32

算法百度链接https://baike.baidu.com/item/CRC32/7460858?fr=aladdin

文章目录
  1. 1. 简介
  2. 2. ZIP伪加密
    1. 2.1. 一、使用ZipCenOp.jar
    2. 2.2. 二使用winRAR
    3. 2.3. 三、修改文件头的加密标志位
  3. 3. 2.暴力破解
  4. 4. 3.明文攻击
  5. 5. 4. CRC32碰撞
|