Passer au contenu
BouseMuttonBouseMutton

C'est quoi un nombre magique ?

Un nombre magique est la courte sequence d'octets fixe au debut de chaque fichier. Il identifie le format avant que toute extension soit lue. Cette page explique comment ca marche, a quoi ressemblent les signatures les plus courantes, et pourquoi une verification par octets est toujours superieure a une verification par nom de fichier.

  • Explication en langage courant
  • 14 formats couverts
  • Les octets ne quittent pas votre navigateur

Points cles

  • C'est quoi ?

    Un nombre magique est une sequence d'octets fixe (generalement 2 a 8 octets) au debut d'un fichier qui identifie le format.

  • Ou se trouve-t-il ?

    Presque toujours a l'offset d'octet 0. Les images de disque ISO 9660 sont l'exception connue : leur signature CD001 se trouve a l'offset 32769 (secteur 16).

  • Extension ou octets ?

    Les octets l'emportent. Renommer report.exe en report.pdf change l'etiquette, pas le contenu. Les octets magiques lisent toujours 4D 5A.

  • Ce que vous obtenez

    Notre verificateur de type de fichier rapporte l'un des quatre verdicts : MATCH, MISMATCH, AMBIGUOUS ou UNKNOWN. Chacun est une reponse deterministe sur l'identite du format, pas sur la securite.

  • Confidentialite

    Le flux gratuit d'un seul fichier s'execute entierement dans votre navigateur. Les octets ne quittent jamais votre appareil.

  • Perimetre de securite

    Une verification par octets identifie le format, pas les logiciels malveillants. Utilisez-la comme premier signal, pas comme verdict antivirus.

