Возьмите источник файловой команды. Большинство, если не все открытые источники, используют этот . Команда file
поставляется с magic
базой данных, названной в честь магических чисел, которые она описывает. (Эта база данных также установлена в вашей действующей системе, но в скомпилированной форме.) Найдите файл, который содержит текст описания, который вы видите:
grep 'Berkeley DB' magic/Magdir/*
Страница magic
man описывает формат файла. Триггерные линии для «Berkeley DB»:
0 long 0x00061561 Berkeley DB
0 belong 0x00061561 Berkeley DB
12 long 0x00061561 Berkeley DB
12 belong 0x00061561 Berkeley DB
12 lelong 0x00061561 Berkeley DB
12 long 0x00053162 Berkeley DB
12 belong 0x00053162 Berkeley DB
12 lelong 0x00053162 Berkeley DB
12 long 0x00042253 Berkeley DB
12 belong 0x00042253 Berkeley DB
12 lelong 0x00042253 Berkeley DB
12 long 0x00040988 Berkeley DB
12 belong 0x00040988 Berkeley DB
12 lelong 0x00040988 Berkeley DB
Первый столбец указывает смещение, при котором должна быть найдена определенная последовательность байтов. Третий столбец содержит последовательность байтов. Второй столбец описывает тип последовательности байтов: long
означает 4 байта в порядке следования платформы ; lelong
и belong
означают 4 байта в порядке с прямым и младшим порядком байтов соответственно.
Вместо того, чтобы копировать правила, вы можете вызвать file
утилиту; он определяется POSIX , но форматы, которые он распознает, и описания, которые он выводит, не являются. Кроме того, вы можете связать libmagic
и вызвать функцию magic_file
или magic_buffer
.