Как найти формат файла

Обновлено: 21.11.2024

Я знаю, что могу найти файлы с помощью find : find . -type f -name 'восход солнца' . Пример результата:

Я также знаю, что могу определить тип файла: файл восход солнца. Пример результата:

Но как найти файлы по типу файла?

Например, my-find . -type f -name 'sunrise' -filetype=bash-script :

Нет опции --filetype для команды find или чего-то еще, что бы сообщало вам тип файла. Единственное, что вы можете сделать, это использовать --exec file <> \; а затем передать его в grep Bourne, если вы искали сценарии bash, или в grep Perl, если вы искали сценарии Perl или что-то в этом роде.

5 ответов 5

"Типы файлов" в системе Unix — это обычные файлы, каталоги, именованные каналы, специальные символьные файлы, символические ссылки и т. д. Это типы файлов, которые find может фильтровать с помощью параметра -type.

Утилита find сама по себе не может отличить "скрипт оболочки", "файл изображения JPEG" или любой другой тип обычного файла. Однако эти типы данных могут различаться файловой утилитой, которая просматривает определенные подписи в самих файлах, чтобы определить их тип.

Распространенный способ маркировки различных типов файлов данных — по их MIME-типу, и файл может определить MIME-тип файла.

Использование file с find для определения MIME-типа обычных файлов и его использование только для поиска сценариев оболочки:

Добавьте -name Sunrise перед -exec, если вы хотите обнаруживать только скрипты с таким именем.

Приведенная выше команда find найдет все обычные файлы в текущем каталоге или ниже него и для каждого такого файла вызовет короткий встроенный сценарий оболочки. Этот сценарий запускает file -bi для найденного файла и завершает работу с нулевым статусом выхода, если выходные данные этой команды содержат строку /x-shellscript . Если вывод не содержит этой строки, он завершается с ненулевым статусом выхода, что приводит к немедленному продолжению поиска со следующим файлом. Если было обнаружено, что файл является сценарием оболочки, команда find продолжит вывод пути к файлу (-print в конце, который также можно заменить каким-либо другим действием).

Команда file -bi выводит MIME-тип файла. Для сценария оболочки в Linux (и большинстве других систем) это будет что-то вроде

в то время как в системах с более старой версией файловой утилиты это может быть

Общим битом является подстрока /x-shellscript.

Обратите внимание, что в macOS вам придется использовать file -bI вместо file -bi по причинам (параметр -i делает совсем другое). В остальном вывод в macOS похож на вывод в системе Linux.

Хотите ли вы выполнить какое-либо пользовательское действие над каждым найденным скриптом оболочки, вы можете сделать это с другим -exec вместо -print в командах поиска выше, но это также можно сделать

При планировании переноса, если не используется MigDocs.xml, следует указать типы файлов, файлы, папки и параметры, которые необходимо перенести. Во-первых, вы должны определить стандартные расположения файлов на каждом компьютере, например, Мои документы. , C:\Data и местоположения, указанные компанией, например \EngineeringDrafts. Далее следует определить и локализовать нестандартные места. Для нестандартных местоположений учтите следующее:

Типы файлов. Подумайте, какие типы файлов необходимо включить и исключить из миграции. Вы можете создать этот список на основе распространенных приложений, используемых в вашей организации. Приложения обычно используют определенные расширения имен файлов. Например, Microsoft Office Word в основном использует расширения имен файлов .doc, .docx и .dotx. Однако он реже использует и другие типы файлов, например шаблоны (файлы .dot).

Исключенные местоположения. Рассмотрите места на компьютере, которые следует исключить из переноса (например, %WINDIR% и Program Files).

Новые локации. Решите, куда файлы должны быть перенесены на конечном компьютере, например, \My Documents, указанная папка или папка, совпадающая с именем и расположением файлов на исходном компьютере. Например, у вас могут быть общие данные на исходной машине или вы можете пожелать очистить документы за пределами профилей пользователей в исходной системе. Определите любые данные, которые необходимо перенаправить в новое место на этапе применения. Этого можно добиться с помощью правил изменения местоположения.

