문제
내 비밀키로 암호화 했는데, 당신은 절대 추측할 수 없을 것이다.
플래그 형식과 이 과제에 도움이 될 수 있는 방법을 기억하라.
0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104
풀이
먼저 플래그 형식인 crypto{}로 XOR 키를 찾아보겠습니다. }는 맨 마지막에 나오기 때문에 마지막 바이트랑 연산해주었습니다.
1
2
3
4
5
6
7
8
9
10
flag_format = "crypto{}"
key = bytes.fromhex('0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104')
xor_key = ""
for i in range(0,len(flag_format)):
if i == len(flag_format)-1:
xor_key += chr(ord(flag_format[i]) ^ key[-1])
else:
xor_key += chr(ord(flag_format[i]) ^ key[i])
print(xor_key)
1
2
❯ py solve.py
myXORkey
XOR키를 구했으니 바이트별로 연산했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
flag_format = "crypto{}"
key = bytes.fromhex('0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104')
xor_key = ""
for i in range(0,len(flag_format)):
if i == len(flag_format)-1:
xor_key += chr(ord(flag_format[i]) ^ key[-1])
else:
xor_key += chr(ord(flag_format[i]) ^ key[i])
for i in range(0,len(key)):
print(chr(ord(xor_key[i%len(xor_key)]) ^ key[i]), end = "")