Fichiers polyglottes — Un fichier, deux formats

Avancé CTF

Qu'est-ce qu'un fichier polyglotte ?

Un fichier polyglotte est valide pour deux formats différents simultanément. Exemple : un fichier est à la fois une image JPEG valide ET une archive ZIP valide. Le lecteur JPEG s'arrête au marqueur FFD9, et le lecteur ZIP commence à la signature PK, qui peut être placée juste après.

Créer et détecter

# Détecter
binwalk image.jpg          # detecte les deux signatures
file image.jpg             # peut identifier le type principal

# Extraire la partie ZIP cachée
dd if=image.jpg bs=1 skip=OFFSET_ZIP of=cache.zip
# Ou simplement :
cp image.jpg cache.zip && unzip cache.zip

# Créer (example)
cat image.jpg archive.zip > polyglot.jpg

# Autres combinaisons courantes :
# PDF + ZIP
# HTML + PDF
# PNG + Python script