为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添加: ..\GnuWin32\bin
  6、安装magic模块 链接: https://github.com/ahupp/python-magic
    测试 import magic成功即可
  More details see https://github.com/ahupp/python-magic

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

时间: 2024-11-10 00:37:11

为python添加magic进行文件类型识别的相关文章

Python基础之一:文件类型及运算符

一.PYTHON文件类型 1.源代码 Python源代码的文件以"py"为扩展名,由Python解释,不需要编译: 2.字节代码 Python源文件经编译后生成的扩展名为"pyc"的文件: 编译方法:     importpy_compile     py_compile.compile("hello world.py") 3.优化代码 经过优化的源文件,扩展名为".pyo"  python –O –m py_compile 

python根据文件目录、文件类型和文件与当前时间差删除文件

直接贴代码: #!/usr/bin/python # -*- coding: gbk -*- import os import datetime import re def deleteFile(base_dir,days,file_ype): now_time = datetime.datetime.now() #获取当前时间 os.chdir(base_dir) #切换到此目录 cwd = os.getcwd() #得到当前目录 files = os.listdir(os.getcwd())

Python判断上传文件类型

在开发上传服务时,经常需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,非常实用. 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import struct  # 支持文件类型  # 用16进制字符串的目的是可以知道文件头是多少字节  # 各种文件头的长度不一样,少半2字符,长则8字

python基础复习-1-1文件类型、变量、运算符、表达式

文件类型: .py python源文件 由python解释器执行 .pyc python源码编译后生成的文件(字节代码) 编译方法: 源码文件中使用py_compile模块 import py_compile py_complie.compile('***.py') .pyo python源码优化编译后后文件 python -O -m compile ***.py (无需要源码中使用 compile模块) -O 表示优化 -m 表示模块 python 变量 变量是计算机内存中的一个区域,可以存储

Source Insight添加新的文件类型

1.前言 Source Insight这个软件工具功能非常强大,很适合用来分析一些大型的code工程,例如Linux内核源码,本文将简单介绍如何在Source Insight工程中添加一种新的文件类型. 2.添加步骤 在添加的过程中以Linux内核中设备树文件进行举例测试,设备树是一种描述硬件设备的文件,以下进行简单步骤分析: 首先在菜单栏上依次点击Options-->File Type Options按钮,如下: 在打开的页面中点击Add Type按钮,进行新的文件类型添加,如下: 然后输入新

TrID文件类型识别linux版

读取文件头根据特征码进行文件类型匹配. 官方:http://mark0.net/soft-trid-e.html windows版本小工具:FileAnalysis 以下是linux版本 wget http://mark0.net/download/trid_linux_64.zip unzip trid_linux_64.zip wget http://mark0.net/download/triddefs.zip unzip triddefs.zip mkdir /opt/trid/ sud

linux 文件类型识别

使用 ls -aldrwxr-xr-x. 4 root root 100 Apr 26 15:05 cpulrwxrwxrwx. 1 root root 13 Apr 26 15:05 fd -> /proc/self/fdbrw-rw----. 1 root disk 7, 0 Apr 26 15:05 loop0crw-rw----. 1 root lp 6, 2 Apr 26 15:05 lp2仔细看第一位 d代表文件目录文件,l代表链接文件,b代表块设备文件,c代表字符设备文件 `-'

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

如何为file增加文件类型的识别

通过修改/etc/magic能够增加可识别的文件类型 /etc/magic有四个字段: offset data-type value file-type offset 文件中的偏移量,从0开始计算. 表示file从该偏移量开始匹配 data-type 测试类型. 文本比较用string,字节比较用offset,两字节比较用short,四字节比较用long value 用户希望的值,若datea-type为串比较,则可以是任何字符串,可以包括UNIX转义序列. 若为字节比较则必须是一个数字 fil