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를 사용하자.
'Writeup [crypto] > CTF 대회 기출' 카테고리의 다른 글
[zer0pts CTF 2020] diysig (0) | 2020.03.10 |
---|---|
[zer0pts CTF 2020] ROR (0) | 2020.03.10 |
[TokyoWesterns CTF 4th 2018] Revolutional Secure Angou (0) | 2020.03.08 |
[PlaidCTF 2019] R u SAd? (0) | 2020.03.08 |
[OverTheWire Advent 2019] Santa's Signature (0) | 2020.03.08 |