После того как вы проверили, с какими файлами и типами файлов регулярно работают конечные пользователи, вам нужно будет найти их. Файлы могут быть сохранены в одну папку или разбросаны по диску. Хорошей отправной точкой для поиска типов файлов для включения является просмотр зарегистрированных типов файлов на компьютере.

Чтобы найти зарегистрированные типы файлов на компьютере под управлением Windows 7 или Windows 8

Нажмите «Пуск». Откройте Панель управления, щелкните Домашняя страница панели управления и щелкните Программы.

Нажмите "Программы по умолчанию" и выберите "Связать тип файла или протокол с программой".

В наши дни существует так много различных типов файлов, что важно, чтобы каждый файл, который вы пытаетесь открыть или выполнить, правильно определялся Windows. Обычно это достигается путем просмотра расширения файла .exe или .jpg, например, и когда вы дважды щелкаете один из этих файлов, система знает, что это за файл и что с ним делать.

Возможно, раньше с вами случалось, что вы загружаете или получаете файл, а у него вообще нет расширения или что-то довольно неясное, что выглядит неправильно. В этом случае файл может быть исполняемым файлом, документом Office, MP3 или ZIP-архивом. Возможности почти безграничны в отношении расширения, которое вы могли бы дать файлу, когда вы не знаете, что это такое на самом деле.

Если вы ищете более универсальное решение для определения нераспознанных типов файлов, вот шесть вариантов, которые помогут вам найти неизвестные файлы или файлы с неправильным расширением.

<р>1. Веб-страница идентификатора файла Toolsley

Хотя многим людям может быть неудобно загружать свои файлы на веб-сайт, в этом случае им не о чем беспокоиться. Вы вообще не загружаете неизвестные файлы в Интернет, а работа по идентификации выполняется локально на вашем компьютере с использованием Javascript. Это означает, что нет проблем с небезопасными веб-сайтами, скоростью загрузки в Интернет или ограничениями на размер файла.

Пользоваться сервисом проще простого: просто перетащите файл в серое поле на веб-странице или нажмите "Обзор" и найдите файл вручную. Результат того, что он считает файлом, появится в поле ниже. Результаты не всегда очень информативны (файл MP3 отображается как «Аудиофайл с ID3 версии 2.4.0»), но это быстро, требует только веб-браузера и должно быть достаточно хорошим, чтобы идентифицировать или дать вам представление о том, какой тип файла, который у вас есть.

<р>2. ТРИД / ТРИДНЕТ

TrID, вероятно, является наиболее полной и известной утилитой для идентификации файлов. Он также все еще находится в активной разработке, поэтому отсутствующие типы файлов могут быть добавлены в будущем. По сути, он разделен на три разные части. Во-первых, у вас есть инструмент командной строки TrID, затем графический пользовательский интерфейс TrIDNet. Наконец, у вас есть база данных определений, содержащая информацию для более чем 13 000 типов файлов.

TrIDNet

Запустите TrIDNet и перетащите файл в окно или найдите его. Программа даст вам процент возможных типов файлов, которые могут быть. Самый высокий процент - это то, что он считает наиболее вероятным. Дважды щелкните рядом со стрелкой, чтобы открыть окно с дополнительной информацией о типе файла. Если вы поместите папку defs в другое место, вы можете вручную найти ее и отсканировать определения внизу.

Версия TrID для командной строки удобна для использования из командной строки или пакетных сценариев. Загрузите TrID и последний файл defs с веб-страницы и поместите их в одну папку. Затем укажите неизвестный файл в качестве аргумента, чтобы получить процентное предположение о типе файла, которое похоже на версию с графическим интерфейсом.

Есть и другие доступные аргументы, но они не требуются, если вы просто хотите, чтобы файл был распознан. Также можно создать простую цель перетаскивания для TrID, чтобы вы могли просто перетащить файл на значок, чтобы он открыл окно консоли с идентификацией (TrIDNet также принимает перетаскиваемый файл на свой значок). Создайте новый текстовый файл в Блокноте и добавьте следующие строки или загрузите готовый пакетный файл снизу.

Сохраните файл как TrID.bat и поместите его в ту же папку, что и TrID. Аргумент -w указывает TrID держать окно открытым, пока вы не нажмете любую клавишу.

