Détecteur de type MIME

Suivant

Les extensions de fichier mentent, n’importe qui peut renommer malware.exe en photo.jpg. La manière fiable de savoir ce qu’est réellement un fichier est de lire ses premiers octets, où la plupart des formats mettent une signature (“numéro magique”) qui identifie le format indépendamment du nom. Ce détecteur lit la signature de tout fichier déposé et renvoie le type MIME canonique ainsi que la correspondance d’extension la plus courante, afin que vous puissiez vérifier qu’un téléchargement est ce que le client prétend.

Comment fonctionne la détection MIME

  1. 1

    Déposez un fichier

    Toute taille ; seuls les premiers 4 à 16 Ko sont lus.

  2. 2

    Lire les octets magiques

    La plupart des formats commencent par une signature connue.

  3. 3

    Comparer avec une base de données de signatures

    Le détecteur utilise les mêmes règles que `file(1)` / libmagic.

  4. 4

    Retourner MIME + extension

    Affiche le type de média RFC 6838, l'extension canonique et une étiquette humaine.

Exemples de signatures

Format Premiers octets (hex) 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 (ou spécifique)
gzip 1F 8B 08 application/gzip
MP4 (ISO BMFF) 00 00 00 XX 66 74 79 70 video/mp4
MP3 49 44 33 ou FF FB audio/mpeg
FLAC 66 4C 61 43 audio/flac
WAV 52 49 46 46 ... 57 41 56 45 audio/wav
ELF (binaire Linux) 7F 45 4C 46 application/x-executable
Windows PE (exe) 4D 5A application/x-msdownload

Pourquoi les extensions ne suffisent pas

  • Sécurité. Un resume.pdf téléchargé qui est en réalité un .exe contourne les filtres d’extension naïfs. La détection MIME côté serveur est la solution.
  • Inadéquation du type de contenu. Un navigateur peut envoyer le mauvais MIME pour un téléchargement ; lire les octets magiques vous dit ce qu’est réellement les données.
  • Sauvegardes restaurées. Les extensions se perdent parfois ou sont supprimées ; le sniffing de contenu vous permet d’identifier ce que chaque fichier est.

La famille basée sur ZIP

De nombreux formats modernes sont des archives ZIP sous le capot, ils commencent par PK\x03\x04 comme n’importe quel ZIP :

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

Pour les distinguer, le détecteur jette un œil à l’intérieur du ZIP pour un fichier manifeste ([Content_Types].xml pour OOXML, mimetype pour ODF / EPUB).

Combinaisons utiles

  • Les premiers 512 octets couvrent la plupart des signatures de format.
  • Les premiers 4 Ko couvrent les formats basés sur ZIP où le manifeste apparaît plus loin.
  • Les premiers 16 Ko couvrent les cas limites comme certains conteneurs multimédias.

Pas parfait

  • Les fichiers texte brut n’ont pas d’octets magiques. Le détecteur utilise des heuristiques (est-ce un UTF-8 valide ? ressemble-t-il à JSON ou XML ?).
  • Les fichiers chiffrés / obfusqués peuvent ressembler à des octets aléatoires sans signature reconnaissable.
  • Ambiguïté de format. audio/wav et video/avi commencent tous deux par RIFF ; le détecteur vérifie l’identifiant secondaire (WAVE contre AVI quatre octets plus tard).

Questions fréquentes

Non. La détection s’effectue dans votre navigateur, seuls les premiers quelques Ko sont lus et comparés à une base de données de signatures côté client. Rien ne quitte votre appareil.

Parce que OOXML, ODF, EPUB et JAR commencent tous par la signature ZIP. Le détecteur jette un œil à l’intérieur pour trouver le manifeste spécifique au format et renvoyer le MIME plus spécifique (application/vnd.openxmlformats-...).

Il attrape les renommages naïfs, un .exe renommé en .jpg apparaîtra comme exécutable par ses octets magiques. Les attaquants sophistiqués intègrent des charges utiles à l’intérieur de véritables fichiers multimédias ou utilisent des fichiers polyglottes qui correspondent à plusieurs signatures ; ceux-ci contournent la détection simple.

Le texte brut n’a pas d’octets magiques. Le détecteur utilise des heuristiques : UTF-8 valide ? JSON valide ? Déclaration XML ? Structure CSV ? Sinon, il revient à text/plain.

La base de données de signatures est similaire (dérivée des règles Unix libmagic). Les résultats devraient correspondre pour les formats courants. Les formats obscurs ou personnalisés peuvent différer.

Outils similaires

Outil disponible dans d’autres langues