¿Qué significa "pruebas mágicas" para el comando de archivo?


20

Estaba leyendo sobre el filecomando y me encontré con algo que no entiendo:

el archivo está diseñado para determinar el tipo de archivo que se está consultando ... el archivo logra esto mediante la realización de tres conjuntos de pruebas en el archivo en cuestión:

  • pruebas del sistema de archivos,
  • pruebas de magia ,
  • pruebas de idioma

¿Qué son las pruebas mágicas ?

Respuestas:


15

Eso se refiere a los "bytes mágicos" que tienen muchos formatos de archivo al comienzo de un archivo que muestran qué tipo de archivo es este.

Por ejemplo, si un archivo comienza con, #!entonces se considera un script.


28

"magia" aquí se refiere a " números mágicos ": un valor especial que está en un lugar conocido en un archivo que identifica su tipo. El filecomando tiene una base de datos de estos números y a qué tipo corresponden. La biblioteca que acompaña a esa base de datos se llama libmagic , y puede acceder a ella desde sus propios programas.

No son necesariamente "números" como podríamos pensar en ellos. Por ejemplo, un archivo de imagen PNG siempre comienza con "\ x89PNG \ r \ n \ x1a \ n", una clase Java comienza con los cuatro bytes (en hexadecimal) CA FE BA BE, y un archivo HTML tiene "<html" en alguna parte cerca del inicio Es solo una pequeña secuencia de datos que se sabe que está en un archivo de ese tipo, generalmente muy cerca del inicio.

Cuando las personas definen formatos de archivo, a menudo incluyen uno de estos, ya sea deliberadamente o simplemente como parte de hacer que el formato se ajuste. filepuede usarlos después. También tiene otras formas de mirar el contenido del archivo para adivinar qué es ("pruebas de idioma").


66
Tenga en cuenta que originalmente, los "números mágicos" eran, específicamente, los primeros dos bytes de un archivo ejecutable, utilizados por el núcleo para cargarlo de la manera apropiada. #!es en realidad un ejemplo de esto, porque se supone que el núcleo en sí mismo, al ver esos bytes, invoca el comando que sigue.
IMSoP
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.