<р>3. Эксифтул

Программа ExifTool — это, прежде всего, инструмент командной строки, который также можно использовать с рабочего стола. Просто извлеките исполняемый файл из zip-файла и, чтобы идентифицировать файл, перетащите его на значок ExifTool. Любые расширения файла будут проигнорированы, а его содержимое будет просканировано, поэтому не имеет значения, имеет ли файл расширение или просто неправильное расширение.

Exiftool в основном предназначен для просмотра и редактирования метаинформации, содержащейся в большинстве цифровых изображений. Но он также способен распознавать сотни различных файлов по их содержимому.После перетаскивания файла на значок откроется окно консоли с подробной информацией о файле, а также может содержать дополнительную информацию, такую ​​как сведения о теге изображения, информацию об архиве или описания исполняемого файла.

Дважды щелкните ExifTool, чтобы просмотреть справку, поддерживаемые типы и дополнительные команды, которые можно использовать. Не удаляйте «(-k)» из имени файла ExifTool, так как это команда, позволяющая держать окно результатов открытым, пока вы не нажмете Enter. Более продвинутые пользователи могут добавить в скобки другие команды ExifTool для обработки перетаскиванием.

<р>4. DROID (идентификация объекта цифровой записи)

DROID — это инструмент с открытым исходным кодом, разработанный Национальным архивом Великобритании для пакетной идентификации различных типов форматов файлов. Это делает его достаточно удобным для одновременной идентификации нескольких неизвестных файлов, а не по одному. Внутренняя база данных распознаваемых форматов файлов обычно обновляется несколько раз в год. DROID основан на Java, поэтому является многоплатформенным. Версия для Windows включает встроенную Java в Zip-файл, поэтому вам не нужно ее устанавливать.

Запустите программу, запустив Droid.bat из распакованного архива. Перетащите в окно несколько неизвестных файлов или нажмите кнопку «Добавить» для просмотра. Затем нажмите кнопку «Пуск», и результаты будут почти мгновенными. В столбце «Формат» указано, что это за файл, а в столбце PUID указана ссылка на Национальный архив со страницей с более подробной информацией о типе файла.

Если вы хотите добавить дополнительные файлы для идентификации, нажмите кнопку «Создать», чтобы открыть другую вкладку и создать новый профиль. Профили можно экспортировать или сохранить для последующего изучения. Вы также можете создать отчет, хотя он больше предназначен для статистического анализа, а не для получения полезной информации для обычного пользователя.

<р>5. Загрузите файл и идентифицируйте его в Интернете

Хотя первым вариантом в нашем списке является веб-сайт, который фактически обрабатывает файл локально в вашей системе, существуют и другие веб-сайты, которые работают по-другому. Вы можете загрузить файл на веб-сайт, и веб-сайт попытается идентифицировать файл на удаленном сервере. Вот парочка, которую стоит попробовать.

Проверить тип файла

Подождите, пока файл будет загружен, а затем нажмите кнопку «Проверить тип файла». Откроется новая вкладка с необходимой информацией о типе файла. Также может быть кнопка «Показать метаданные», которая отображает дополнительную информацию о медиафайлах. Максимальный размер файла для загрузки – 16 МБ, поэтому этот сервис не подходит для больших файлов.

Онлайн-идентификатор файла TRID

Это еще один вариант, который использует базу данных TrID для идентификации файлов и размещается на официальном веб-сайте TrID, как и соответствующие инструменты, перечисленные здесь.

<р>6. Найдите открывалку

Чтобы получить последние определения файлов, просто загрузите и распакуйте пакет TrIDDefs.TRD в папку Locate Opener TrID. Если программа нашла какие-либо совпадения через TrID, она выведет окно с наиболее вероятным процентным соотношением и предложит добавить расширение файла, которое лучше всего подходит. Программа также имеет командную строку, и несколько дополнительных параметров можно настроить с помощью файла настроек ini.

Несмотря на то, что программа Locate Opener была выпущена в 2009 году, база данных определений TrID, на которую она опирается, постоянно обновляется. Поэтому он по-прежнему может распознавать типы файлов, которые были выпущены после последней версии программы, например форматы Google WebP и WebM.

