Mi-aout, j'ai publié le tweet suivant :
Find the flag in this picture : https://t.co/HGXIkiM4IR
— Lemnet (@lemnet_fr) August 13, 2019
(I'll give hint if needed)
J'ai caché des données (un flag au format FLAG{[MD5]}) dans ce fichier : https://lemnet.fr/img/lena_std.jpg

Il s'agit d'une photo de Lena Söderberg, très utilisée comme image de test dans le traitement d'images.
L'idée étant de retrouver le flag.
**Indice n°1**
**Structure d'un fichier JPG et commentaire**
Les fichiers jpg sont toujours structurés de la même manière. Ils contiennent une suite de segments. Chaque segment commence par un marqueur. Les marqueurs commencent tous par l'octet `0xFF` suivi d'un autre octet qui indique le type de marqueur. Certains marqueurs ne contiennent que ces deux octets. Les autres sont suivis de deux octets qui indiquent la taille des données qui suivent (taille comprise).Voici un tableau reprenant les principaux marqueurs :
Nom court | Marqueur | Données | Nom | Commentaires |
---|---|---|---|---|
SOI | 0xFF 0xD8 | - | Start Of Image | Début du fichier |
SOF0 | 0xFF 0xC0 | variable | Start Of Frame (baseline DCT) | Début d’une image codée par progressive DCT |
SOF2 | 0xFF 0xC2 | variable | Start Of Frame (progressive DCT) | Début d’une image codée par progressive DCT |
DHT | 0xFF 0xC4 | variable | Define Huffman Table(s) | Table(s) de Huffman |
DQT | 0xFF 0xDB | variable | Define Quantization Table(s) | Table(s) de quantification |
SOS | 0xFF 0xDA | variable | Start Of Scan | Commence un parcours de haut en bas de l’image |
APPn | 0xFF 0xEn | variable | Application-specific | Informations complémentaires (EXIF par exemple) |
COM | 0xFF 0xFE | variable | Comment | Commentaire |
EOI | 0xFF 0xD9 | - | End Of Image | Fin du fichier |
ff d8 ff fe 00 3c 1f 8b 08 00 6d a4 52 5d 00 ff
05 40 b1 0d 80 00 0c 7a 09 16 9a 3e e1 a2 8b 4f
58 61 35 fe de 9c f7 71 7d 30 4b 80 e8 f7 69 76
14 8b 13 a1 ac 8c f0 2f 76 4f 48 eb 26 00 00 00
ff db 00 43 00 08 06 06 07 06 05 08 07 07 07 09
...
**Indice n°2**
**Gzip**
C'est un algorithme de compression très largement rependu, notamment dans les échanges de données entre les navigateurs et les serveurs Web. On remarque que le commentaire commence par les octets `1f 8b`. Il s'agit de la signature d'un fichier Gzip.On peut donc tenter de décompresser le commentaire avec cet algorithme et on obtient : SYNT{0q1760061qpn919r6rq61or607q6ro60} Cela commence à ressembler au format du flag que l'on recherche.