Saltar al contenido
BouseMuttonBouseMutton

¿Qué es un número mágico?

El número mágico es la secuencia corta y fija de bytes al principio de cada archivo. Identifica el formato antes de leer ninguna extensión. Esta página cubre cómo funcionan, qué pinta tienen las firmas más habituales y por qué una comprobación de bytes mágicos gana siempre a una comprobación por el nombre del archivo.

  • Explicación en lenguaje claro
  • 14 formatos cubiertos
  • Los bytes nunca salen de tu navegador

Datos clave

  • ¿Qué es?

    Un número mágico es una secuencia fija de bytes (normalmente de 2 a 8 bytes) al principio de un archivo que identifica el formato.

  • ¿Dónde vive?

    Casi siempre en el desplazamiento 0 de bytes. Las imágenes de disco ISO 9660 son la excepción conocida: su firma CD001 está en el desplazamiento 32769 (sector 16).

  • ¿Extensión o bytes?

    Ganan los bytes. Renombrar report.exe como report.pdf cambia la etiqueta, no el contenido. Los bytes mágicos siguen siendo 4D 5A.

  • Lo que recibes

    Nuestro Comprobador de tipo de archivo da uno de cuatro veredictos: MATCH, MISMATCH, AMBIGUOUS o UNKNOWN. Cada uno es una respuesta determinista sobre la identidad de formato, no sobre la seguridad.

  • Privacidad

    El flujo gratuito de un solo archivo se ejecuta entero en tu navegador. Los bytes nunca salen de tu dispositivo.

  • Alcance en cuanto a seguridad

    Una comprobación de bytes mágicos identifica el formato, no el malware. Úsala como primera señal, no como veredicto de virus.

Un número mágico (también llamado firma de bytes mágicos o firma de archivo) es una secuencia corta y fija de bytes escrita justo al principio de un archivo que identifica su verdadero formato. El sistema operativo lo usa antes que cualquier extensión. La extensión es solo una pista; el número mágico es la verdad.

Referencia de firmas de bytes mágicos

