encrypted, encrypt.py가 주어진다.

#!/usr/bin/env python2

def xor(msg, key):
    o = ''
    for i in range(len(msg)):
        o += chr(ord(msg[i]) ^ ord(key[i % len(key)]))
    return o

with open('message', 'r') as f:
    msg = ''.join(f.readlines()).rstrip('\n')

with open('key', 'r') as k:
    key = ''.join(k.readlines()).rstrip('\n')

assert key.isalnum() and (len(key) == 9)
assert 'TUCTF' in msg

with open('encrypted', 'w') as fo:
    fo.write(xor(msg, key))

python.isalnum() : 글자 또는 숫자로 구성되어있으면 True 반환

key의 size가 9이다. key도 어차피 모두 글자, 숫자로 이루어져 있으니 cribdrag.py를 사용하자.

image

+ Recent posts