Me estoy ejecutando filecontra un archivo wallet.dat (un archivo en el que Bitcoin mantiene sus claves privadas) y aunque no parece haber ningún encabezado o cadena identificable, fileaún puedo decir que es un archivo Berkley DB, incluso si reducirlo a 16 bytes.
Sé que ese archivo estaba aplicando algún tipo de regla o buscando alguna secuencia para identificarlo. Quiero saber cuál es la regla que está aplicando aquí, para poder duplicarla en mi propio programa.
file-command
Nick ODell
fuente
fuente

fileno está mal en esta circunstancia.Respuestas:
Agarra la fuente del comando de archivo. La mayoría, si no todas las unidades de código abierto usan esta . El
filecomando viene con lamagicbase de datos, llamada así por los números mágicos que describe. (Esta base de datos también está instalada en su sistema en vivo, pero en forma compilada). Busque el archivo que contiene el texto descriptivo que ve:La
magicpágina del manual describe el formato del archivo. Las líneas de activación para "Berkeley DB" sonLa primera columna especifica el desplazamiento en el que se encuentra una determinada secuencia de bytes. La tercera columna contiene la secuencia de bytes. La segunda columna describe el tipo de secuencia de bytes:
longsignifica 4 bytes en el endianness de la plataforma ;lelongybelongsignifica 4 bytes en orden little-endian y big-endian respectivamente.En lugar de replicar las reglas, puede llamar a la
fileutilidad; POSIX lo especifica , pero los formatos que reconoce y las descripciones que genera no lo son. Alternativamente, puede vincularlibmagicy llamar a la funciónmagic_fileomagic_buffer.fuente
Tú podrías:
Ejecutar
filedesde su programaUse una biblioteca que brinde
filela funcionalidad de su lenguaje de programación. por ejemplo,libmagicpara C,File::LibmagicoFile::MMagicparaperl,python-magicpara python, etc.Por cierto, las definiciones que
fileutiliza para identificar archivos se encuentran en/etc/magic. Consulteman 5 magiclos detalles del formato de archivo.fuente
/etc/magictiende a ser para su propio conocimiento mágico local. Las distribuciones tienden a reventar su magia genérica/usr/share/misc/magic.