Après le dernier octet : retrouver une archive agrafée à une image

Investigation Numérique & Réponse à Incident Niveau 2/4 ~3 min 5 octobre 2026

Le défi

Une boîte de recrutement a reçu un CV avec une photo de profil en pièce jointe. La passerelle a contrôlé la pièce jointe, trouvé une image valide, généré une vignette pour la file de modération et l'a laissée passer. La vignette est correcte. Le fichier ne l'est pas : un décodeur JPEG s'arrête à un marqueur de deux octets bien précis et ignore tout ce qui suit, or ce fichier continue sur soixante-sept octets de plus. Lisez ce qui a été agrafé à la fin et donnez le nom du fichier qu'il contient. Les 217 octets sont ci-dessous, les quatre premiers sont surlignés, et c'est la colonne ASCII de droite qui trahit ce fichier, sans rien décoder.

Ce que tu vas apprendre

  • Reconnaître le marqueur de fin d'image JPEG et son traitement par les décodeurs
  • Identifier une seconde signature de fichier au sein d'un même fichier
  • Localiser le nom d'une entrée ZIP à partir de la structure de l'en-tête local
  • Expliquer pourquoi un fichier peut être valide dans deux formats à la fois
  • Décrire la différence entre valider un fichier et l'identifier

Compétences testées

Analyse de format de fichierLecture de vidage hexadécimalRaisonnement d'inspection de contenu

Prérequis

  • Lire l'hexadécimal et l'ASCII côte à côte
  • Savoir ce qu'est une signature de fichier

Comment ça marche

La plupart des formats sont analysés depuis le début et s'arrêtent quand ils indiquent en avoir fini. Le JPEG est une suite de marqueurs se terminant par FF D9, et tous les décodeurs considèrent cela comme la fin du fichier, quel que soit le nombre d'octets restants. Le ZIP fait l'inverse : un lecteur démarre par la fin, trouve l'enregistrement de fin de répertoire central, puis remonte dans le fichier en suivant des décalages.

Placez un ZIP après le FF D9 d'un JPEG et les deux analyseurs sont satisfaits par les mêmes octets. Une visionneuse d'images affiche une image, un outil d'archivage liste une entrée, et aucun des deux n'est trompé. Le fichier est réellement les deux à la fois. Il suffit de renommer l'extension pour changer lequel des deux vous obtenez.

Les passerelles se font piéger à cause de la question qu'elles posent. Vérifier qu'une pièce jointe est un JPEG bien formé renvoie un oui sincère, et une vignette le prouve. Identifier le fichier suppose de se demander ce qu'il contient d'autre, ce qui nécessite de lire jusqu'à la fin plutôt que de s'arrêter là où le premier format dit de s'arrêter.

Erreurs fréquentes

  • Répondre ZIP ou archive. Le format est le moyen de trouver la réponse, pas la réponse elle-même. La consigne demande un nom.
  • Lire le nom au tout début de l'en-tête PK. Trente octets de champs viennent avant. Commencez à compter à partir de la signature et la colonne ASCII vous montrera où le texte commence.
  • Supposer que le fichier est corrompu. Les deux moitiés sont structurellement valides, ce qui explique justement pourquoi il est passé.
  • S'arrêter à la vignette. L'image est réelle et s'affiche correctement. Elle est là pour être regardée.

Comment s'en protéger

Inspectez le fichier entier, pas seulement la partie que revendique le premier analyseur.

  • Comparez la longueur déclarée de l'image à la taille sur le disque. Des octets superflus après FF D9 constituent en soi un indice à détecter, pour le coût d'une simple comparaison.
  • Réencodez les images téléversées côté serveur plutôt que de stocker ce qui est arrivé. Un décodage suivi d'un réencodage élimine tout ce qu'un décodeur a ignoré, y compris l'archive ajoutée.
  • Scannez les pièces jointes à la recherche de toutes les signatures présentes, pas seulement celle à l'offset zéro, et traitez un second conteneur comme un événement à mettre en quarantaine.
  • Ne faites confiance ni à l'extension ni au type MIME fourni par l'expéditeur. Ce sont deux étiquettes, et les octets ici contredisent les deux.

Solution complète

Les membres Pro et Max débloquent la solution complète étape par étape.

Passer Pro

Statistiques de la communauté

167 résolutions
81% taux de réussite
Malekith Premier sang

Hacks du jour associés

34 000+ Hackers Vrais labs Gratuit
Commencer Gratuitement ou résolvez le hack du jour, sans compte