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()