Возьмите источник файловой команды. Большинство, если не все открытые источники, используют этот . Команда fileпоставляется с magicбазой данных, названной в честь магических чисел, которые она описывает. (Эта база данных также установлена в вашей действующей системе, но в скомпилированной форме.) Найдите файл, который содержит текст описания, который вы видите:
grep 'Berkeley DB' magic/Magdir/*
Страница magicman описывает формат файла. Триггерные линии для «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.