Me estoy ejecutando file
contra 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, file
aú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
file
no 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
file
comando viene con lamagic
base 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
magic
pá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:
long
significa 4 bytes en el endianness de la plataforma ;lelong
ybelong
significa 4 bytes en orden little-endian y big-endian respectivamente.En lugar de replicar las reglas, puede llamar a la
file
utilidad; POSIX lo especifica , pero los formatos que reconoce y las descripciones que genera no lo son. Alternativamente, puede vincularlibmagic
y llamar a la funciónmagic_file
omagic_buffer
.fuente
Tú podrías:
Ejecutar
file
desde su programaUse una biblioteca que brinde
file
la funcionalidad de su lenguaje de programación. por ejemplo,libmagic
para C,File::Libmagic
oFile::MMagic
paraperl
,python-magic
para python, etc.Por cierto, las definiciones que
file
utiliza para identificar archivos se encuentran en/etc/magic
. Consulteman 5 magic
los detalles del formato de archivo.fuente
/etc/magic
tiende a ser para su propio conocimiento mágico local. Las distribuciones tienden a reventar su magia genérica/usr/share/misc/magic
.