我正在使用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所说,你只需要找到幻数开始的位置并从那里解压缩文件。