Salta al contenuto
BouseMuttonBouseMutton

Cos'è un magic number?

Un magic number è la breve sequenza di byte fissa all'inizio di ogni file. Identifica il formato prima che venga letta qualsiasi estensione. Questa pagina copre come funzionano, come appaiono le firme più comuni e perché un controllo magic-byte batte sempre un controllo sul nome del file.

  • Spiegazione in italiano semplice
  • 14 formati trattati
  • I byte non lasciano mai il tuo browser

Fatti chiave

  • Cos'è?

    Un magic number è una sequenza di byte fissa (di solito da 2 a 8 byte) all'inizio di un file che identifica il formato.

  • Dove si trova?

    Quasi sempre all'offset byte 0. Le immagini disco ISO 9660 sono l'eccezione nota: la loro firma CD001 si trova all'offset 32769 (settore 16).

  • Estensione o byte?

    Vincono i byte. Rinominare report.exe in report.pdf cambia l'etichetta, non il contenuto. I magic byte leggono ancora 4D 5A.

  • Cosa ricevi

    Il nostro verificatore di tipo file riporta uno dei quattro verdetti: MATCH, MISMATCH, AMBIGUOUS o UNKNOWN. Ciascuno è una risposta deterministica sull'identità del formato, non sulla sicurezza.

  • Privacy

    Il flusso gratuito a singolo file funziona interamente nel tuo browser. I byte non lasciano mai il tuo dispositivo.

  • Ambito di sicurezza

    Un controllo magic-byte identifica il formato, non il malware. Usalo come primo segnale, non come verdetto antivirus.

Un magic number (chiamato anche firma magic-byte o firma del file) è una breve sequenza di byte fissa scritta proprio all'inizio di un file che ne identifica il vero formato. Il sistema operativo lo usa prima di qualsiasi estensione del file. L'estensione è solo un suggerimento; il magic number è la verità.

Riferimento delle firme magic-byte

