如何检测文件中使用的压缩类型? (如果未指定文件扩展名)

时间:2013-10-01 15:52:10

标签: binary compression

如何检测文件中使用的压缩类型? (假设未指定.zip,.gz,.xz或任何其他扩展名。)

此信息是否存储在该文件的标题中?

4 个答案:

答案 0 :(得分:64)

通过查看前几个字节,您可以确定可能是其中一种格式。然后,您应该测试它是否真的 其中之一,使用相关实用程序对该格式的完整性检查,或者实际进行解压缩。

您可以在说明中找到标题格式:

其他:

  • zlib (.zz) format description,以两个字节(以位为单位)0aaa1000 bbbccccc开始,其中选择ccccc,以便将第一个字节视为int16乘以256加上被视为int16的第二个字节是31的倍数。 :01111000(位)= 120(int16),10011100(位)= 156(int16),120 * 256 + 156 = 30876是31的倍数
  • compress(.Z)以0x1f,0x9d
  • 开头
  • bzip2(.bz2)以0x42,0x5a,0x68
  • 开头

答案 1 :(得分:40)

如果你在Linux机器上,只需使用'file'命令。

http://en.wikipedia.org/wiki/File_(command)

$ mv foo.zip dink
$ file dink
dink: gzip compressed data, from Unix, last modified: Sat Aug  6 08:08:57 2011,
max compression
$

答案 2 :(得分:4)

作为手动检查文件头的替代方法,您可以使用一些实用程序,如TrID。该链接指向跨平台命令行版本;对于Windows,也有一个GUI。

答案 3 :(得分:0)

如果您想确定用于压缩 linux 内核的算法,有一个脚本,请参阅此问答:https://unix.stackexchange.com/a/553192/264065