Так что мне было интересно, как бы вы отличали файлы ppt, xls и doc друг от друга в Linux независимо от расширений. Я попробовал «файл», но, судя по всему, все файлы MSOffice относятся к одному типу файлов. Точно так же у меня проблемы с файлами docx, xlsx и pptx, так как они, по сути, все zip-файлы, содержащие кучу xml.
Я также попробовал скрипт на python, импортирующий волшебный модуль, но ничего не вышло.
Я пытаюсь определить фактический файл для анализа в песочнице. И для этой конкретной цели мне нужно найти фактический тип файла, чтобы запустить его в песочнице vm (Windows vm запускает все по расширению).
Допустим, мой пример файла помечен как try.exe, но на самом деле это просто файл doc. Мой сценарий переименует его в try.exe.doc, который отлично подойдет для файлов doc. Но поскольку linux идентифицирует все файлы MSOffice как простые файлы DOC, то нет способа идентифицировать файлы ppt или xls. В результате песочница не будет правильно анализировать образец.
Вы можете использовать команду mimetype
. Пример:
mimetype example.ppt
example.ppt: application/vnd.ms-powerpoint
и
mimetype example.doc
example.doc: application/vnd.ms-word
Однако, в отличие от file -i
, это определение MIME-типа основано на расширениях файлов поиска (.ppt
, .doc
и т. Д.). ) из общей базы данных MIME-info и их изменение также изменит MIME-типы.
С измененным расширением единственный способ узнать о файле - посмотреть его подпись файла или магическое число, , которое одинаково для всех документов Microsoft Office (D0 CF 11 E0
или [ 117]). Таким образом, любые файлы MS-Office будут обнаружены как MIME-тип.
Используйте file
с -i
, чтобы получить MIME-тип:
file -i <filename>