Где найти информацию о формате файла?


47

Предположим, что я нашел «некоторый» файл (может быть исполняемый файл, может быть, данные или что-то еще) и хотите запустить или прочитать его. Я открываю этот файл в текстовом редакторе, но формат не читается. Примеры: Java-класс, исполняемый файл Windows, база данных SQLite, DLL, ...

Я знаю формат файла, если мы можем доверять расширению.

Есть ли сайт или база данных с большим количеством информации о много зашифрованных или двоичных форматах файлов? Информация должна включать в себя:

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

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

+3

Я предположил бы, что все эти данные отправляются в дикой природе. Я не вижу никакой группы, способной поддерживать согласованный сбор всех спецификаций всех форматов. Но я мог бы просто быть невежественным. :) 04 апр. 132013-04-04 07:59:04

+1

Итак, у вас есть файл с недокументированным форматом? Я думаю, что вопрос все еще сформулирован несколько неоднозначно даже сейчас. Кроме того, закрытие, которое вы получите, - это Wotsit и подобные сайты. Все остальное, скорее всего, будет сайтом, охватывающим * домен * знания о том, для чего используется конкретный формат. 04 апр. 132013-04-04 17:23:22

+1

@ 0xC0000022l Да, я намеревался держать вопрос как можно шире, но это не пошло хорошо. У меня нет конкретного файла примера, на который я смотрю в данный момент, я просто хотел знать, было ли центральное место с информацией о формате файла. Wotsit действительно очень хороший, как упоминалось [в этом ответе] (http://reverseengineering.stackexchange.com/a/1573/187). 04 апр. 132013-04-04 17:25:21

  0

Я нахожу вопрос интересным, однако, все хорошие сайты и библиотеки, о которых я могу сейчас думать, уже упоминались, так вы на самом деле сейчас (из-за щедрости), которые ищут точную методологию? 21 апр. 132013-04-21 15:41:47

  0

@ Ange Hachoir - лучшее, что я видел до сих пор, поскольку многие вещи были упомянуты, возможно, список CW будет лучше. Если нет, я просто воспользуюсь щедростью, чтобы вознаградить существующий ответ. Особенно вещь Hachoir кажется подходящей для этой ИМО. 21 апр. 132013-04-21 15:43:28

  0

Действительно, Hachoir - это был мой первый ответ - как с точки зрения того, что уже поддерживается, так и с его расширением (его структура упрощает добавление новых форматов, [пример] (https://bitbucket.org /haypo/hachoir/src/9bae02ddf53ea7284f7a431654849ad5e553c429/hachoir-parser/hachoir_parser/program/exe_pe.py)). 21 апр. 132013-04-21 15:44:43

35

Я разработчик для Hachoir project, который предназначен для описания формата любого файла до уровня бит. В настоящее время в нем есть парсеры для ряда известных форматов, включая классы Java, исполняемые файлы Windows, файлы MP3 и т. Д. Полный список парсеров можно найти в подкаталогах here.

При работе над новым парсером для hachoir_parser часто бывает необходимо найти информацию о формате файла. Нет единого источника, описывающего каждый формат (даже если Hachoir стремится стать этим источником, он не является достаточно полным). Как правило, первым шагом является поиск <file format name> file format, например. java class file format, и ищите документацию на официальных сайтах (для классов Java это вызывает документацию Oracle, которая должна быть все, что вам нужно). Если официальных сайтов нет, вы, возможно, по-прежнему будете получать документацию от тех, кто работал в прошлом в прошлом.

Для распространенных форматов файлов это означает, что форматная спецификация требуется примерно в 90-95% случаев. Крупные компании-разработчики программного обеспечения, такие как Oracle и Microsoft, публикуют свои спецификации формата файлов в Интернете для обеспечения совместимости. Например, вы можете найти документацию для PE (Windows EXE/DLL), форматов MS Office (XLS, PPT, DOC) и других форматов Microsoft, просматривая или просматривая MSDN.

Для мультимедийных форматов Multimedia Wiki - отличный ресурс. Они также охватывают некоторые форматы игровых файлов.

Для менее распространенного формата файла, для которого я не нахожу спецификацию (или подходящее описание) из Google, мой подход обычно заключается в том, чтобы найти программу с открытым исходным кодом, которая действительно понимает файл, и либо найти их спецификацию формата source (если описано в commit или README), или для чтения исходного кода непосредственно для их просмотра.

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

+2

Я большой поклонник проекта Hachoir. Я использую его в течение многих лет. Продолжайте в том же духе. 08 апр. 132013-04-08 20:43:20

+1

Один из парней на XentaX также написал сценарий/фреймворк под названием QuickBMS, что довольно удивительно. Похоже, что это может быть полезно для Хахуара. http://aluigi.altervista.org/quickbms.htm 19 авг. 132013-08-19 06:34:27

  0

Ссылка на битбакет не работает. Многие сайты, ссылающиеся на проект, также используют эту ссылку. Итак, что случилось? Это тот же проект: https://github.com/vstinner/hachoir3? Его README относится к версии python2 в bitbucket, но под другим пользователем. 23 фев. 182018-02-23 21:09:41

  0

Это тот же проект. Я обновлю свой пост. 23 фев. 182018-02-23 22:09:54


4

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

+1

Извините, я не был чист. Я знаю тип файла (на основе расширения), но вам нужна информация о формате файла, чтобы иметь возможность читать или выполнять его. 04 апр. 132013-04-04 08:04:33

  0

@CamilStaps Итак, если я правильно понял, вы говорите о такой ситуации, когда у вас есть файл (например, DLL), но не знаете, в чем его цель (например, какая программа использует его)? 04 апр. 132013-04-04 08:09:47

+1

Да, это, _and_, какова цель этого конкретного файла. Так, например, я хотел бы посмотреть, что делает _that_ DLL-файл.Поэтому мне нужна информация о формате файла, а [this] (http://filext.com/file-extension/DLL) не предоставляет достаточной информации. 04 апр. 132013-04-04 08:21:52

+1

Чтобы узнать, что делает DLL-файл, вам нужно его разобрать, как и любой другой двоичный файл. :) 04 апр. 132013-04-04 08:35:05

  0

@CamilStaps DLL-файл представляет собой сложную структуру данных, которая содержит любую из нескольких простых структур данных, таких как код и ресурсы, в любой комбинации. Архитектура этой структуры данных зависит от программиста, который его создал, когда его программа должна была иметь его. 04 апр. 132013-04-04 08:39:48

  0

@CamilStaps То же самое с множеством разных типов файлов, которые поднимают ваш вопрос. Кажется, было бы полезно просмотреть эту сложную структуру данных для более простых структур данных внутри нее, а затем проанализировать каждую из них. Когда вы проходите этот процесс, вы постепенно становитесь все более и более осведомлены об этом файле. 04 апр. 132013-04-04 08:43:28

+2

В качестве примера я упомянул только DLL. Я хотел бы знать, есть ли стандартное место, к которому нужно обратиться, когда ему нужна подробная информация о формате файла. 04 апр. 132013-04-04 15:59:36


6

Если я понимаю корр. ect, вам нужно идентифицировать файл? Прежде всего - расширение не гарантирует 100%, что файл - это то, что он притворяется. Вы легко можете переименовать binary.dll в binary.dat или binary.hhh и по-прежнему создавать ассоциацию файлов или загружать их как DLL.

Для того, чтобы идентифицировать файл, Вы можете использовать TrID Marco Pontello.

Кроме того, шестнадцатеричный редактор - удобный способ просмотра потоков и всех типов дампов.

Когда вы идентифицируете файл - Google поможет вам найти правильный способ редактирования \ открыть \ выполнить файл.

+1

Спасибо, что рассказали о TrID, я не знал о такой замечательной программе :) 04 апр. 132013-04-04 08:46:36

+1

Всегда приветствую, Джейк :) 04 апр. 132013-04-04 08:48:12

+2

Спасибо за ваш ответ, но мне не нужно идентифицировать файл. Я уже знаю формат (предположим, что на данный момент расширение прав, но нужно иметь информацию об этом формате - например, как структурирован файл. 04 апр. 132013-04-04 15:58:47

+1

Затем, как я уже сказал, Google поможет вам найти правильный RFC или подробную информацию о формате файла. как для .DLL - он структурирован почти так же .EXE, за исключением экспортной части PE-заголовка. 04 апр. 132013-04-04 16:08:15


28

file(1), а также базовые libmagic(3), команды отпечатков пальцев на основе содержимого файла. Например:

 $file test.c 
test.c: ASCII text$ file test.exe 
test.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit 
 $file test 
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped$ file database.sqlite 
database.sqlite: SQLite 3.x database 

Эта информация может быть использована для поиска в Интернете для фактического стандарта, RFC, ...


Другой ресурс может быть 010 Editor binary templates, которые включают в себя много разных форматы файлов и которые вы можете настраивать или разрабатывать с нуля.


Существует немецкой книга, которую я знаю, называюсь Dateiformate(немецкий для: файла формат).


Wikipedia - List of file formats содержит много ссылок с информацией о некоторых форматах

+3

Если бы это был ответ, не вопрос был бы дубликатом [этого] (http://reverseengineering.stackexchange.com/questions/324/how-should-i-determine-the-format-of-this-audio -файл)? Я думаю, он хочет иметь базу данных спецификаций форматов файлов. Не только магические числа. 04 апр. 132013-04-04 15:38:49

+3

Точно. Ваш ответ полезен, но не ответ на вопрос. Я знаю формат файла, мне нужно иметь информацию об этом формате - например, как структурирован файл. 04 апр. 132013-04-04 15:57:36

  0

Вы правы. Вид неверно истолковал вопрос. Я просто вспомнил, что видел книгу с большим количеством форматов файлов в «библиотеке» моего локального хакерского пространства. Это немецкая книга, но, возможно, кто-то может найти английскую версию. Я обновил свой ответ. 08 апр. 132013-04-08 16:25:57


12

Мне нравится file, чтобы определить тип файла из магии заголовка и Wotsit для стандартных форматов файлов/документация/обратная структуры формата файлов по другие люди.

Fileformat.info был предложен в качестве другого ресурса для тех, кто не любит Wotsit или считает, что он устарел.

+1

Wotsit на самом деле не очень хороший выбор: проблемы с загрузкой (фактически сейчас!), Плохо организованная коллекция. 05 апр. 132013-04-05 10:54:07

+1

@ user539484: если вам не нравится организация, используйте операторы 'site:' или 'inurl:' определенной поисковой системы с G, чтобы иметь расширенный инструмент поиска. 05 апр. 132013-04-05 17:05:28

+1

@ 0xC0000022L, вроде как с некоторой помощью с 'wotsit.org' ... Он застрял в 1990-х годах. Коллекция 'fileformat.info' является почти такой же широкой и удобной для читателя. Чтобы продемонстрировать разочарование, может быть вызвано wotsit, я бы предложил попытку получить публикации, связанные с публикацией новых исполняемых файлов, из коллекции Wotsit. 05 апр. 132013-04-05 18:19:32

+1

@ user539484 - Тогда почему бы просто не добавить его? Другие ответы не дают вам никакого ресурса. Просто «вот инструмент такого рода работ». 05 апр. 132013-04-05 19:01:26

+2

@Call me V, fileformat.info уже указан. Я также использую Википедию, иногда их статьи с макетом на удивление хороши и техничны. 05 апр. 132013-04-05 21:16:38


1

DROID из Национального архива Великобритании также полезен для идентификации форматов файлов.

+1

У меня уже есть _identified_ формат, мне нужна информация об этом формате. 05 апр. 132013-04-05 06:19:28

  0

DROID ссылки на базу данных pronom (http://www.nationalarchives.gov.uk/PRONOM/Default.aspx). Викидата - еще один вариант, например. https://www.wikidata.org/wiki/Q2141903 10 ноя. 162016-11-10 21:27:58


3

В большинстве форматов файлов есть заголовки, такие как P K 0x03 0x04 для zip-файлов или 0x89 P N G 0x0D 0x0A 0x1A 0x0A для файлов PNG.

Итак, в большинстве случаев вам просто нужно прочитать первые байты, чтобы узнать формат файла.

Вы найдете множество описаний форматов файлов на http://www.fileformat.info/format/all.htm


3

О мультимедийных форматов: http://wiki.multimedia.cx/index.php?title=Main_Page

Signsrch найти шаблоны в файле: http://aluigi.altervista.org/mytoolz.htm, как binwalk: http://code.google.com/p/binwalk/

+1

и вы можете найти информацию о формате файла Amiga здесь: http://lclevy.free.fr/amiga/formats.html, о формате Canon Raw v2 здесь : http://lclevy.free.fr/cr2/, Формат MO3 (сжатый модуль): http://lclevy.free.fr/mo3/ 06 апр. 132013-04-06 10:36:53


5

Как и во многих вещи, если вам нужна дополнительная информация, Википедия - это ответ. Он содержит только подробную информацию для некоторых форматов, но обычно имеет ссылки на более подробные технические описания форматов. Вы как-то должны угадать, в какой статье будет находиться формат файла, но во многих случаях вы можете найти хорошую информацию по (по крайней мере) многим из наиболее распространенных форматов. Это не идеальный вариант - возможно, это был бы полезный проект для создания новой «файловой формы» wiki, но у него есть приличный объем информации.

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

Несколько примеров:


5

Проверьте проект Hachoir. Это именно то, что вы ищете. Hachoir-subfile отлично, потому что вы можете передать ему поток файлов, и он будет идентифицировать все внедренные типы файлов, размер (если можно рассчитать) и их смещение. Hachoir и dd - два из моих любимых инструментов для вырезания файлов из потоков данных. Если вы используете ubuntu типа sudo apt-get install hachoir, тогда запустите hachoir-subfile <file_stream>.

Если вам нужно углубиться в поток, вы можете использовать hachoir-urwid. Он разбивает файл на известные структуры.

+1

Я не вижу, где Hachoir дает информацию о конкретном формате ? Это всего лишь идентификатор файла. 08 апр. 132013-04-08 14:46:28

+4

[Отказ от ответственности: я разработчик Hachoir.] Hachoir анализирует файлы в нескольких известных форматах, чтобы представить представление содержимого файла вместе с описаниями для определения каждого поля в файле. Цель Hachoir - понять файл до уровня бит. Таким образом, Hachoir используется гораздо больше, чем идентификация файла - он может выполнять извлечение поля, модификацию поля и предоставляет текстовые описания каждого поля в файле. 08 апр. 132013-04-08 15:44:48


9

Lets Solve the File Format Problem wiki охватывает довольно много неясных форматов и стоит проверить, не видела ли Википедия работу для вас. Это также хорошее место для внесения очень подробных или неясных вещей, которые Википедия может считаться недоступными.

Вы можете найти помощь или совет от библиотеки и архивного сообщества цифрового сохранения, которое в течение ряда лет занимается проблемами такого рода. Open Planets Foundation - хорошее место для начала. В частности, сообщество (с которым я работаю) собирает примеры трудных или поврежденных форматов файлов на основе GITUB Format Corpus. Вклад в это может быть полезен при привлечении советов экспертов, и, конечно же, это помогает разработать полезный ресурс для разработчиков инструментов цифровой защиты (для тестирования и проверки). Файлы должны быть CC0, однако!

Наконец, другим проспектом для дальнейшего изучения станет сообщество цифровой криминалистики. Например, у National Software Reference Library есть некоторые полезные ресурсы, которые могут помочь вам в области вашей задачи.


0

Это инструмент, который я использовал, когда мне нужно было распознавать формат файла или файлы внутри (большого) дампа. У этого есть большой файл BD подписи, который вы/люди можете внести.

Signsrch 0.2.4 (signsrch)

инструмента для поиска подписи в файлах, чрезвычайно полезен в реверсивного инжиниринга для выяснения или иметь первоначальное представление о том, что алгоритм сжатия/ шифрования используется для проприетарный протокол или файл . он может распознавать множество компрессии, мультимедиа и шифрования и многие другие вещи, такие как известные строки и анти-отладочные коды , которые также можно добавлять вручную, поскольку все они основаны на текстовом файле подписи , который читается во время выполнения и легко модифицируется. поддерживает многопоточности, сканирование папок с помощью символов, сканирование процессов, преобразование смещений исполняемых в смещениях памяти, загрузки пользовательских файлов сигнатуры и их автоматическую проверку избежать ошибок, автоматическое обнаружение инструкций, которые ссылаются на найденных подписей (например, «Найти ссылки» Ollydbg) и запуск исполняемого файла, помещающего INT3-байт в нужную память offset (например, один из тех, которые были получены с опцией -F, смотрите видеорежим для примера). инструмент поддерживает 8, 16, 32 и 64 бит, поплавок и двойное плюс автоматическое создание таблицы CRC и стиль C строки.

Источник: http://aluigi.altervista.org/mytoolz.htm

  0

Поскольку ОП прокомментировал пять аналогичных ответов: нет необходимости указывать, он уже знает, что такое тип файла. 27 авг. 162016-08-27 01:23:00

  0

Суть заключается в том, чтобы помочь другим, которые могут иметь тот же вопрос позже. 28 авг. 162016-08-28 08:33:03