LE BLOG DE RICK Chasseurs de succès Linux Random WU

Par Rick dans WU le 21/04/2021.


Quick Response Code

Cet article est le numéro 6 de la série WU PhackCTF 2021.

  1. WU PHACKCTF 2021
  2. Alien
  3. Alter Egg-o
  4. Ben & Harry
  5. Git de France
  6. Quick Response Code
  7. Tendu comme un slip & No strings

Pour ce chall, on a une grosse archive ZIP. À l’intérieur se trouve plus de 1000 images de QRCodes, le flag est donc caché dedans.

J’en scanne un au hasard et j’y lis Nothing here suivi d’un long id. J’ai alors développé rapidement un programme Python pour lire tout ça, avec un print dès que le fichier ne commnce pas par Nothing here. Pleins de flags s’affichent. Il est donc découpé en pleins de petits morceaux. Bon, je réécris le script en utilisant un dictionnaire afin d’afficher dans l’ordre le flag.

J’ai perdu la phrase indiquant que le flag est en petit morceaux mais elle ressemblait à ça : Flag part X is "Y" ! Bla bla….

Il suffit d’installer pyzbar pour lire les QR Codes :

pip install pyzbar # pour python3, peut changer selon votre OS

Voici ensuite le code pour analyser l’ensemble des fichier :

from PIL import Image
from pyzbar.pyzbar import decode
import os

flagPart = {} 

for qrfile in os.listdir('.'):
    if qrfile.endswith(".png"):
        result = decode(Image.open(qrfile))[0].data.decode("utf-8")
        if not result.startswith("Nothing here"):
            tmp = result.split(' ')
            flagPart[int(tmp[2])] = tmp[4].split('\"')[1]

for key in sorted(flagPart):
    print(flagPart[key], end='')
print()