LeHack 19 - alphajet

Posted on dim. 07 juillet 2019 in CTF

File : alphajet.pgm

alphajet
50 Points
an easy stega

Url: https://static.wargame.rocks/alphajet.pgm

En stéganographie, les techniques de LSB (Less Significant Bits) et MSB (Most Significant Bits) sont les plus utilisés. On peut donc supposer que le flag de cette épreuve a été caché à l'aide d'une de ces méthodes.

Cependant, le format pgm n'est pas reconnu par la plus part des outils d'anlyse. Il faut donc d'abord le transformer en png afin de rendre les outils opérationels. Cette opération peut être facilement faite en python avec la librairie pillow.

#!/usr/bin/env python3
from PIL import Image
with open("alphajet.pgm", mode="r") as fp:
        #P2
        _ = fp.readline()    

        #Dimensions du fichier : 567 * 291    
        width, height = tuple([int(i) for i in fp.readline().split(" ")])

        #rebuilding de l'image
        img = Image.new("L", (width, height), (0,))
        for i in range(height):
            for j in range(width):
                img.putpixel((j,i), int(fp.readline()))

        img.save("alphaget.png")

Un fois notre png créé, on peut utiliser l'outil zsteg par exemple :

# gem install zsteg
$ zsteg alphaget.png   
b1,r,lsb,xy         .. text: "Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4WiQofuCeMEf8672}.Le flag est: lh_{EtMy4"

On obtiens alors le flag de manière répétée : lh_{EtMy4WiQofuCeMEf8672}.