L'extension d'un fichier (.jpg, .zip...) n'est qu'une convention de nommage — rien n'empêche de la modifier sans toucher au contenu réel. Les magic bytes permettent de vérifier la vraie nature d'un fichier, peu importe son nom.
La plupart des formats de fichiers commencent par une séquence d'octets fixe et reconnaissable — par exemple, tout fichier PNG valide démarre exactement par 89 50 4E 47 0D 0A 1A 0A. Cette signature permet à un programme (système d'exploitation, antivirus, outil d'analyse) de déterminer le vrai type d'un fichier en lisant son contenu, sans se fier à l'extension fournie par le nom de fichier — qui peut être absente, erronée, ou délibérément trompeuse.
Un challenge classique consiste à fournir un fichier renommé avec une mauvaise extension (un ZIP renommé en .jpg, par exemple), pour forcer le participant à vérifier le contenu réel plutôt que de faire confiance au nom. Une fois le vrai type identifié, renommer le fichier avec la bonne extension (ou utiliser un outil qui ignore l'extension) permet de l'ouvrir normalement et de continuer l'investigation.
Un format ZIP (donc aussi DOCX, XLSX, JAR, APK — tous basés sur ZIP) caché dans un fichier image est un classique de stéganographie CTF : l'image s'affiche normalement, mais une archive complète est concaténée après les données de l'image, invisible à l'affichage mais extractible avec un outil d'archive qui sait ignorer les données qui précèdent sa propre signature.
Certains fichiers sont volontairement construits pour être valides simultanément dans plusieurs formats ("polyglottes") — par exemple un fichier qui est à la fois un GIF valide et un fichier ZIP valide, selon l'outil qui l'ouvre. Ces cas exploitent le fait que différents formats tolèrent des données superflues à différents endroits (avant la signature, après la fin logique du contenu). Un identifiant de magic bytes simple comme celui-ci détecte la première signature reconnue, mais ne garantit pas qu'il n'y en a pas d'autres plus loin dans le fichier.
Identifier un fichier maintenant →Ces formats utilisent une structure en conteneur où les premiers octets indiquent la taille d'un bloc avant que le vrai identifiant de format n'apparaisse — la signature reste fixe, juste positionnée après ces métadonnées initiales.
Oui, en théorie une donnée binaire totalement non liée pourrait par hasard commencer par les mêmes octets qu'une signature connue — improbable sur des signatures longues (8+ octets comme PNG), plus possible sur des signatures courtes (2 octets comme BMP ou GZIP).
Non, seuls les premiers 4 Ko sont lus localement via l'API FileReader du navigateur — rien n'est jamais transmis sur le réseau, ce qui rend cet outil utilisable même sur des fichiers sensibles ou suspects.
Outils similaires