ZIP伪加密
ZIP伪加密的特征
zip
文件结构可以分为三个部分:
- 压缩源文件数据区
- 压缩文件目录区
- 压缩源文件目录结束标志
压缩源文件数据区中的全局方式位标记
是判断压缩包有无伪加密的重要标志,即压缩源文件数据区的第7、第8两个字节09 00
。ZIP的压缩源文件数据区全局方式位标记
在010 Editor
显示的文件结构中即为ushort frFlags
。
压缩文件目录区的全局方式位标记
是进行伪加密的关键,即压缩文件目录区的第9、第10两个字节。ZIP的压缩文件目录区全局方式位标记
在010 Editor
显示的文件结构中即为ushort deFlags
。
- 无加密的ZIP:
压缩源文件数据区
的全局方式位标记应当为00 00
且压缩源文件目录区
的全局方式位标记应当为00 00
- 真加密的ZIP:
压缩源文件数据区
的全局方式位标记应当为09 00
且压缩源文件目录区
的全局方式位标记应当为09 00
- 伪加密的ZIP:
压缩源文件数据区
的全局方式位标记应当为00 00
且压缩文件目录区
的全局方式位标记应当为09 00
如何破解ZIP伪加密
- 第一种方法:直接修改
压缩文件目录区
的全局方式位标记为偶数,即可解压 - 第二种方法:有些压缩软件可以无视伪加密直接解压,例如:WinRAR、7zip、360压缩
- 第三种办法:有个Java写的小工具
ZipCenOp.jar
,需要java环境,在cmd中运行java -jar ZipCenOp.jar r xxx.zip
即可解压
RAR伪加密
RAR的伪加密与ZIP的伪加密原理相同,造成伪加密的关键都是在一个指定的位标记字段上。
PS:一般RAR伪加密的压缩包用WinRAR打开时都会显示文件头已损坏
在RAR的第24
个字节,也就是010 Editor
显示的文件结构中的ubyte PASSWORD_ENCRYPTED
字段,修改其字段为1
即可实现RAR伪加密。
或者修改第11
个字节,也就是010 Editor
显示的文件结构中的ubyte BLOCK_HEADERS_ENCRYPTED
字段的值。修改为1
即可造成RAR伪加密。