Я работаю file
с файлом wallet.dat (файл, в котором Биткойн хранит свои закрытые ключи), и, хотя кажется, что в нем нет идентифицируемого заголовка или строки, я file
все равно могу сказать, что это файл Berkley DB, даже если я сократить до 16 байтов.
Я знаю, что файл применял какое-то правило или искал последовательность для его идентификации. Я хочу знать, какое правило здесь применяется, чтобы я мог продублировать его в своей программе.
file-command
Ник Оделл
источник
источник
file
не ошибается в этом случае.Ответы:
Возьмите источник файловой команды. Большинство, если не все открытые источники, используют этот . Команда
file
поставляется сmagic
базой данных, названной в честь магических чисел, которые она описывает. (Эта база данных также установлена в вашей действующей системе, но в скомпилированной форме.) Найдите файл, который содержит текст описания, который вы видите:Страница
magic
man описывает формат файла. Триггерные линии для «Berkeley DB»:Первый столбец указывает смещение, при котором должна быть найдена определенная последовательность байтов. Третий столбец содержит последовательность байтов. Второй столбец описывает тип последовательности байтов:
long
означает 4 байта в порядке следования платформы ;lelong
иbelong
означают 4 байта в порядке с прямым и младшим порядком байтов соответственно.Вместо того, чтобы копировать правила, вы можете вызвать
file
утилиту; он определяется POSIX , но форматы, которые он распознает, и описания, которые он выводит, не являются. Кроме того, вы можете связатьlibmagic
и вызвать функциюmagic_file
илиmagic_buffer
.источник
Вы могли бы:
Запустите
file
из вашей программыИспользуйте библиотеку, которая обеспечивает
file
функциональность вашего языка программирования. например,libmagic
для C,File::Libmagic
илиFile::MMagic
дляperl
,python-magic
для Python и т. д.Кстати, определения, которые
file
используются для идентификации файлов находятся в/etc/magic
. Смотрите информациюman 5 magic
о формате файла.источник
/etc/magic
как правило, для вашего собственного локального знания магии. В дистрибутивах свойственно волшебство/usr/share/misc/magic
.