Un nombre magique (aussi appele signature d'octets magiques ou signature de fichier) est une courte sequence d'octets fixe ecrite au tout debut d'un fichier qui identifie son vrai format. Le systeme d'exploitation l'utilise avant toute extension de fichier. L'extension n'est qu'un indice ; le nombre magique est la verite.

Reference des signatures d'octets magiques

14 signatures largement utilisees issues des specifications des formats. Les octets hex sont en majuscules, separes par des espaces. Les aperçus ASCII remplacent les octets non imprimables par un point.

  • PDF

    Octets magiques (hex):
    25 50 44 46
    ASCII:
    %PDF
    Extensions:
    .pdf
    Type MIME:
    application/pdf
    Offset:
    octet 0
  • PNG

    Octets magiques (hex):
    89 50 4E 47 0D 0A 1A 0A
    ASCII:
    .PNG....
    Extensions:
    .png
    Type MIME:
    image/png
    Offset:
    octet 0
  • JPEG

    Octets magiques (hex):
    FF D8 FF
    ASCII:
    ...
    Extensions:
    .jpg, .jpeg
    Type MIME:
    image/jpeg
    Offset:
    octet 0
  • GIF

    Octets magiques (hex):
    47 49 46 38 39 61
    ASCII:
    GIF89a
    Extensions:
    .gif
    Type MIME:
    image/gif
    Offset:
    octet 0
  • BMP

    Octets magiques (hex):
    42 4D
    ASCII:
    BM
    Extensions:
    .bmp
    Type MIME:
    image/bmp
    Offset:
    octet 0
  • ZIP

    Octets magiques (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensions:
    .zip
    Type MIME:
    application/zip
    Offset:
    octet 0
  • RAR (v5)

    Octets magiques (hex):
    52 61 72 21 1A 07 01 00
    ASCII:
    Rar!....
    Extensions:
    .rar
    Type MIME:
    application/vnd.rar
    Offset:
    octet 0
  • 7-Zip

    Octets magiques (hex):
    37 7A BC AF 27 1C
    ASCII:
    7z....
    Extensions:
    .7z
    Type MIME:
    application/x-7z-compressed
    Offset:
    octet 0
  • DOCX (Office Open XML)

    Octets magiques (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensions:
    .docx
    Type MIME:
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Offset:
    octet 0
  • XLSX (Office Open XML)

    Octets magiques (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensions:
    .xlsx
    Type MIME:
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Offset:
    octet 0
  • APK (Android package)

    Octets magiques (hex):
    50 4B 03 04
    ASCII:
    PK..
    Extensions:
    .apk
    Type MIME:
    application/vnd.android.package-archive
    Offset:
    octet 0
  • MP4 (ISO BMFF)

    Octets magiques (hex):
    00 00 00 20 66 74 79 70
    ASCII:
    ....ftyp
    Extensions:
    .mp4, .m4v
    Type MIME:
    video/mp4
    Offset:
    octet 0
  • Windows PE / EXE

    Octets magiques (hex):
    4D 5A
    ASCII:
    MZ
    Extensions:
    .exe, .dll, .sys
    Type MIME:
    application/vnd.microsoft.portable-executable
    Offset:
    octet 0
  • ISO 9660

    Octets magiques (hex):
    43 44 30 30 31
    ASCII:
    CD001
    Extensions:
    .iso
    Type MIME:
    application/x-iso9660-image
    Offset:
    octet (secteur 16)
  • PDF

    Les quatre octets epellent %PDF. La version PDF suit immediatement, ex. %PDF-1.7.

  • PNG

    Huit octets incluant les marqueurs de fin de ligne PNG (0D 0A 1A 0A) pour que les erreurs de transmission soient detectables.

  • JPEG

    Marqueur de debut d'image. Le quatrieme octet distingue JFIF (E0) d'EXIF (E1).

  • GIF

    GIF89a est la variante moderne. GIF87a (47 49 46 38 37 61) est l'ancienne orthographe et est aussi valide.

  • BMP

    Deux octets. Facile a usurper ; associez avec l'en-tete de taille de fichier a l'offset 2 pour disambiguer.

  • ZIP

    En-tete de fichier local. Les archives vides utilisent 50 4B 05 06 (fin du repertoire central) a la place.

  • RAR (v5)

    Signature RAR 5. Les fichiers RAR 1.5 a 4.x anciens utilisent une signature de 7 octets se terminant par 00.

  • 7-Zip

    Six octets epellant 7z suivi de trois octets magiques.

  • DOCX (Office Open XML)

    DOCX est un conteneur ZIP. La signature seule ne peut pas distinguer un document Word d'un ZIP generique. Regardez le [Content_Types].xml interieur.

  • XLSX (Office Open XML)

    Meme mise en garde que DOCX. Inspectez le manifeste OOXML pour confirmer la variante tableur.

  • APK (Android package)

    APK est un conteneur ZIP avec un manifeste Android a l'interieur. La signature ZIP seule n'est pas une preuve suffisante.

  • MP4 (ISO BMFF)

    La boite ftyp a l'offset 4 porte l'identifiant de marque. Marques courantes : isom, mp42, iso5.

  • Windows PE / EXE

    Deux octets (Mark Zbikowski). L'offset de l'en-tete PE est lu depuis l'octet 0x3C ; le veritable magique PE\0\0 s'y trouve.

  • ISO 9660

    ISO 9660 place le descripteur de volume au secteur 16, donc la signature se trouve a l'octet 32769 (16 * 2048 + 1).

Comment fonctionne une verification par octets magiques

  1. 1

    Lire les premiers octets

    Ouvrir le fichier comme un flux binaire et lire les 8 a 16 premiers octets. C'est suffisant pour reconnaitre chaque signature dans le tableau ci-dessus.

  2. 2

    Comparer avec les signatures connues

    Faire correspondre les octets avec une base de donnees de formats connus. Plusieurs formats peuvent partager un prefixe (chaque document Office est un ZIP), donc la verification retourne la correspondance la plus specifique.

  3. 3

    Recouper avec l'extension de fichier

    Si le format detecte ne correspond pas a ce que l'extension indique, le verdict est MISMATCH. Si plusieurs formats correspondent, AMBIGUOUS. Si rien ne correspond, UNKNOWN.

Pourquoi est-ce important ?

Renommer un fichier de invoice.exe en invoice.pdf ne change pas ses octets. Les deux premiers octets lisent toujours 4D 5A. La verification par nombre magique le detecte immediatement. Utile quand une piece jointe semble legitime mais que l'extension a ete modifiee avant l'envoi.

Les verifications par octets magiques detectent aussi l'inverse : un fichier sans extension mais avec des octets PNG valides est toujours un PNG et votre visionneuse d'images peut l'ouvrir. L'identite du format se trouve dans les octets, pas dans le nom du fichier.

Glossaire

Questions frequentes

Essayez sur votre propre fichier

Deposez n'importe quel fichier. La verification s'execute localement et rapporte un verdict en moins d'une seconde. Les octets ne quittent jamais votre navigateur.

Ouvrir le verificateur de type de fichier