Если вы один из тех, кто хочет знать, как работают инструменты указанной службы, а также как их использовать на своем компьютере, то продолжайте чтение.

Если вам кажется, что проблема с определением типов файлов без расширений надуманная, то это далеко не так! Во-первых, если подумать, это непростая задача. А можно нарваться на файл без расширения, например, при декодировании строки из кодировки Base64.

Во-вторых, в этой статье будет продолжение, в котором те же инструменты, которые вы изучите на этой странице, будут использоваться для:

1) разбор прошивки (например, роутеров, IP-камер) на составные части (первый этап реверс-инжиниринга или анализ работы устройств для поиска уязвимостей и бэкдоров)

2) поиск файловых систем на дисках и их образов (первый этап судебной ИТ-экспертизы)

3) поиск удаленных файлов

Как определить тип данных, если у файла нет расширения

Если файл не имеет расширения, то единственным способом определить его тип является содержимое этого файла. Вы можете попробовать добавить к имени файла разные расширения и попытаться открыть программы, соответствующие расширению — этот вариант медленный и неэффективный.

Некоторые типы двоичных файлов могут иметь одинаковый набор байтов — эти байты можно использовать для соответствия типу файла. И именно этот метод используется программами, предназначенными для определения типа данных. Конкретные байты, как правило, не располагаются в самом начале файла, поэтому помимо самих байтов нужно знать смещение от начала, где эти байты должны располагаться. Некоторые программы, кроме байтов для идентификации, имеют еще и список для проверки на ложные срабатывания.

Такие шаблоны в английском языке часто называют магическими — это происходит от «магического числа» в исполняемых файлах. Эти файлы имеют «магический номер», хранящийся в определенном месте в начале файла, который сообщает операционной системе UNIX, что файл является двоичным исполняемым файлом и какой из нескольких типов. Концепция магического числа была применена к другим двоичным файлам. То есть файлы одного типа имеют одинаковую последовательность байтов в определенном месте от начала файлов.

Файл с сигнатурами, описывающими, какие именно байты, на каком расстоянии от начала файла характерны для файлов того или иного типа, обычно называют магическим файлом.

В дополнение к магическим числам можно использовать и другие методы, например, файловая программа также может использовать системный вызов stat для выполнения тестов файловых систем. Тип текстовых файлов определяется содержащимися в них строками (например, это может быть PHP-код, файл в формате XML или HTML-разметки, JSON и т. д.).

Команда file — мгновенно определяет тип любого файла

В Linux есть команда file с огромной базой сигнатур, которая очень быстро определяет тип файла:

Чтобы узнать, что представляет собой файл без расширения, выполните следующую команду:

То есть это текстовый файл офисного пакета Microsoft Office.

Вы можете указать сразу несколько файлов для проверки или использовать подстановочные знаки. Например, следующая команда проверит типы всех файлов в текущей папке:

Программа file имеет параметры, подробности см. в отдельной статье «Инструкции по использованию команды file».

Аналог команды file для Windows

file — это утилита командной строки для Linux, поэтому пользователям Windows нужна какая-то альтернатива. Давайте рассмотрим несколько способов использования файла в Windows.

1. Файловая утилита в Cygwin

Этот способ, на мой взгляд, самый простой. Просто скачайте Cygwin, и вы сможете использовать большинство утилит Linux. Для получения дополнительной информации, в том числе о том, как указать пути в файловой системе, см. «Как начать работу с командами Linux в Windows: Cygwin».

2.файл в WSL

Подсистема Windows для Linux (WSL) — это еще один способ использования утилит Linux в Windows. Подробнее о работе с WSL см. в справочном материале «WSL (подсистема Windows для Linux): советы, инструкции, устранение неполадок».

3. Скомпилированная «файловая» программа для Windows

Файлы отличаются архитектурой (64- и 32-разрядная), а также компилятором.

Распакуйте загруженный архив. Например, я помещаю загруженные файлы в папку C:\Users\MiAl\Downloads\file\.

Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».

Перейти в папку с программой:

