关于判断zip文件是否进行了伪加密的方法,以及如何解除伪加密。

step 1 winhex查看zip压缩包

    将可能进行了伪加密的压缩包用winhex打开,首先了解一下基本的zip包的构造:

(1)压缩源文件数据区标识:即当头文件是504B0304时,则表示文件类型为zip压缩包。

(2)第一个全局方式位标记:即下图中在数据区标识后两位的0900,这个是判断文件有无加密。

(3)压缩源文件目录区标识:即下图中出现的504B0102。

(4)第二个全局方式位标记:即下图中在目录区标识后四位的0900,这个是判断文件是否进行了伪加密。压缩源文件目录结束标识:即为504B0506时,标识目录区结束。

step 2 判断是否为伪加密

  • 无加密

        o 压缩源文件数据区的全局加密应当为00 00

        o 且压缩源文件目录区的全局方式位标记应当为00 00

  • 伪加密

        o 压缩源文件数据区的全局加密应当为00 00

        o 且压缩源文件目录区的全局方式位标记应当为09 00

  • 真加密

        o 压缩源文件数据区的全局加密应当为09 00

        o 压缩源文件目录区的全局方式位标记应当为09 00

step 3 修改数据

    如果判断出文件为伪加密,按照step 2的描述,只需要将压缩源文件目录区的全局方式位标记由09 00改成00 00,并保存修改即可。这样伪加密的文件就会自动解密。

    也可以使用工具,将进行了伪加密的文件使用工具zipcenop可直接解除加密。

    我一般不怎么看十六进制数据,因为之前遇到过一个题目,它的两个标识位都为09 09,按理来说应该是真加密,但好巧不巧,它就是伪加密。所以题目没给密码提示时,我会直接将加密的压缩先用zipcenop检测一下,如果是则自动解除加密了,如果不是就的确是真加密了。