如何检查文件是否在Python中使用gzexe进行压缩?

时间:2013-12-03 01:55:36

标签: python compression

我正在使用Python编写一个简单的病毒扫描程序,扫描程序需要检查文件中是否有病毒签名(特定字符串)。如果压缩文件,扫描程序需要先解压缩文件,然后检查签名。使用gzip压缩的文件在文件的最开头有一个幻数,并且很容易检查并使用gzip库进行解压缩。

但是如何检查文件是否使用gzexe压缩?我看了here,但没有列出gzexe压缩文件。我检查了用gzexe压缩的文件的内容,发现它以“#!bin / sh”开头。我想我可以检查一下,但是有更好的方法吗?另外,有没有可以解压缩gzexe压缩文件的库?

修改

我之前使用zlib的问题是因为我没有意识到你必须将第二个参数传递给zlib.decompress,否则它会给你一个错误。 Python zlib documentation没有明确指出这一点。在python中,你似乎需要将15 + 32传递给这个解压缩方法。

zlib.decompress(data, 15 + 32)

gzexe也可以通过zlib解压缩,正如Mark所说,你只需要找到幻数开始的位置并从那里解压缩文件。

1 个答案:

答案 0 :(得分:2)

只需在文件中搜索gzip签名即可。它位于shell脚本之后。

您可以使用zlib库对其进行解压缩。