Rilevatore di tipo MIME

Avanti

Le estensioni dei file mentono, chiunque può rinominare malware.exe in photo.jpg. Il modo affidabile per sapere cosa è realmente un file è leggere i suoi primi byte, dove la maggior parte dei formati mette una firma (“numero magico”) che identifica il formato indipendentemente dal nome. Questo rilevatore legge la firma di qualsiasi file rilasciato e restituisce il tipo MIME canonico più la mappatura dell’estensione più comune, così puoi verificare che un caricamento sia ciò che il cliente afferma.

Come funziona il rilevamento MIME

  1. 1

    Rilascia un file

    Qualsiasi dimensione; vengono letti solo i primi 4–16 KB.

  2. 2

    Leggi i byte magici

    La maggior parte dei formati inizia con una firma nota.

  3. 3

    Confronta con un database di firme

    Il rilevatore utilizza le stesse regole di `file(1)` / libmagic.

  4. 4

    Restituisci MIME + estensione

    Mostra il tipo media RFC 6838, l'estensione canonica e un'etichetta umana.

Esempi di firme

Formato Primi byte (esadecimale) MIME
JPEG FF D8 FF image/jpeg
PNG 89 50 4E 47 0D 0A 1A 0A image/png
GIF87a 47 49 46 38 37 61 image/gif
GIF89a 47 49 46 38 39 61 image/gif
WebP 52 49 46 46 ... 57 45 42 50 image/webp
PDF 25 50 44 46 (%PDF) application/pdf
ZIP / JAR / ODT / DOCX 50 4B 03 04 application/zip (o specifico)
gzip 1F 8B 08 application/gzip
MP4 (ISO BMFF) 00 00 00 XX 66 74 79 70 video/mp4
MP3 49 44 33 o FF FB audio/mpeg
FLAC 66 4C 61 43 audio/flac
WAV 52 49 46 46 ... 57 41 56 45 audio/wav
ELF (binario Linux) 7F 45 4C 46 application/x-executable
Windows PE (exe) 4D 5A application/x-msdownload

Perché le estensioni non sono sufficienti

  • Sicurezza. Un resume.pdf caricato che è in realtà un .exe bypassa i filtri di estensione naif. Il rilevamento MIME lato server è la soluzione.
  • Mismatch del Content-Type. Un browser può inviare il MIME sbagliato per un caricamento; leggere i byte magici ti dice cosa è realmente il dato.
  • Backup ripristinati. Le estensioni a volte vengono perse o rimosse; il content-sniffing ti consente di identificare cosa è ciascun file.

La famiglia basata su ZIP

Molti formati moderni sono archivi ZIP sotto il cofano, iniziano con PK\x03\x04 come qualsiasi ZIP:

  • Office Open XML: .docx, .xlsx, .pptx.
  • OpenDocument: .odt, .ods, .odp.
  • EPUB: .epub.
  • Android APK: .apk.
  • Java JAR: .jar.

Per distinguerli, il rilevatore sbircia all’interno dello ZIP per un file di manifest ([Content_Types].xml per OOXML, mimetype per ODF / EPUB).

Combinazioni utili

  • Primi 512 byte coprono la maggior parte delle firme di formato.
  • Primi 4 KB coprono i formati basati su ZIP dove il manifest appare più in là.
  • Primi 16 KB coprono casi limite come alcuni contenitori multimediali.

Non perfetto

  • File di testo semplice non hanno byte magici. Il rilevatore ricorre a euristiche (è valido UTF-8? sembra JSON o XML?).
  • File crittografati / offuscati possono sembrare byte casuali senza una firma riconoscibile.
  • Ambiguità di formato. audio/wav e video/avi iniziano entrambi con RIFF; il rilevatore controlla l’identificatore secondario (WAVE vs. AVI quattro byte dopo).

Domande frequenti

No. Il rilevamento avviene nel tuo browser, vengono letti e confrontati solo i primi pochi KB contro un database di firme lato client. Niente lascia il tuo dispositivo.

Perché OOXML, ODF, EPUB e JAR iniziano tutti con la firma ZIP. Il rilevatore sbircia all’interno per trovare il manifest specifico del formato e restituire il MIME più specifico (application/vnd.openxmlformats-...).

Cattura la rinominazione naif, un .exe rinominato in .jpg apparirà come eseguibile dai suoi byte magici. Attaccanti sofisticati incorporano payload all’interno di veri file multimediali o usano file poliglotti che corrispondono a più firme; questi sconfiggono il rilevamento semplice.

Il testo semplice non ha byte magici. Il rilevatore utilizza euristiche: valido UTF-8? valido JSON? dichiarazione XML? struttura CSV? Altrimenti ricorre a text/plain.

Il database di firme è simile (derivato dalle regole di Unix libmagic). I risultati dovrebbero corrispondere per formati comuni. Formati oscuri o personalizzati possono differire.

Strumenti correlati

Strumento disponibile in altre lingue