¿Dónde puedo encontrar una lista de números mágicos comunes utilizados para comenzar los archivos?

El comando file (1) viene con una base de datos muy completa.
ftp://ftp.astron.com/pub/file/
Por ejemplo, del archivo 5.11 / magic / Magdir / elf:

  0 cuerdas \ 177ELF ELF
 > 4 bytes 0 clase no válida
 > 4 bytes 1 de 32 bits
 > 4 bytes 2 de 64 bits
 > 5 bytes 0 orden de bytes no válido
 > 5 bytes 1 LSB
 >> 16 leshort 0 sin tipo de archivo,
 !: fuerza * 2
 !: mime application / octet-stream
 >> 16 leshort 1 reubicables,
 !: mime application / x-object
 >> 16 leshort 2 ejecutable,
 !: aplicación mime / x-ejecutable
 >> 16 leshort 3 objeto compartido,
 !: aplicación mime / x-sharedlib
 >> 16 leshort 4 archivo central
 !: aplicación mime / x-coredump
 # La detección de archivos principales no es confiable.
 # >>> (0x38 + 0xcc) cadena> \ 0 de '% s'
 # >>> (0x38 + 0x10) largo> 0 (señal% d),
 >> 16 leshort y 0xff00 específico del procesador,
 >> 18 leshort 0 sin máquina,
 >> 18 leshort 1 AT&T WE32100 - orden de bytes no válida,
 >> 18 leshort 2 SPARC - orden de bytes inválido,
 >> 18 leshort 3 Intel 80386,
 >> 18 de leshort 4 Motorola
 >>> 36 lelong & 0x01000000 68000 - orden de bytes no válida,
 >>> 36 lelong y 0x00810000 CPU32 - orden de bytes no válida,
 >>> 36 lelong 0 68020 - orden de bytes no válida,
 ...

Esta información es utilizada por el archivo (1) y otros programas que usan la biblioteca libmagic para detectar automáticamente el formato de un archivo desconocido.

  $ archivo / usr / bin / archivo
 / usr / bin / file: ELF 64-bit LSB ejecutable, x86-64, versión 1 (SYSV), vinculado dinámicamente (usa libs compartidas), para GNU / Linux 2.6.24, BuildID [sha1] = 0x865b7e2edac459e3d457afd0874d2da3b2c17dc3, despojado

Curiosamente, el bytecode de Java y los archivos fat de Mach-O comparten el mismo número mágico 0xcafebabe, y se necesitan pruebas adicionales para distinguirlos (ver archivo-5.11 / magic / Magdir / cafebabe).

Algunos ejemplos:

  • Archivos de clase Java: 0xcafebabe
  • Ejecutables ELF: 0x7f454c46
  • Ejecutables de Mach-o: 0xfeedface / 0xfeedfacf