为python添加magic进行文件类型识别

最近想看看cuckoo里的文件识别功能是怎样实现的,翻了cuckoo源码,发现其对文件格式的判断代码如下:

def _get_filetype(self, data):
        """Gets filetype, uses libmagic if available.
        @param data: data to be analyzed.
        @return: file type or None.
        """
        if not HAVE_MAGIC:
            return None

        try:
            ms = magic.open(magic.MAGIC_NONE)
            ms.load()
            file_type = ms.buffer(data)
        except:
            try:
                file_type = magic.from_buffer(data)
            except Exception:
                return None
        finally:
            try:
                ms.close()
            except:
                pass

        return file_type

其中用到了libmagic库里的magic,libmagic是一个根据文件头识别文件类型的开发库,python可以利用该库很方便地实现对文件格式的判断。记录一下安装过程。安装环境:winxp + python 2.7

安装magic 模块:
  1、安装pycparser-2.14  链接: https://pypi.python.org/pypi/pycparser
  2、安装VCForPython,链接: http://aka.ms/vcpython27
  3、安装cffi模块,链接: https://pypi.python.org/pypi/cffi/#downloads
  4、安装libmagic  链接: https://pypi.python.org/pypi/python-libmagic
  5、安装file,安装之后向环境变量path添加: ..GnuWin32in
  6、安装magic模块 链接: https://github.com/ahupp/python-magic
    测试 import magic成功即可
  More details see https://github.com/ahupp/python-magic

利用卡巴斯基的扫描结果对样本进行分类整理(包含文件类型识别)的程序见:https://github.com/Viwilla/ClassifySamples

原文地址:https://www.cnblogs.com/Viwilla/p/5051896.html