Как отличить файлы doc, ppt, xls, не глядя на расширение файла

Так что мне было интересно, как бы вы отличали файлы 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. В результате песочница не будет правильно анализировать образец.

4
задан 3 July 2012 в 20:03

2 ответа

Вы можете использовать команду 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-тип.

0
ответ дан 3 July 2012 в 20:03

Используйте file с -i, чтобы получить MIME-тип:

file -i <filename>
0
ответ дан 3 July 2012 в 20:03

Другие вопросы по тегам:

Похожие вопросы: