① 有关ZIP压缩包的破解
根据官方文档上的描述,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的内容
② 压缩包大小和文件头标识信息不匹配
自己在尝试修复压缩文件的时候发现的一点小技巧,头文件损坏,可谓是压缩包的一个大敌,很多网上的方法修复软件并没有效果,本视频的方法可以巧妙回复压缩文件并成功解压(前提是能打开压缩文件,但解压时提示头文件损坏的那种,打不开的可以尝试用winrar修复)电脑野生技术协会技术宅知识野生技能协会数码软件技术学习视频教程教学视频教程经验分享bilibili新星计划
③ 压缩文件学习总结
RAR是有四个文件块组成的,分别是分别是标记块、归档头部块、文件块、结束块,这些块之间没有固定地先后顺序,但要求第一个块必须是标志块并且其后紧跟一个归档头部块
RAR的标记块和结束块都是固定的7字节序列,分别为0×52 61 72 21 1A 07 00和0xC4 3D 7B 00 40 07 00
每一块后面都有两个crc校验,在crc之后的字节用于判断块类型
HEAD_TYPE=0x72 标记块
HEAD_TYPE=0x73 压缩文件头
HEAD_TYPE=0x74 文件头
HEAD_TYPE=0x75 注释头
HEAD_TYPE=0x76 旧风格的用户身份信息
HEAD_TYPE=0x77 子块
HEAD_TYPE=0x78 恢复纪录
HEAD_TYPE=0x79 用户身份信息
HEAD_TYPE=0x7a subblock
比如上图rar要获取的文件除了flag.txt外还有secret.png,本来在A8 3C校验位后被改成了7A,被锁定后解压文件无法看到secret.png,所以这里需要自己改块标志将其改为文件块
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
50 4B 03 04是ZIP头文件标记
14 03是解压文件需要的PK版本
00 00是全局方位标记(文件是否有加密可通过这两位来判断,单数为加密,偶数为无,例如:00 02 04表示加密,01 03 09表示无)
之后查看压缩包里有多少文件可以查找50 4B有多少个就行了
不过压缩源文件数据区跟压缩源文件目录区是不一样的,文件标识依然是前四位,之后四位分别对应压缩需要的PK版本跟解压需要的PK版本之后的00 00对应数据区的全局方位标记(判断加解密与上面一样)
在CTF题中会存在伪加密的zip文件,原理就是更改了其中的全局方位标记
ps:Kali中用binwalk -e可以直接解压,此工具分离文件的原理就是识别文件头后进行文件分离
④ rar压缩文件头文件损坏,能修复吗
应急解决 x0dx0a1.利用恢复记录 x0dx0a想要修复CRC是有条件的,必须是此RAR压缩包中有恢复记录,而此恢复记录是RAR压缩包被压缩时的可选项。 x0dx0ax0dx0a而WinRAR压缩时默认是不放置恢复记录的,如果提供的是这样的RAR压缩包,那么用户自己想要修复CRC错误是不可能的。 x0dx0ax0dx0a2.釜底抽薪 x0dx0a如果RAR压缩包中的文件是那种即使文件有缺失仍能正常或较为正常地使用的(其实大多数的文件对部分数据损坏都不是非常敏感的),那便可以使出我们的终极杀招:釜底抽薪法! x0dx0ax0dx0a其原理就是让RAR压缩包内损坏的文件解压缩出来,不理会WinRAR的警告,能解压多少就解压多少。解压缩软件还是用WinRAR,不过要做小小的设置。 x0dx0ax0dx0a在右键点击解压缩文件后跳出的窗口里,把“保留被损坏的文件”复选框选中,点击确定开始解压缩。不要理会解压缩出错的信息,解压缩结束之后你会发现损坏的文件被解压出来了。经过这样解压出来的损坏文件能正常使用的几率还是非常高的。x0dx0a做好保险工作x0dx0a1.做好恢复记录 x0dx0a原始RAR压缩包在压缩时,如果选择放置恢复记录,这样用户下载后即使CRC出错也有自己修复的机会! x0dx0ax0dx0a2.采取分卷压缩 x0dx0a采取分卷压缩的方法便可较大地减少因为出现不可恢复的错误带来的损失。 x0dx0ax0dx0a3.老文件也加恢复记录 x0dx0a有人也许会问,新压缩的RAR压缩包可以加入恢复记录,那么已经压缩过的RAR包有没有办法也加上恢复记录呢?给已经压缩好的RAR压缩包加上恢复纪录是有办法的。 x0dx0ax0dx0a只需要打开压缩包,在“命令”菜单中选择“保护档案文件”即可。 x0dx0ax0dx0a小常识: x0dx0a其实RAR压缩包出错的解决方法主要是以预防为主!如果没有预防,等到真正出了问题,技术上也是没办法完美解决的!像循环冗余校验码(CRC)出错这种情况,如果RAR压缩包不包含恢复记录的话,用户自己想要修复CRC是不可能的!本文的主要目的是想告诉大家一些出错的原因以及讨论一些从根本上预防出错和把损失减少到最小的办法而已!
⑤ rar文件是什么意思
RAR是一种文件压缩与归档的私有文件格式,用于数据压缩与归档打包。简单的说就是将原有的文件数据经过压缩处理之后保存为RAR文件格式后缀名,通常Windows用户比较常见的压缩软件WinRAR。RAR文件格式是专有的压缩文件格式,其具体的设计细节并没有完全公开。
RAR是一种专利文件格式,用于数据压缩与归档打包,开发者为尤金·罗谢尔(俄语:Евгений Лазаревич Рошал,拉丁转写:Yevgeny Lazarevich Roshal),RAR的全名是“Roshal ARchive”,即“罗谢尔的归档”之意。首个公开版本RAR 1.3发布于1993年。
RAR 是一种专有的文件格式,用于文件的压缩、归档与打包。RAR 的全名是:Roshal Archive(即“罗谢尔的归档”之意),其开发者是尤金·罗谢尔(Eugene Roshal)。首个公开版本 RAR 1.3 发布于1993年。Roshal 最初编写了 RAR 的 Dos 版本的程序用以编码和解码文件,后来该程序被移植到其他的平台,比较著名的是 Windows 平台上移植版的 Win RAR。Eugene Roshal后来公开了解码程序的源代码,但是编码程序仍然是私有的。RAR 因为其独特的压缩算法,基本可以做到无损压缩,而且还能够满足较高的压缩比,同时保证一定的压缩速度。但是RAR压缩算法也存在一定的缺陷,由于RAR文件头需要占用一部分的空间,二档压缩的原始数据量较小,而且压缩的空间较小的情况下,可能会出现压缩后的文件反而比原始文件更大。RAR 文件有较多的冗余记录,主要是考虑到在压缩过程中,压缩数据受损,为了保证无损压缩,会有较多的恢复记录,这些恢复记录也占用了一定的空间。但是分卷压缩是 RAR 非常突出的一个优点,将源文件分割为多个小文件,从而有利于解压出源文件。如果将所有的数据压缩到同一个数据区,就可以大大加大压缩比,但是这种压缩方式在解压其中一个单独的文件时就必须解压同一数据区中位于它之前的所有的文件,不利于文件的单独解压。RAR 拥有成熟的加密算法,2.0 版本以后使用 AES 算法来加密,AES 算法的破解难度比较大,在没有密码的情况下只能采取暴力破解的办法,对于数据的安全性有一定的保证。 [1]
文件格式编辑 播报
文件格式
文件格式
RAR 文件格式是专有的压缩文件格式,其具体的设计细节并没有完全公开。但就其已公开的资料来看,RAR 文件是由一系列可变长度的数据块组成。另外,数据块之间并没有一定的顺序,但开发者约定,每个 RAR 文件都要以标记块和压缩文件块开始,并以结束标记块结束。每一块的开始是由通用字段开始,且每一个不同的块的通用字段结构都是一样的。这些数据块的类型并不全部相同,所携带的信息以及在文件中的作用也不同。但所有的数据块都有一个相同结构的头部,这个头部称为基本块头部。通过在基本块头部后面添加不同的字段就形成了不同类型的数据块。计算文件的大小时,有两种不同的情况:当块标记“块标记”首位未置 1, “块大小”字段的值就是总块的大小;当块标记“块标记”首位置 1,并且可选结构存在,为“块大小+ 增加块大小”才是真正的块大小。标记块中字段类型固定,长度固定,各个字段的值也是固定的。压缩文件头,是标识整个压缩文件相关属性的数据块。其结构是在基本块头部后面添加两个保留字段。文件头是用于标识 RAR 中被压缩文件相关属性的字段集。RAR 中有多少被压缩的文件,就有多少文件块
RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。
分卷压缩:压缩后分割为多个文件。
固实压缩:把要压缩的视为同一个文件以加大压缩比,代价是取用包中任何文件需解压整个压缩包。
恢复记录:加入冗余数据用于修复,在压缩包本身损坏但恢复记录够多时可对损坏压缩包进行恢复。
加密:RAR 2.0使用AES-128-cbc,(rar5.0以后为AES-256CBC)。之前RAR的加密算法为私有。目前均未被直接攻破(至少没有公开),没有密码时只有暴力破解。 [1]
缺点:无法有效对付嵌套压缩包,对于密码各异的压缩包WinRAR无法批量处理,对于指定路径中的压缩包不能自动解压,处理大块头压缩包速度缓慢。
⑥ java前端下载完打开压缩文件头部错误
java前端下载完打开压缩文件头部错误解决办法:
1、将本地数据备份成zip文件。
2、将备份的zip文件通过sftp上传到文件服务器。
3、将文件服务器上的zip文件下载到运行服务器。
4、将下载的zip文件解压到本地(文件大小超过50KB时报文件被损坏)。
⑦ 压缩包大小和文件头标识信息不匹配
这样的情况可能是下载错误或者压缩软件的问题造成的。
可以把电脑驱动更新一下,然后在更新下压缩解压软件!
建议用别的压缩软件解压,好压不怎么好用!
⑧ 压缩文件处理
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文件的头部各个字块会故意给错导致无法识别
从文件头部开始数第三个字节
⑨ rar压缩文件头文件损坏,能修复吗
应急解决
1.利用恢复记录
想要修复CRC是有条件的,必须是此RAR压缩包中有恢复记录,而此恢复记录是RAR压缩包被压缩时的可选项。
而WinRAR压缩时默认是不放置恢复记录的,如果提供的是这样的RAR压缩包,那么用户自己想要修复CRC错误是不可能的。
2.釜底抽薪
如果RAR压缩包中的文件是那种即使文件有缺失仍能正常或较为正常地使用的(其实大多数的文件对部分数据损坏都不是非常敏感的),那便可以使出我们的终极杀招:釜底抽薪法!
其原理就是让RAR压缩包内损坏的文件解压缩出来,不理会WinRAR的警告,能解压多少就解压多少。解压缩软件还是用WinRAR,不过要做小小的设置。
在右键点击解压缩文件后跳出的窗口里,把“保留被损坏的文件”复选框选中,点击确定开始解压缩。不要理会解压缩出错的信息,解压缩结束之后你会发现损坏的文件被解压出来了。经过这样解压出来的损坏文件能正常使用的几率还是非常高的。
做好保险工作
1.做好恢复记录
原始RAR压缩包在压缩时,如果选择放置恢复记录,这样用户下载后即使CRC出错也有自己修复的机会!
2.采取分卷压缩
采取分卷压缩的方法便可较大地减少因为出现不可恢复的错误带来的损失。
3.老文件也加恢复记录
有人也许会问,新压缩的RAR压缩包可以加入恢复记录,那么已经压缩过的RAR包有没有办法也加上恢复记录呢?给已经压缩好的RAR压缩包加上恢复纪录是有办法的。
只需要打开压缩包,在“命令”菜单中选择“保护档案文件”即可。
小常识:
其实RAR压缩包出错的解决方法主要是以预防为主!如果没有预防,等到真正出了问题,技术上也是没办法完美解决的!像循环冗余校验码(CRC)出错这种情况,如果RAR压缩包不包含恢复记录的话,用户自己想要修复CRC是不可能的!本文的主要目的是想告诉大家一些出错的原因以及讨论一些从根本上预防出错和把损失减少到最小的办法而已!
⑩ 压缩文件的文件头破坏了,怎么办
没什么办法
解压软件最先检查的文件头
如果没问题 才会继续看其它
所以 文件头损坏,不代表后续就没问题了
事实上 文件头损坏,往往是整个文件都坏了
如果是你下载的 那就重新下载下吧。