所以我想知道在 Linux 中如何区分 ppt、xls 和 doc 文件,无论扩展名是什么。我尝试了“文件”,但从外观上看,所有 MSOffice 文件都归类为同一文件类型。同样,我在处理 docx、xlsx 和 pptx 文件时也遇到了麻烦,因为它们本质上都是包含一堆 xml 的 zip 文件。
我也尝试使用 Python 脚本导入魔法模块,但是没有成功。
我正在尝试识别实际文件以进行沙盒分析。为此,我需要找到实际文件类型,以便在沙盒虚拟机中运行它(Windows 虚拟机通过扩展运行所有内容)。
假设我的示例文件被标记为 try.exe,但实际上它只是一个 doc 文件。我的脚本会将其重命名为 try.exe.doc,这对于 doc 文件来说没问题。但由于 linux 将所有 MSOffice 文件识别为简单的 DOC 文件,因此无法识别 ppt 或 xls 文件。因此,沙盒无法正确分析示例。
答案1
使用file
with-i
来获取 mime 类型:
file -i <filename>
答案2
您可以使用mimetype
命令。例如:
mimetype example.ppt
example.ppt: application/vnd.ms-powerpoint
和
mimetype example.doc
example.doc: application/vnd.ms-word
然而,与此不同的是,file -i
MIME 类型的确定是基于从共享的 MIME 信息数据库中查找文件扩展名(.ppt
等.doc
),而更改它们也会更改 MIME 类型。
扩展名改变后,了解文件的唯一方法就是查看其文件签名或幻数,相同适用于所有 Microsoft Office 文档(D0 CF 11 E0
或DOCFILE0
)。因此,任何 MS-Office 文件都将被检测为相同的 MIME 类型。