14 firmas muy usadas tomadas de las especificaciones de los formatos. Los bytes en hex están en mayúsculas y separados por espacios. Las previsualizaciones ASCII sustituyen los bytes no imprimibles por un punto.

  • PDF

    Bytes mágicos (hex):
    25 50 44 46
    ASCII:
    %PDF
    Extensiones:
    .pdf
    Tipo MIME:
    application/pdf
    Desplazamiento:
    byte 0
  • PNG

    Bytes mágicos (hex):
    89 50 4E 47 0D 0A 1A 0A
    ASCII:
    .PNG....
    Extensiones:
    .png
    Tipo MIME:
    image/png
    Desplazamiento:
    byte 0
  • JPEG

    Bytes mágicos (hex):
    FF D8 FF
    ASCII:
    ...
    Extensiones:
    .jpg, .jpeg
    Tipo MIME:
    image/jpeg
    Desplazamiento:
    byte 0
  • GIF

    Bytes mágicos (hex):
    47 49 46 38 39 61
    ASCII:
    GIF89a
    Extensiones:
    .gif
    Tipo MIME:
    image/gif
    Desplazamiento:
    byte 0
  • BMP

    Bytes mágicos (hex):
    42 4D
    ASCII:
    BM
    Extensiones:
    .bmp
    Tipo MIME:
    image/bmp
    Desplazamiento:
    byte 0
  • ZIP

    Bytes mágicos (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensiones:
    .zip
    Tipo MIME:
    application/zip
    Desplazamiento:
    byte 0
  • RAR (v5)

    Bytes mágicos (hex):
    52 61 72 21 1A 07 01 00
    ASCII:
    Rar!....
    Extensiones:
    .rar
    Tipo MIME:
    application/vnd.rar
    Desplazamiento:
    byte 0
  • 7-Zip

    Bytes mágicos (hex):
    37 7A BC AF 27 1C
    ASCII:
    7z....
    Extensiones:
    .7z
    Tipo MIME:
    application/x-7z-compressed
    Desplazamiento:
    byte 0
  • DOCX (Office Open XML)

    Bytes mágicos (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensiones:
    .docx
    Tipo MIME:
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Desplazamiento:
    byte 0
  • XLSX (Office Open XML)

    Bytes mágicos (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensiones:
    .xlsx
    Tipo MIME:
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Desplazamiento:
    byte 0
  • APK (Android package)

    Bytes mágicos (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensiones:
    .apk
    Tipo MIME:
    application/vnd.android.package-archive
    Desplazamiento:
    byte 0
  • MP4 (ISO BMFF)

    Bytes mágicos (hex):
    00 00 00 20 66 74 79 70
    ASCII:
    ....ftyp
    Extensiones:
    .mp4, .m4v
    Tipo MIME:
    video/mp4
    Desplazamiento:
    byte 0
  • Windows PE / EXE

    Bytes mágicos (hex):
    4D 5A
    ASCII:
    MZ
    Extensiones:
    .exe, .dll, .sys
    Tipo MIME:
    application/vnd.microsoft.portable-executable
    Desplazamiento:
    byte 0
  • ISO 9660

    Bytes mágicos (hex):
    43 44 30 30 31
    ASCII:
    CD001
    Extensiones:
    .iso
    Tipo MIME:
    application/x-iso9660-image
    Desplazamiento:
    byte (sector 16)
  • PDF

    Los cuatro bytes deletrean %PDF. La versión de PDF viene justo después, por ejemplo %PDF-1.7.

  • PNG

    Ocho bytes incluyendo los marcadores de fin de línea de PNG (0D 0A 1A 0A), para que se puedan detectar errores de transmisión.

  • JPEG

    Marcador de inicio de imagen. El cuarto byte distingue JFIF (E0) de EXIF (E1).

  • GIF

    GIF89a es la variante moderna. GIF87a (47 49 46 38 37 61) es la forma antigua y también es válida.

  • BMP

    Dos bytes. Fácil de falsificar; combínalo con la cabecera de tamaño de archivo en el desplazamiento 2 para distinguirlo.

  • ZIP

    Cabecera de archivo local. Los archivos comprimidos vacíos usan 50 4B 05 06 (fin de directorio central) en su lugar.

  • RAR (v5)

    Firma de RAR 5. Los archivos RAR 1.5 a 4.x más antiguos usan una firma de 7 bytes terminada en 00.

  • 7-Zip

    Seis bytes que deletrean 7z seguidos de tres bytes mágicos.

  • DOCX (Office Open XML)

    DOCX es un contenedor ZIP. La firma por sí sola no puede distinguir un documento de Word de un ZIP genérico. Mira el [Content_Types].xml interno.

  • XLSX (Office Open XML)

    La misma advertencia que con DOCX. Inspecciona el manifiesto OOXML para confirmar la variante de hoja de cálculo.

  • APK (Android package)

    APK es un contenedor ZIP con un manifiesto de Android dentro. La firma ZIP por sí sola no es prueba suficiente.

  • MP4 (ISO BMFF)

    La caja ftyp en el desplazamiento 4 lleva el identificador de marca. Marcas habituales: isom, mp42, iso5.

  • Windows PE / EXE

    Dos bytes (Mark Zbikowski). El desplazamiento de la cabecera PE se lee desde el byte 0x3C; el verdadero número mágico PE\0\0 está allí.

  • ISO 9660

    ISO 9660 coloca el descriptor de volumen en el sector 16, así que la firma vive en el byte 32769 (16 * 2048 + 1).

Cómo funciona una comprobación de bytes mágicos

  1. 1

    Lee los primeros bytes

    Abre el archivo como un flujo binario y lee los primeros 8 a 16 bytes. Es suficiente para reconocer cada firma de la tabla de arriba.

  2. 2

    Compáralos con firmas conocidas

    Compara los bytes con una base de datos de formatos conocidos. Varios formatos pueden compartir un prefijo (todo documento de Office es un ZIP), así que la comprobación devuelve la coincidencia más específica.

  3. 3

    Contrástalos con la extensión del archivo

    Si el formato detectado no coincide con lo que dice la extensión, el veredicto es MISMATCH. Si encajan varios formatos, AMBIGUOUS. Si no encaja nada, UNKNOWN.

¿Por qué importa esto?

Renombrar un archivo de invoice.exe a invoice.pdf no cambia sus bytes. Los primeros dos bytes siguen siendo 4D 5A. La comprobación de número mágico lo detecta al instante. Útil cuando un adjunto parece legítimo pero le cambiaron la extensión antes de enviarlo.

Las comprobaciones de bytes mágicos también detectan lo contrario: un archivo sin ninguna extensión pero con bytes válidos de PNG sigue siendo un PNG y tu visor de imágenes puede abrirlo. La identidad de formato vive en los bytes, no en el nombre del archivo.

Glosario

Preguntas frecuentes

Pruébalo con tu propio archivo

Suelta cualquier archivo. La comprobación se ejecuta localmente y devuelve un veredicto en menos de un segundo. Los bytes nunca salen de tu navegador.

Abrir el Comprobador de tipo de archivo