Magic Module支持Yara将待检测文件类型作为判定条件放到规则中。需要注意的是,Magic模块只支持Unix、Linux系统,不支持Windows系统。
Magic模块实现依赖于libmagic库。libmagic能够根据文件的内容识别文件类型,而不仅仅是依赖于文件扩展名。Linux操作系统中file命令就是使用libmagic库来实现其功能。
Yara的Magic模块支持两个函数分别是type()和mime_type()。而这两个函数返回的内容可以参照Linux系统中file命令执行后返回的内容。
下表中是对Magic模块支持的函数的介绍:
名称 | 类型 | 描述 |
magic.type() | 方法 | 此函数返回内容可参考Linux系统中执行file命令结果。例如 $file some.pdf some.pdf: PDF document, version 1.7 此方法使用示例如下: magic.type() contains "PDF" |
magic.mime_type() | 方法 | 此函数返回内容可参考Linux系统中执行file --mime命令结果。例如 $file --mime some.pdf some.pdf: application/pdf; charset=binary 此方法使用示例如下: magic.mime_type() contains "application/pdf" |
下面是常见的文件类型,使用file命令查看的结果:
$ file example.txt
example.txt: ASCII text
$ file image.jpg
image.jpg: image/jpeg
$ file animation.gif
animation.gif: image/gif
$ file logo.png
logo.png: image/png
$ file document.pdf
document.pdf: application/pdf
$ file index.html
index.html: text/html
$ file config.xml
config.xml: application/xml
$ file archive.zip
archive.zip: application/zip
$ file data.gz
data.gz: gzip compressed data
$ file data.bz2
data.bz2: bzip2 compressed data
$ file music.mp3
music.mp3: audio/mpeg