Чтобы определить расширение файла, используйте команду вида:

Вы можете проверить сразу много файлов, для этого зайдите в папку с файловой утилитой и выполните такую ​​команду:

Например, я хочу проверить все файлы в папке Z:\testfiles\, тогда команда выглядит следующим образом:

4. TrID — это кроссплатформенная файловая альтернатива для Windows и Linux

Пример анализа файла — обратите внимание, что отображается несколько вариантов с указанием процентной вероятности каждого из них:

Если указать несколько файлов для идентификации, то будет отображаться только наиболее вероятный вариант типа файла:

Установка TRID в Windows

Распакуйте оба файла в одну папку.

Распакуйте загруженный архив. Например, я помещаю загруженные файлы в папку C:\Users\MiAl\Downloads\trid\.

Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».

Перейти в папку с программой:

Чтобы определить расширение файла, используйте команду вида:

Подстановочные знаки можно использовать для сканирования групп файлов, целых папок и т. д.

Кроме того, использование ключа -ae заставит TrID добавить предполагаемые расширения к именам файлов. Это удобно, например, при работе с файлами, восстановленными программами восстановления данных. Например:

На этом этапе файлы в папке c:\temp будут выглядеть следующим образом:

Вместо этого ключ -ce просто изменит расширение файла на новое; если у файла нет расширения, будет добавлено новое. Например:

  • IAmASoundFile.dat -> IAmASoundFile.wav
  • IAmABitmap -> IAmABitmap.bmp

TrID может получить список файлов из стандартного ввода с помощью переключателя -@.

Поэтому можно работать со всем деревом папок или определенным подмножеством файлов, просто используя вывод какой-либо другой команды через канал. Что-то вроде:

Можно указать TrID, чтобы он показывал дополнительную информацию о каждом совпадении (например, MIME-тип, кто создал это определение, сколько файлов было просканировано и т. д.); а также можно ограничить количество отображаемых результатов.

Переключатель -v активирует подробный режим, а -r:nn указывает максимальное количество совпадений, которые будет отображать TrID. Значение по умолчанию: 5 для обычного режима, 2 для подробного анализа, 1 для анализа нескольких файлов.

TrID обновляется нечасто, но база данных регулярно пополняется новыми сигнатурами, поэтому время от времени обновляйте базу данных.

5.fil — еще одна кроссплатформенная альтернатива файлу

Утилита fil написана на Go и является кроссплатформенной. Но подписей в программе так мало, что, на мой взгляд, утилита fil практически бесполезна.

Альтернативные файлы

Для большинства задач определения типа файла без расширения достаточно утилиты для работы с файлами, но существуют утилиты с соответствующей функциональностью, которые могут заменить или уточнить информацию из команды файла. Более подробно каждая из этих программ будет рассмотрена в следующей части, сейчас только краткий обзор.

Обнаружить легко

Detect It Easy — это кроссплатформенный инструмент для определения типов файлов. Существует вариант с графическим интерфейсом, а также с интерфейсом командной строки.

Чтобы проанализировать файл /mnt/disk_d/Share/testfiles/file1 и отобразить результаты в графическом интерфейсе:

Чтобы проанализировать файл /mnt/disk_d/Share/testfiles/file1 и отобразить результаты в интерфейсе командной строки:

Detect It Easy в первую очередь нацелен на анализ исполняемых файлов, поэтому его функции больше связаны с программными файлами, например, определение архитектуры. Но есть и поддержка других двоичных файлов.

Прогулка по мусору

Binwalk — это программа для анализа встроенного ПО, но она содержит множество сигнатур двоичных файлов, поэтому подходит для определения типа файла. Особенность Binwalk в том, что он нацелен на работу с составными файлами (которые обычно являются прошивками), поэтому может определить тип файла, даже если файла нет в начале.

Использование аналогично файлу, достаточно указать путь к одному или нескольким файлам:

Detect It Easy и Binwalk не столько конкуренты файловой утилиты, сколько «последний шанс» определить тип данных, если файловая команда не помогла.

Продолжение смотрите в статье «Как анализировать и разбивать составные файлы (прошивки, многораздельные образы дисков)».

Читайте также: