Microscope
16<!DOCTYPE html><html><head><title>Microscope</title></head><body><table><tr><td bgcolor="#474946"></td><td bgcolor="#383961"></td>
bgcolorをバイナリデータとして読み替えるとGIF89aになります。bgcolorをバイナリデータとしてファイルに保存するPythonプログラムを書きます。
from bs4 import BeautifulSoupimport structf = open('Microscope.html')html = f.read()f.close()soup = BeautifulSoup(html, 'html.parser')tds = soup.find_all('td')data = ''for td in tds:data += td.get('bgcolor')[1:]f = open('aaa.gif', 'wb')for i in range(0, len(data), 2):f.write(struct.pack('B', int(data[i:i+2], 16)))f.close()
実行すると次のアニメーションGIFファイルができます。
アニメーションGIFのフレームを順番に取得してQRコードを読ませるPythonプログラムを書きます。
from PIL import Image, ImageSequencefrom pyzbar.pyzbar import decodeim = Image.open('aaa.gif')frames = (frame.copy() for frame in ImageSequence.Iterator(im))flag = ''for frame in frames:data = decode(frame)flag += data[0][0].decode('utf-8', 'ignore')print(flag)
実行するとフラグが出力されます。
フラグは、
フラグは、
HZVII{7h3_0r161n4l_qr_c0d3_w45_d3v3l0p3d_1n_1994.}