Solution de lrstx pour Rechatdrage

misc

1 mai 2024

On commence comme d’habitude en faisant quelques tests basiques en présence d’une stégano.

C’est ce dernier point qui est intéressant, car il montre des données après la fin du jpg.

Me vient une intuition : puisque les autres méthodes ne semblent rien donner, et que de toute façon l’énoncé suggère qu’il faut récupérer l’image originale, peut-être que cette partie est, justement, l’originale ?

On peut le tester rapidement tout en shell, en découpant le fichier à coup de tail/head et en le reconstituant avec cat:

$ head -c +623 rechatdrage.jpg > debut.jpg
$ tail -c +41731 rechatdrage.jpg > milieu.jpg
$ cat debut.jpg milieu.jpg > test.jpg

Si on ouvre le résultat avec hachoir, on se rend compte qu’on n’a même pas besoin d’ajouter le chunk end_image, il est déjà là. Le résultat :

Cela valide notre hypothèse. Par contre, évidemment, l’affichage ne ressemble à rien car la géométrie indiquée dans les entêtes du fichier ne correspond plus à la payload. Il va falloir les patcher. hachoir nous indique que la hauteur et la largeur sont codées sur deux octets, aux offsets 163 et 165. Là, j’ai fait à tâtons, en doublant la largeur, jusqu’à repérer un alignement possible. Au final, une largeur de 1193 et une hauteur de 768 donne :

C’est pas nickel, mais suffisant pour avoir le flag !