14 firme ampiamente utilizzate, tratte dalle specifiche dei formati. I byte hex sono in maiuscolo, separati da spazi. Le anteprime ASCII sostituiscono i byte non stampabili con un punto.

  • PDF

    Magic byte (hex):
    25 50 44 46
    ASCII:
    %PDF
    Estensioni:
    .pdf
    Tipo MIME:
    application/pdf
    Offset:
    byte 0
  • PNG

    Magic byte (hex):
    89 50 4E 47 0D 0A 1A 0A
    ASCII:
    .PNG....
    Estensioni:
    .png
    Tipo MIME:
    image/png
    Offset:
    byte 0
  • JPEG

    Magic byte (hex):
    FF D8 FF
    ASCII:
    ...
    Estensioni:
    .jpg, .jpeg
    Tipo MIME:
    image/jpeg
    Offset:
    byte 0
  • GIF

    Magic byte (hex):
    47 49 46 38 39 61
    ASCII:
    GIF89a
    Estensioni:
    .gif
    Tipo MIME:
    image/gif
    Offset:
    byte 0
  • BMP

    Magic byte (hex):
    42 4D
    ASCII:
    BM
    Estensioni:
    .bmp
    Tipo MIME:
    image/bmp
    Offset:
    byte 0
  • ZIP

    Magic byte (hex):
    50 4B 03 04
    ASCII:
    PK..
    Estensioni:
    .zip
    Tipo MIME:
    application/zip
    Offset:
    byte 0
  • RAR (v5)

    Magic byte (hex):
    52 61 72 21 1A 07 01 00
    ASCII:
    Rar!....
    Estensioni:
    .rar
    Tipo MIME:
    application/vnd.rar
    Offset:
    byte 0
  • 7-Zip

    Magic byte (hex):
    37 7A BC AF 27 1C
    ASCII:
    7z....
    Estensioni:
    .7z
    Tipo MIME:
    application/x-7z-compressed
    Offset:
    byte 0
  • DOCX (Office Open XML)

    Magic byte (hex):
    50 4B 03 04
    ASCII:
    PK..
    Estensioni:
    .docx
    Tipo MIME:
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Offset:
    byte 0
  • XLSX (Office Open XML)

    Magic byte (hex):
    50 4B 03 04
    ASCII:
    PK..
    Estensioni:
    .xlsx
    Tipo MIME:
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Offset:
    byte 0
  • APK (Android package)

    Magic byte (hex):
    50 4B 03 04
    ASCII:
    PK..
    Estensioni:
    .apk
    Tipo MIME:
    application/vnd.android.package-archive
    Offset:
    byte 0
  • MP4 (ISO BMFF)

    Magic byte (hex):
    00 00 00 20 66 74 79 70
    ASCII:
    ....ftyp
    Estensioni:
    .mp4, .m4v
    Tipo MIME:
    video/mp4
    Offset:
    byte 0
  • Windows PE / EXE

    Magic byte (hex):
    4D 5A
    ASCII:
    MZ
    Estensioni:
    .exe, .dll, .sys
    Tipo MIME:
    application/vnd.microsoft.portable-executable
    Offset:
    byte 0
  • ISO 9660

    Magic byte (hex):
    43 44 30 30 31
    ASCII:
    CD001
    Estensioni:
    .iso
    Tipo MIME:
    application/x-iso9660-image
    Offset:
    byte (settore 16)
  • PDF

    I quattro byte compongono %PDF. La versione PDF segue immediatamente, es. %PDF-1.7.

  • PNG

    Otto byte inclusi i marcatori di fine riga PNG (0D 0A 1A 0A) così gli errori di trasmissione sono rilevabili.

  • JPEG

    Marcatore di inizio immagine. Il quarto byte distingue JFIF (E0) da EXIF (E1).

  • GIF

    GIF89a è la variante moderna. GIF87a (47 49 46 38 37 61) è la grafia legacy ed è anch'essa valida.

  • BMP

    Due byte. Facile da contraffare; abbinalo all'intestazione della dimensione del file all'offset 2 per disambiguare.

  • ZIP

    Intestazione di file locale. Gli archivi vuoti usano invece 50 4B 05 06 (fine della directory centrale).

  • RAR (v5)

    Firma RAR 5. I file RAR più vecchi da 1.5 a 4.x usano una firma di 7 byte che termina con 00.

  • 7-Zip

    Sei byte che compongono 7z seguiti da tre magic byte.

  • DOCX (Office Open XML)

    DOCX è un contenitore ZIP. La firma da sola non può distinguere un documento Word da un ZIP generico. Guarda il [Content_Types].xml interno.

  • XLSX (Office Open XML)

    Stesso avvertimento di DOCX. Ispeziona il manifesto OOXML per confermare la variante foglio di calcolo.

  • APK (Android package)

    APK è un contenitore ZIP con un manifesto Android al suo interno. La sola firma ZIP non è prova sufficiente.

  • MP4 (ISO BMFF)

    La casella ftyp all'offset 4 porta l'identificatore del brand. Brand comuni: isom, mp42, iso5.

  • Windows PE / EXE

    Due byte (Mark Zbikowski). L'offset dell'intestazione PE viene letto dal byte 0x3C; il magic PE\0\0 effettivo si trova lì.

  • ISO 9660

    ISO 9660 colloca il descrittore di volume nel settore 16, quindi la firma si trova al byte 32769 (16 * 2048 + 1).

Come funziona un controllo magic-byte

  1. 1

    Leggi i primi byte

    Apri il file come flusso binario e leggi i primi 8-16 byte. È sufficiente per riconoscere ogni firma della tabella sopra.

  2. 2

    Confronta con le firme note

    Confronta i byte con un database di formati noti. Più formati possono condividere un prefisso (ogni documento Office è uno ZIP), quindi il controllo restituisce la corrispondenza più specifica.

  3. 3

    Verifica incrociata con l'estensione del file

    Se il formato rilevato non corrisponde a quello che l'estensione dichiara, il verdetto è MISMATCH. Se più formati corrispondono, AMBIGUOUS. Se nulla corrisponde, UNKNOWN.

Perché è importante?

Rinominare un file da invoice.exe a invoice.pdf non cambia i suoi byte. I primi due byte leggono ancora 4D 5A. Il controllo magic-number lo cattura immediatamente. Utile quando un allegato sembra legittimo ma l'estensione è stata cambiata prima dell'invio.

I controlli magic-byte catturano anche l'opposto: un file senza alcuna estensione ma con byte PNG validi è comunque un PNG e il tuo visualizzatore di immagini può aprirlo. L'identità del formato vive nei byte, non nel nome del file.

Glossario

Domande frequenti

Provalo sul tuo file

Trascina qualsiasi file. Il controllo viene eseguito localmente e riporta un verdetto in meno di un secondo. I byte non lasciano mai il tuo browser.

Apri il verificatore di tipo file