Agarre a fonte do comando do arquivo. A maioria, se não todas, as fontes abertas usam este . O comando file
vem com o banco de dados magic
, nomeado após os números mágicos descritos por ele. (Este banco de dados também está instalado em seu sistema ativo, mas em um formato compilado.) Procure o arquivo que contém o texto descritivo que você vê:
grep 'Berkeley DB' magic/Magdir/*
A magic
man page descreve o formato do arquivo. As linhas de disparo para “Berkeley DB” são
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
A primeira coluna especifica o deslocamento no qual uma certa seqüência de bytes deve ser encontrada. A terceira coluna contém a seqüência de bytes. A segunda coluna descreve o tipo de seqüência de bytes: long
significa 4 bytes na endianness da plataforma; lelong
e belong
significam 4 bytes na ordem little-endian e big-endian, respectivamente.
Em vez de replicar as regras, convém chamar o utilitário file
; é especificado por POSIX , mas os formatos que ele reconhece e as descrições que ele gera não são . Como alternativa, você pode vincular a libmagic
e chamar a função magic_file
ou magic_buffer
.