zip伪加密破解方法
一、使用 ZipCenOp.jar(需要java环境) ,在cmd中使用
成功后压缩包可以直接打开
二老模、使用winRAR
进入工具,压缩修复文件,修复完后压缩包就可以打开了
上述两种方法很多情况都可以用,但是有时不行,第三种方法可以应对各种zip伪加密
这里给大家看一个例子
明明已经按第一种方法提示成功了,但是还是要密码。
我们修复压缩包试试
还是要密码,那我们只好使用杀手锏了,请看第三种方法
三、修改文件头的加密标志位
一格zip文件有三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 ( 详侍晌缓解链接 )
这是三个头标记,主要看第二个
压缩源文件数据区:50 4B 03 04:这是头文件标记
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示谨帆有密码了)
压缩源文件目录结束标志 :50 4B 05 06:目录结束标记
我们用winhex打开压缩包,搜索504B,点击第二个504B(压缩源文件目录区)
将全局方式位标记中的09改为00后,打开压缩包
破解成功!
根据官方文档上的描述,ZIP文件的格式如下图所示。通常情况下,我们所用ZIP文件格式为下图中所表示出来的三个部分(其余部分的说明在附录中给出):
接下来,我们将结合一个实际的ZIP压缩包文件来具体分析其格式银让老。
首先,构造该ZIP压缩包,为了方便和后续的已知明文攻击部分内容相衔接,这里先构造这样一个内容为
的plain.txt文件,将其压缩成plain.zip。
下面,分别从压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束标志展开。
[Local file header(文件头)+File data(文件数据)+Data descriptor(数据描述符)]
文件头主要用于表示此文件的开始,记录了此文件压缩的信息,具体字段的含义如下表。(注:偏移量为十进制)
general purpose bit flag: (2 bytes)
compression method: (2 bytes)
CRC-32: (4 bytes)
使用WinHex打开我们之前构造的plain.zip压缩包,对其Local file header(文件头)部分进行分析,从偏移量为28(0x1C)处看起,读出来扩展区长度为0,故文件名及其前面的部分为Local header(文件头)。
由图结合各字段的偏移量和大小,各个字段分析如下:
此部分紧跟在Local file header(文件头),记录了该文件压缩、存储的数据。
由图结合偏移量,得到下表。
数据描述符仅在通用Local file header文件头的通用比特标志位滑尘的第3比特为1的时候存在。在1.1.1中通用比特标志位的详细说明中可知,如果此位为1,那么Local file header文件头中的CRC32校验码、压缩大小和未压缩大小的字段将设置为0,这三个字段正确的值放在此数据描述符中。
由于我们所选的plain.zip数据包中Local file header文件头中的通用比特标志位第3比特为0,所有不含有此部分,CRC32校验码、压缩大小、未压缩的大小这三个字段的实际值都位于Local file header文件头中。
[ Centra directory (核心目录) ]
Centra directory 核心目录主要是记录压缩文件的目录信息,每个压缩源文件数据区的记录对应此压缩源文件目录去的一条记录。
由图结合各字段的偏移量及大小,核心目录部分的各个字段分析如下:
[End of Central directory recored (目录结束标志)]
目录结束标志用于标锋升记压缩的目录数据的结束,每个压缩文件对应在此数据区有一记录。
由图结合各字段的偏移量及大小,目录结束标志的各个字段分析如下:
此时,有以下几种方式:
假设不知道某个zip压缩包的密码,但是已经获取或者根据破解得到其中的某一个文件的话,可以考虑采用已知明文攻击。这是因为同个zip压缩包中的所有文件使用同一加密秘钥来进行加密的,所以可以根据已知文件进行同样的压缩以构造部分明文来寻找加密秘钥,利用找到的秘钥解密zip压缩包中其他的文件。
举例:已知下面这个压缩文件(what's this.zip)中plain.txt的内容
1.伪加密
如果压缩文件是加密的,或文件头正常但解压错误,首先尝试文件是否为伪加密。zip文件是否加密是通过标识符来显示的,在每个文件的哗旅文件目录字段有一位专门标识了文件是否加密,乱知凳将其设置为00表示该文件未加密,如果成功解压则文件为伪加密,如果解压出错则改文件为真加密
使用场景:伪加密文件
zip文件
1.1winhex打开文件搜索十六进制504B0102,可以看到每个加密文件的文件头部
1.2从50开始计算,第九个和第十个字符为加密字段,将其设置为0000即可变成无加密状态
rar文件
rar文件由于有头部校验,使猛模用伪加密时打开文件会报错,使用winhex修改标志位后如报错消失且正常解压缩,说明是伪加密,使用winhex打开rar文件,找到第24个字节,该字节尾数为4表示加密,0表示无加密,将尾数改为0即可破除伪加密。
2.暴力破解
通常我们可以使用ARCHPR.exe工具来破解rar文件,使用ziperello破解zip文件
使用场景:windows下加密的压缩文件
3.明文攻击
明文攻击有两个注意点: 1. 明文文件压缩算法要与原压缩文件压缩算法相同
2.明文文件压缩后CRC值与加密压缩包中的文件一致
4.rar文件格式
有时候给出的RAR文件的头部各个字块会故意给错导致无法识别
从文件头部开始数第三个字节
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)