読者です 読者をやめる 読者になる 読者になる

ASIS CTF Writeup PPC/Code&Code

ncで接続するとQRコードが表示されるので、デコードして入力すると別のQRコードが表示される。
100回入力するとflagが出てくる。
文字列なQRコードをデコードする方法が思いつかず、画像に変換してからデコードした。

import sys
import socket
import Image
from qrtools import QR
 
def solve(qrcode):
    make_qrcode_image(qrcode)
 
    code = QR(filename='qrcode.png')
    if code.decode():
        return code.data
    return 'null'
 
def make_qrcode_image(qrcode_str):
    img = Image.new('RGB', (30*2, 30*2), (0xff, 0xff, 0xff))
    x = 0
    y = 0
    for l in qrcode_str.rstrip('\n').split('\n'):
        for c in l.lstrip(' ').split(' '):
            if c == '-':
                for kx in range(2):
                    for ky in range(2):
                        img.putpixel((y*2+ky,x*2+kx), (0x00, 0x00, 0x00))
            x += 1
        y += 1
        x = 0
    img.save('qrcode.png')
 
s = socket.socket(socket.AF_INET)
s.connect(('asis-ctf.ir', 12435))
 
print s.recv(1024)
print s.recv(1024)
s.send('\n')
 
for count in range(0,100):
    print s.recv(1024)
    qrcode = s.recv(1024)
    qrcode += s.recv(1024)
    qrcode += s.recv(1024)
    print qrcode
    ans = solve(qrcode)
    print ans
    print count
    s.send(ans + '\n')
 
print s.recv(1024) # flag
 
s.close()

the flag is: ASIS_ebd814d43f558d1b73d077234f65b71b

今回はWebが難しくて1問も解けませんでした。
バイナリも解きたかったけど @potetisensei が解きまくってて手が出せませんでした。
おしまい。