Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中检查文件是否用gzexe压缩?_Python_Compression - Fatal编程技术网

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

如何在Python中检查文件是否用gzexe压缩?,python,compression,Python,Compression,我正在使用Python开发一个简单的病毒扫描器,扫描器需要检查文件中是否有病毒签名(特定字符串)。如果文件被压缩,扫描仪需要先解压缩文件,然后检查签名。使用gzip压缩的文件在文件的开头有一个神奇的数字,这很容易检查并使用gzip库进行解压缩 但是如何检查文件是否用gzexe压缩?我看了一下,但没有列出gzexe压缩文件。我检查了一个用gzexe压缩的文件的内容,发现它以“#!bin/sh”开头。我想我可以检查一下,但是有更好的方法吗?还有,是否有任何库可以处理解压缩的gzexe压缩文件 编辑

我正在使用Python开发一个简单的病毒扫描器,扫描器需要检查文件中是否有病毒签名(特定字符串)。如果文件被压缩,扫描仪需要先解压缩文件,然后检查签名。使用gzip压缩的文件在文件的开头有一个神奇的数字,这很容易检查并使用gzip库进行解压缩

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

编辑

我之前遇到的关于zlib的问题是,我没有意识到必须向zlib.decompress传递第二个参数,否则会出现错误。没有很清楚地指出这一点。在python中,似乎需要将15+32传递给这个解压缩方法

zlib.decompress(data, 15 + 32)

此外,zlib还可以解压gzexe,正如Mark所说,您只需找到幻数的起始位置,然后从那里解压文件。

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


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

这是用来做家庭作业的吗?如果不是,编写自己的病毒扫描程序不是一个好主意。@user2357112这是家庭作业,我通过实现aho corasick算法来运行大部分程序。我现在只需要处理压缩文件,我被困在这里了。我来看看。同时,有没有一个库我可以用来解压它?你说过使用“gzip”库检查和解压gzip文件很容易。现在你是说你不知道怎么做?因为我试过了,但没用。给了我“不是gzip文件”错误。zlib甚至没有解压缩Gzip文件。给了我“zlib.error:error-3,解压数据时:不正确的头检查”。你试过你的系统了吗?现在我发现zlib不能使用gzip文件的原因是我没有传递第二个参数。但是,它仍然不能处理gzexe压缩文件。从那里开始减压。