Provided by:
manpages-es-extra_0.8a-17_all 
NOMBRE
magic - fichero de numeros magicos para la orden file
DESCRIPCI'ON
Esta pagina del Manual documenta el formato del fichero magico que
emplea la orden file(1), version 3.26. La orden file identifica el tipo
de un fichero utilizando, entre otras pruebas, una que mira si el
fichero empieza con un cierto n'umero m'agico. El fichero
/usr/share/misc/magic especifica que numeros magicos hay que buscar,
que mensaje mostrar si se encuentra un numero magico en particular, e
informacion adicional que haya que extraer del fichero.
Cada linea del fichero especifica una prueba a realizar. Una prueba
compara los datos que comiencen en una posicion particular en el
fichero con un valor numerico de 1, 2 o 4 bytes o una cadena de
caracteres. Si la prueba tiene exito, se muestra un mensaje. La linea
consiste en los campos siguientes:
desplazamiento
Un numero que especifica el desplazamiento, en bytes, desde el
principio del fichero de datos que se este comprobando.
tipo El tipo de los datos a comprobar. Los valores posibles son:
byte Un valor de un byte.
short Un valor de dos bytes (en la mayoria de los sistemas)
en el orden de bytes nativo de la maquina.
long Un valor de cuatro bytes (en la mayoria de los
sistemas) en el orden de bytes nativo de la maquina.
string Una cadena de bytes.
date Un valor de cuatro bytes interpretado como una fecha
de Unix.
beshort Un valor de dos bytes (en la mayoria de los sistemas)
en orden de bytes ascendiente hacia la derecha.
belong Un valor de cuatro bytes (en la mayoria de los
sistemas) en orden de bytes ascendente hacia la
derecha.
bedate Un valor de cuatro bytes (en la mayoria de los
sistemas) en orden de bytes ascendente hacia la
derecha, interpretado como una fecha de Unix.
leshort Un valor de dos bytes (en la mayoria de los sistemas)
en orden de bytes ascendente hacia la izquierda.
lelong Un valor de cuatro bytes (en la mayoria de los
sistemas) en orden de bytes ascendente hacia la
izquierda.
ledate Un valor de cuatro bytes (en la mayoria de los
sistemas) en orden de bytes ascendente hacia la
izquierda, interpretado como una fecha de Unix.
Los tipos numericos pueden opcionalmente ir seguidos por & y un valor
numerico, para especificar la operacion de bits Y con dicho valor antes
de que se realice la comparacion. Preceder el tipo de una u indica que
las comparaciones ordenadas deben hacerse sobre valores sin signo.
test El valor a ser comparado con el valor del fichero. Si el tipo es
numerico, este valor se especifica como en el lenguaje C; si es
una cadena, como una cadena de caracteres de C, permitiendose
las secuencias de escape habituales (como \n para la nueva
linea).
Los valores numericos pueden hacerse preceder por un caracter
que indique la operacion a realizarse. Puede ser =, para
especificar que el valor del fichero debe igualar al
especificado, <, para especificar que el valor del fichero debe
ser menor que el valor especificado, >, para especificar que el
valor del fichero debe ser mayor que el valor especificado, &,
para especificar que el valor del fichero debe tener a 1 todos
los bits que esten a 1 en el valor especificado, ^, para
especificar que el valor del fichero debe tener a 0 cualquiera
de los bits que esten a 1 en el valor especificado, o x, para
especificar que cualquier valor concordara. Si el caracter se
omite, se asume que es =.
Los valores numericos se especifican como en C; por ejemplo, 13
es en base diez, 013 es octal, y 0x13 es hexadecimal.
Para valores de cadena, la cadena de bytes del fichero debe
concordar con la cadena de bytes especificada. Los operadores
=, < y > (pero no &) pueden aplicarse a cadenas. La longitud
empleada para la concordancia es la del argumento cadena en el
fichero magico. Esto significa que una linea puede concordar con
cualquier cadena, y por tanto presumiblemente mostrarla,
haciendo >\0 (porque todas las cadenas son mayores que la cadena
nula).
mensaje
EL mensaje a mostrarse si la comparacion tiene exito. Si la
cadena contiene una especificacion de formato como las de
printf(3S), el valor del fichero (con cualquier enmascaramiento
especificado ya realizado) se muestra empleando el mensaje como
la cadena de formato.
Algunos formatos de fichero contienen informacion adicional que se
mostrara junto con el tipo del fichero. Una linea que comience con el
caracter > indica pruebas y mensajes a mostrarse adicionales. El numero
de > en la linea indica el nivel de la prueba; una linea sin ningun >
al principio se considera que esta en el nivel 0. Cada linea en el
nivel n+1 esta bajo el control de la linea en el nivel n mas cercano
que la preceda en el fichero magico. Si la prueba en una linea en el
nivel n tiene exito, se realizan las pruebas especificadas en todas las
lineas subsiguientes en el nivel n+1 y se muestran los mensajes si las
pruebas tienen exito. La linea siguiente en el nivel n termina con
esto. Si el primer caracter que siga al ultimo > es un ( entonces la
cadena tras el parentesis se interpreta como un desplazamiento
indirecto. Eso significa que el numero tras el parentesis se emplea
como un desplazamiento en el fichero. Se lee el valor en tal
desplazamiento, y se emplea de nuevo como un desplazamiento en el
fichero. Los desplazamientos indirectos son de la forma:
((x[.[bslBSL]][+-][y]). El valor de x se emplea como un desplazamiento
en el fichero. Se lee en tal sitio un byte, un entero corto o uno
largo, dependiendo del especificador de tipo [bslBSL]. Los tipos en
mayusculas interpretan el numero como un valor ascendente hacia la
derecha, mientras que las versiones en minusculas lo interpretan como
ascendente hacia la izquierda. A ese numero se le suma el valor de y y
el resultado se emplea como un desplazamiento en el fichero. El tipo
predeterminado si no se especifica uno es long, un entero largo.
A veces uno no sabe la posicion exacta puesto que esta depende de la
longitud de los campos anteriores. Entonces se puede especificar un
desplazamiento o posicion relativa al final del ultimo campo del nivel
superior (por supuesto esto solo puede hacerse para pruebas en
subniveles, como en las que empiezan con >). Tal desplazamiento
relativo se especifica empleando & como prefijo del desplazamiento.
FALLOS
Los formatos long, belong, lelong, short, beshort, leshort, date,
bedate, y ledate son dependientes del sistema; quizas deberian
especificarse como un numero de bytes (2B, 4B, etc.), puesto que los
ficheros que se estan reconociendo vienen normalmente de un sistema en
el que las longitudes son invariantes.
No hay (actualmente) soporte para que se empleen datos con sexo
(endianess) especificado en desplazamientos indirectos.
V'EASE TAMBI'EN
file(1) - la orden que lee este fichero.
Dominio Publico MAGIC(4)