Open roaris opened 2 months ago
import os
import struct
FLAG = os.getenv("FLAG", "RTACTF{*** REDACTED ***}").encode()
assert FLAG.startswith(b"RTACTF{") and FLAG.endswith(b"}")
KEY_SIZE = 8
KEY = os.urandom(KEY_SIZE)
p64 = lambda x: struct.pack('<Q', x)
u64 = lambda x: struct.unpack('<Q', x)[0]
"""
XOR-CBC Explained:
plain 0 plain 1 plain 2
| | |
v v v
IV --> XOR +------> XOR +------> XOR
| | | | |
v | v | v
key -> XOR | key -> XOR | key -> XOR
| | | | |
+---+ +---+ |
| | |
v v v
[IV] [cipher 0] [cipher 1] [cipher 2]
"""
def encrypt(plaintext, key):
padlen = KEY_SIZE - (len(plaintext) % KEY_SIZE)
plaintext += bytes([padlen] * padlen)
iv = os.urandom(KEY_SIZE)
ciphertext = iv
for i in range(0, len(plaintext), KEY_SIZE):
p_block = plaintext[i:i+KEY_SIZE]
c_block = p64(u64(iv) ^ u64(p_block) ^ u64(key))
ciphertext += c_block
iv = c_block
return ciphertext
def decrypt(ciphertext, key):
iv, ciphertext = ciphertext[:KEY_SIZE], ciphertext[KEY_SIZE:]
plaintext = b''
for i in range(0, len(ciphertext), KEY_SIZE):
c_block = ciphertext[i:i+KEY_SIZE]
p_block = p64(u64(iv) ^ u64(c_block) ^ u64(key))
plaintext += p_block
iv = c_block
return plaintext.rstrip(plaintext[-1:])
if __name__ == '__main__':
ENC_FLAG = encrypt(FLAG, KEY)
print("Encrypted:", ENC_FLAG.hex())
assert decrypt(ENC_FLAG, KEY) == FLAG
平文ブロックを $P_0, P_1, P_2, \ldots$ 暗号文ブロックを $C_0, C_1, C_2, \ldots$ 初期化ベクトルを $IV$ 鍵を $K$ とすると、 $P_0 \oplus IV \oplus K = C_0$ $P_1 \oplus C_0 \oplus K = C_1$ $P_2 \oplus C_1 \oplus K = C_2$ となる
1つ目の式を変形すると $K = P_0 \oplus IV \oplus C_0$ となる
このうち $IV$ と $C_0$ は分かっていて $P_0$ も先頭7バイトはRTACTF{
だと分かっている
なので $P_0$ の末尾1バイトを全探索して、各 $K$ をdecrypt関数に渡して復号する
以下で解いた
import struct
KEY_SIZE = 8
p64 = lambda x: struct.pack('<Q', x)
u64 = lambda x: struct.unpack('<Q', x)[0]
def decrypt(ciphertext, key):
iv, ciphertext = ciphertext[:KEY_SIZE], ciphertext[KEY_SIZE:]
plaintext = b''
for i in range(0, len(ciphertext), KEY_SIZE):
c_block = ciphertext[i:i+KEY_SIZE]
p_block = p64(u64(iv) ^ u64(c_block) ^ u64(key))
plaintext += p_block
iv = c_block
return plaintext.rstrip(plaintext[-1:])
ciphertext = '6528337d61658047295cef0310f933eb681e424b524bcc294261bd471ca25bcd6f3217494b1ca7290c158d7369c168b3'
ciphertext = bytes.fromhex(ciphertext)
iv = ciphertext[:KEY_SIZE]
c0 = ciphertext[KEY_SIZE:2*KEY_SIZE]
for i in range(256):
p0 = bytes('RTACTF{', 'ascii') + i.to_bytes()
key = p64(u64(iv) ^ u64(c0) ^ u64(p0))
print(decrypt(ciphertext, key))
正しくない $K$ だと復号結果にパディングが残った状態になる (もし平文のバイト数が、ブロックサイズの倍数なら、パディングは残らないが) 1つだけパディングが残ってない状態のものがあり、それが元の平文(RTACTF{1_b0ugh7_4_b1k3_y3s73rd4y})
$ python solve.py
b'RTACTF{\x00_b0ugh7n4_b1k3_H3s73rd4H}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x01_b0ugh7o4_b1k3_I3s73rd4I}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x02_b0ugh7l4_b1k3_J3s73rd4J}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x03_b0ugh7m4_b1k3_K3s73rd4K}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x04_b0ugh7j4_b1k3_L3s73rd4L}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x05_b0ugh7k4_b1k3_M3s73rd4M}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x06_b0ugh7h4_b1k3_N3s73rd4N}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x07_b0ugh7i4_b1k3_O3s73rd4O}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x08_b0ugh7f4_b1k3_@3s73rd4@}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\t_b0ugh7g4_b1k3_A3s73rd4A}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\n_b0ugh7d4_b1k3_B3s73rd4B}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x0b_b0ugh7e4_b1k3_C3s73rd4C}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x0c_b0ugh7b4_b1k3_D3s73rd4D}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\r_b0ugh7c4_b1k3_E3s73rd4E}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x0e_b0ugh7`4_b1k3_F3s73rd4F}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x0f_b0ugh7a4_b1k3_G3s73rd4G}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x10_b0ugh7~4_b1k3_X3s73rd4X}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x11_b0ugh7\x7f4_b1k3_Y3s73rd4Y}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x12_b0ugh7|4_b1k3_Z3s73rd4Z}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x13_b0ugh7}4_b1k3_[3s73rd4[}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x14_b0ugh7z4_b1k3_\\3s73rd4\\}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x15_b0ugh7{4_b1k3_]3s73rd4]}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x16_b0ugh7x4_b1k3_^3s73rd4^}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x17_b0ugh7y4_b1k3__3s73rd4_}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x18_b0ugh7v4_b1k3_P3s73rd4P}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x19_b0ugh7w4_b1k3_Q3s73rd4Q}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1a_b0ugh7t4_b1k3_R3s73rd4R}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1b_b0ugh7u4_b1k3_S3s73rd4S}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1c_b0ugh7r4_b1k3_T3s73rd4T}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1d_b0ugh7s4_b1k3_U3s73rd4U}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1e_b0ugh7p4_b1k3_V3s73rd4V}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x1f_b0ugh7q4_b1k3_W3s73rd4W}\x07\x07\x07\x07\x07\x07'
b'RTACTF{ _b0ugh7N4_b1k3_h3s73rd4h}\x07\x07\x07\x07\x07\x07'
b'RTACTF{!_b0ugh7O4_b1k3_i3s73rd4i}\x07\x07\x07\x07\x07\x07'
b'RTACTF{"_b0ugh7L4_b1k3_j3s73rd4j}\x07\x07\x07\x07\x07\x07'
b'RTACTF{#_b0ugh7M4_b1k3_k3s73rd4k}\x07\x07\x07\x07\x07\x07'
b'RTACTF{$_b0ugh7J4_b1k3_l3s73rd4l}\x07\x07\x07\x07\x07\x07'
b'RTACTF{%_b0ugh7K4_b1k3_m3s73rd4m}\x07\x07\x07\x07\x07\x07'
b'RTACTF{&_b0ugh7H4_b1k3_n3s73rd4n}\x07\x07\x07\x07\x07\x07'
b"RTACTF{'_b0ugh7I4_b1k3_o3s73rd4o}\x07\x07\x07\x07\x07\x07"
b'RTACTF{(_b0ugh7F4_b1k3_`3s73rd4`}\x07\x07\x07\x07\x07\x07'
b'RTACTF{)_b0ugh7G4_b1k3_a3s73rd4a}\x07\x07\x07\x07\x07\x07'
b'RTACTF{*_b0ugh7D4_b1k3_b3s73rd4b}\x07\x07\x07\x07\x07\x07'
b'RTACTF{+_b0ugh7E4_b1k3_c3s73rd4c}\x07\x07\x07\x07\x07\x07'
b'RTACTF{,_b0ugh7B4_b1k3_d3s73rd4d}\x07\x07\x07\x07\x07\x07'
b'RTACTF{-_b0ugh7C4_b1k3_e3s73rd4e}\x07\x07\x07\x07\x07\x07'
b'RTACTF{._b0ugh7@4_b1k3_f3s73rd4f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{/_b0ugh7A4_b1k3_g3s73rd4g}\x07\x07\x07\x07\x07\x07'
b'RTACTF{0_b0ugh7^4_b1k3_x3s73rd4x}\x07\x07\x07\x07\x07\x07'
b'RTACTF{1_b0ugh7_4_b1k3_y3s73rd4y}'
b'RTACTF{2_b0ugh7\\4_b1k3_z3s73rd4z}\x07\x07\x07\x07\x07\x07'
b'RTACTF{3_b0ugh7]4_b1k3_{3s73rd4{}\x07\x07\x07\x07\x07\x07'
b'RTACTF{4_b0ugh7Z4_b1k3_|3s73rd4|}\x07\x07\x07\x07\x07\x07'
b'RTACTF{5_b0ugh7[4_b1k3_}3s73rd4}}\x07\x07\x07\x07\x07\x07'
b'RTACTF{6_b0ugh7X4_b1k3_~3s73rd4~}\x07\x07\x07\x07\x07\x07'
b'RTACTF{7_b0ugh7Y4_b1k3_\x7f3s73rd4\x7f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{8_b0ugh7V4_b1k3_p3s73rd4p}\x07\x07\x07\x07\x07\x07'
b'RTACTF{9_b0ugh7W4_b1k3_q3s73rd4q}\x07\x07\x07\x07\x07\x07'
b'RTACTF{:_b0ugh7T4_b1k3_r3s73rd4r}\x07\x07\x07\x07\x07\x07'
b'RTACTF{;_b0ugh7U4_b1k3_s3s73rd4s}\x07\x07\x07\x07\x07\x07'
b'RTACTF{<_b0ugh7R4_b1k3_t3s73rd4t}\x07\x07\x07\x07\x07\x07'
b'RTACTF{=_b0ugh7S4_b1k3_u3s73rd4u}\x07\x07\x07\x07\x07\x07'
b'RTACTF{>_b0ugh7P4_b1k3_v3s73rd4v}\x07\x07\x07\x07\x07\x07'
b'RTACTF{?_b0ugh7Q4_b1k3_w3s73rd4w}\x07\x07\x07\x07\x07\x07'
b'RTACTF{@_b0ugh7.4_b1k3_\x083s73rd4\x08}\x07\x07\x07\x07\x07\x07'
b'RTACTF{A_b0ugh7/4_b1k3_\t3s73rd4\t}\x07\x07\x07\x07\x07\x07'
b'RTACTF{B_b0ugh7,4_b1k3_\n3s73rd4\n}\x07\x07\x07\x07\x07\x07'
b'RTACTF{C_b0ugh7-4_b1k3_\x0b3s73rd4\x0b}\x07\x07\x07\x07\x07\x07'
b'RTACTF{D_b0ugh7*4_b1k3_\x0c3s73rd4\x0c}\x07\x07\x07\x07\x07\x07'
b'RTACTF{E_b0ugh7+4_b1k3_\r3s73rd4\r}\x07\x07\x07\x07\x07\x07'
b'RTACTF{F_b0ugh7(4_b1k3_\x0e3s73rd4\x0e}\x07\x07\x07\x07\x07\x07'
b'RTACTF{G_b0ugh7)4_b1k3_\x0f3s73rd4\x0f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{H_b0ugh7&4_b1k3_\x003s73rd4\x00}\x07\x07\x07\x07\x07\x07'
b"RTACTF{I_b0ugh7'4_b1k3_\x013s73rd4\x01}\x07\x07\x07\x07\x07\x07"
b'RTACTF{J_b0ugh7$4_b1k3_\x023s73rd4\x02}\x07\x07\x07\x07\x07\x07'
b'RTACTF{K_b0ugh7%4_b1k3_\x033s73rd4\x03}\x07\x07\x07\x07\x07\x07'
b'RTACTF{L_b0ugh7"4_b1k3_\x043s73rd4\x04}\x07\x07\x07\x07\x07\x07'
b'RTACTF{M_b0ugh7#4_b1k3_\x053s73rd4\x05}\x07\x07\x07\x07\x07\x07'
b'RTACTF{N_b0ugh7 4_b1k3_\x063s73rd4\x06}\x07\x07\x07\x07\x07\x07'
b'RTACTF{O_b0ugh7!4_b1k3_\x073s73rd4\x07}\x07\x07\x07\x07\x07\x07'
b'RTACTF{P_b0ugh7>4_b1k3_\x183s73rd4\x18}\x07\x07\x07\x07\x07\x07'
b'RTACTF{Q_b0ugh7?4_b1k3_\x193s73rd4\x19}\x07\x07\x07\x07\x07\x07'
b'RTACTF{R_b0ugh7<4_b1k3_\x1a3s73rd4\x1a}\x07\x07\x07\x07\x07\x07'
b'RTACTF{S_b0ugh7=4_b1k3_\x1b3s73rd4\x1b}\x07\x07\x07\x07\x07\x07'
b'RTACTF{T_b0ugh7:4_b1k3_\x1c3s73rd4\x1c}\x07\x07\x07\x07\x07\x07'
b'RTACTF{U_b0ugh7;4_b1k3_\x1d3s73rd4\x1d}\x07\x07\x07\x07\x07\x07'
b'RTACTF{V_b0ugh784_b1k3_\x1e3s73rd4\x1e}\x07\x07\x07\x07\x07\x07'
b'RTACTF{W_b0ugh794_b1k3_\x1f3s73rd4\x1f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{X_b0ugh764_b1k3_\x103s73rd4\x10}\x07\x07\x07\x07\x07\x07'
b'RTACTF{Y_b0ugh774_b1k3_\x113s73rd4\x11}\x07\x07\x07\x07\x07\x07'
b'RTACTF{Z_b0ugh744_b1k3_\x123s73rd4\x12}\x07\x07\x07\x07\x07\x07'
b'RTACTF{[_b0ugh754_b1k3_\x133s73rd4\x13}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\\_b0ugh724_b1k3_\x143s73rd4\x14}\x07\x07\x07\x07\x07\x07'
b'RTACTF{]_b0ugh734_b1k3_\x153s73rd4\x15}\x07\x07\x07\x07\x07\x07'
b'RTACTF{^_b0ugh704_b1k3_\x163s73rd4\x16}\x07\x07\x07\x07\x07\x07'
b'RTACTF{__b0ugh714_b1k3_\x173s73rd4\x17}\x07\x07\x07\x07\x07\x07'
b'RTACTF{`_b0ugh7\x0e4_b1k3_(3s73rd4(}\x07\x07\x07\x07\x07\x07'
b'RTACTF{a_b0ugh7\x0f4_b1k3_)3s73rd4)}\x07\x07\x07\x07\x07\x07'
b'RTACTF{b_b0ugh7\x0c4_b1k3_*3s73rd4*}\x07\x07\x07\x07\x07\x07'
b'RTACTF{c_b0ugh7\r4_b1k3_+3s73rd4+}\x07\x07\x07\x07\x07\x07'
b'RTACTF{d_b0ugh7\n4_b1k3_,3s73rd4,}\x07\x07\x07\x07\x07\x07'
b'RTACTF{e_b0ugh7\x0b4_b1k3_-3s73rd4-}\x07\x07\x07\x07\x07\x07'
b'RTACTF{f_b0ugh7\x084_b1k3_.3s73rd4.}\x07\x07\x07\x07\x07\x07'
b'RTACTF{g_b0ugh7\t4_b1k3_/3s73rd4/}\x07\x07\x07\x07\x07\x07'
b'RTACTF{h_b0ugh7\x064_b1k3_ 3s73rd4 }\x07\x07\x07\x07\x07\x07'
b'RTACTF{i_b0ugh7\x074_b1k3_!3s73rd4!}\x07\x07\x07\x07\x07\x07'
b'RTACTF{j_b0ugh7\x044_b1k3_"3s73rd4"}\x07\x07\x07\x07\x07\x07'
b'RTACTF{k_b0ugh7\x054_b1k3_#3s73rd4#}\x07\x07\x07\x07\x07\x07'
b'RTACTF{l_b0ugh7\x024_b1k3_$3s73rd4$}\x07\x07\x07\x07\x07\x07'
b'RTACTF{m_b0ugh7\x034_b1k3_%3s73rd4%}\x07\x07\x07\x07\x07\x07'
b'RTACTF{n_b0ugh7\x004_b1k3_&3s73rd4&}\x07\x07\x07\x07\x07\x07'
b"RTACTF{o_b0ugh7\x014_b1k3_'3s73rd4'}\x07\x07\x07\x07\x07\x07"
b'RTACTF{p_b0ugh7\x1e4_b1k3_83s73rd48}\x07\x07\x07\x07\x07\x07'
b'RTACTF{q_b0ugh7\x1f4_b1k3_93s73rd49}\x07\x07\x07\x07\x07\x07'
b'RTACTF{r_b0ugh7\x1c4_b1k3_:3s73rd4:}\x07\x07\x07\x07\x07\x07'
b'RTACTF{s_b0ugh7\x1d4_b1k3_;3s73rd4;}\x07\x07\x07\x07\x07\x07'
b'RTACTF{t_b0ugh7\x1a4_b1k3_<3s73rd4<}\x07\x07\x07\x07\x07\x07'
b'RTACTF{u_b0ugh7\x1b4_b1k3_=3s73rd4=}\x07\x07\x07\x07\x07\x07'
b'RTACTF{v_b0ugh7\x184_b1k3_>3s73rd4>}\x07\x07\x07\x07\x07\x07'
b'RTACTF{w_b0ugh7\x194_b1k3_?3s73rd4?}\x07\x07\x07\x07\x07\x07'
b'RTACTF{x_b0ugh7\x164_b1k3_03s73rd40}\x07\x07\x07\x07\x07\x07'
b'RTACTF{y_b0ugh7\x174_b1k3_13s73rd41}\x07\x07\x07\x07\x07\x07'
b'RTACTF{z_b0ugh7\x144_b1k3_23s73rd42}\x07\x07\x07\x07\x07\x07'
b'RTACTF{{_b0ugh7\x154_b1k3_33s73rd43}\x07\x07\x07\x07\x07\x07'
b'RTACTF{|_b0ugh7\x124_b1k3_43s73rd44}\x07\x07\x07\x07\x07\x07'
b'RTACTF{}_b0ugh7\x134_b1k3_53s73rd45}\x07\x07\x07\x07\x07\x07'
b'RTACTF{~_b0ugh7\x104_b1k3_63s73rd46}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x7f_b0ugh7\x114_b1k3_73s73rd47}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x80_b0ugh7\xee4_b1k3_\xc83s73rd4\xc8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x81_b0ugh7\xef4_b1k3_\xc93s73rd4\xc9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x82_b0ugh7\xec4_b1k3_\xca3s73rd4\xca}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x83_b0ugh7\xed4_b1k3_\xcb3s73rd4\xcb}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x84_b0ugh7\xea4_b1k3_\xcc3s73rd4\xcc}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x85_b0ugh7\xeb4_b1k3_\xcd3s73rd4\xcd}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x86_b0ugh7\xe84_b1k3_\xce3s73rd4\xce}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x87_b0ugh7\xe94_b1k3_\xcf3s73rd4\xcf}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x88_b0ugh7\xe64_b1k3_\xc03s73rd4\xc0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x89_b0ugh7\xe74_b1k3_\xc13s73rd4\xc1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8a_b0ugh7\xe44_b1k3_\xc23s73rd4\xc2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8b_b0ugh7\xe54_b1k3_\xc33s73rd4\xc3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8c_b0ugh7\xe24_b1k3_\xc43s73rd4\xc4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8d_b0ugh7\xe34_b1k3_\xc53s73rd4\xc5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8e_b0ugh7\xe04_b1k3_\xc63s73rd4\xc6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x8f_b0ugh7\xe14_b1k3_\xc73s73rd4\xc7}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x90_b0ugh7\xfe4_b1k3_\xd83s73rd4\xd8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x91_b0ugh7\xff4_b1k3_\xd93s73rd4\xd9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x92_b0ugh7\xfc4_b1k3_\xda3s73rd4\xda}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x93_b0ugh7\xfd4_b1k3_\xdb3s73rd4\xdb}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x94_b0ugh7\xfa4_b1k3_\xdc3s73rd4\xdc}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x95_b0ugh7\xfb4_b1k3_\xdd3s73rd4\xdd}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x96_b0ugh7\xf84_b1k3_\xde3s73rd4\xde}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x97_b0ugh7\xf94_b1k3_\xdf3s73rd4\xdf}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x98_b0ugh7\xf64_b1k3_\xd03s73rd4\xd0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x99_b0ugh7\xf74_b1k3_\xd13s73rd4\xd1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9a_b0ugh7\xf44_b1k3_\xd23s73rd4\xd2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9b_b0ugh7\xf54_b1k3_\xd33s73rd4\xd3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9c_b0ugh7\xf24_b1k3_\xd43s73rd4\xd4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9d_b0ugh7\xf34_b1k3_\xd53s73rd4\xd5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9e_b0ugh7\xf04_b1k3_\xd63s73rd4\xd6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\x9f_b0ugh7\xf14_b1k3_\xd73s73rd4\xd7}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa0_b0ugh7\xce4_b1k3_\xe83s73rd4\xe8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa1_b0ugh7\xcf4_b1k3_\xe93s73rd4\xe9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa2_b0ugh7\xcc4_b1k3_\xea3s73rd4\xea}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa3_b0ugh7\xcd4_b1k3_\xeb3s73rd4\xeb}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa4_b0ugh7\xca4_b1k3_\xec3s73rd4\xec}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa5_b0ugh7\xcb4_b1k3_\xed3s73rd4\xed}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa6_b0ugh7\xc84_b1k3_\xee3s73rd4\xee}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa7_b0ugh7\xc94_b1k3_\xef3s73rd4\xef}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa8_b0ugh7\xc64_b1k3_\xe03s73rd4\xe0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xa9_b0ugh7\xc74_b1k3_\xe13s73rd4\xe1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xaa_b0ugh7\xc44_b1k3_\xe23s73rd4\xe2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xab_b0ugh7\xc54_b1k3_\xe33s73rd4\xe3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xac_b0ugh7\xc24_b1k3_\xe43s73rd4\xe4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xad_b0ugh7\xc34_b1k3_\xe53s73rd4\xe5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xae_b0ugh7\xc04_b1k3_\xe63s73rd4\xe6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xaf_b0ugh7\xc14_b1k3_\xe73s73rd4\xe7}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb0_b0ugh7\xde4_b1k3_\xf83s73rd4\xf8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb1_b0ugh7\xdf4_b1k3_\xf93s73rd4\xf9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb2_b0ugh7\xdc4_b1k3_\xfa3s73rd4\xfa}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb3_b0ugh7\xdd4_b1k3_\xfb3s73rd4\xfb}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb4_b0ugh7\xda4_b1k3_\xfc3s73rd4\xfc}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb5_b0ugh7\xdb4_b1k3_\xfd3s73rd4\xfd}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb6_b0ugh7\xd84_b1k3_\xfe3s73rd4\xfe}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb7_b0ugh7\xd94_b1k3_\xff3s73rd4\xff}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb8_b0ugh7\xd64_b1k3_\xf03s73rd4\xf0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xb9_b0ugh7\xd74_b1k3_\xf13s73rd4\xf1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xba_b0ugh7\xd44_b1k3_\xf23s73rd4\xf2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xbb_b0ugh7\xd54_b1k3_\xf33s73rd4\xf3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xbc_b0ugh7\xd24_b1k3_\xf43s73rd4\xf4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xbd_b0ugh7\xd34_b1k3_\xf53s73rd4\xf5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xbe_b0ugh7\xd04_b1k3_\xf63s73rd4\xf6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xbf_b0ugh7\xd14_b1k3_\xf73s73rd4\xf7}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc0_b0ugh7\xae4_b1k3_\x883s73rd4\x88}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc1_b0ugh7\xaf4_b1k3_\x893s73rd4\x89}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc2_b0ugh7\xac4_b1k3_\x8a3s73rd4\x8a}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc3_b0ugh7\xad4_b1k3_\x8b3s73rd4\x8b}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc4_b0ugh7\xaa4_b1k3_\x8c3s73rd4\x8c}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc5_b0ugh7\xab4_b1k3_\x8d3s73rd4\x8d}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc6_b0ugh7\xa84_b1k3_\x8e3s73rd4\x8e}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc7_b0ugh7\xa94_b1k3_\x8f3s73rd4\x8f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc8_b0ugh7\xa64_b1k3_\x803s73rd4\x80}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xc9_b0ugh7\xa74_b1k3_\x813s73rd4\x81}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xca_b0ugh7\xa44_b1k3_\x823s73rd4\x82}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xcb_b0ugh7\xa54_b1k3_\x833s73rd4\x83}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xcc_b0ugh7\xa24_b1k3_\x843s73rd4\x84}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xcd_b0ugh7\xa34_b1k3_\x853s73rd4\x85}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xce_b0ugh7\xa04_b1k3_\x863s73rd4\x86}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xcf_b0ugh7\xa14_b1k3_\x873s73rd4\x87}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd0_b0ugh7\xbe4_b1k3_\x983s73rd4\x98}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd1_b0ugh7\xbf4_b1k3_\x993s73rd4\x99}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd2_b0ugh7\xbc4_b1k3_\x9a3s73rd4\x9a}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd3_b0ugh7\xbd4_b1k3_\x9b3s73rd4\x9b}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd4_b0ugh7\xba4_b1k3_\x9c3s73rd4\x9c}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd5_b0ugh7\xbb4_b1k3_\x9d3s73rd4\x9d}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd6_b0ugh7\xb84_b1k3_\x9e3s73rd4\x9e}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd7_b0ugh7\xb94_b1k3_\x9f3s73rd4\x9f}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd8_b0ugh7\xb64_b1k3_\x903s73rd4\x90}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xd9_b0ugh7\xb74_b1k3_\x913s73rd4\x91}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xda_b0ugh7\xb44_b1k3_\x923s73rd4\x92}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xdb_b0ugh7\xb54_b1k3_\x933s73rd4\x93}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xdc_b0ugh7\xb24_b1k3_\x943s73rd4\x94}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xdd_b0ugh7\xb34_b1k3_\x953s73rd4\x95}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xde_b0ugh7\xb04_b1k3_\x963s73rd4\x96}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xdf_b0ugh7\xb14_b1k3_\x973s73rd4\x97}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe0_b0ugh7\x8e4_b1k3_\xa83s73rd4\xa8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe1_b0ugh7\x8f4_b1k3_\xa93s73rd4\xa9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe2_b0ugh7\x8c4_b1k3_\xaa3s73rd4\xaa}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe3_b0ugh7\x8d4_b1k3_\xab3s73rd4\xab}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe4_b0ugh7\x8a4_b1k3_\xac3s73rd4\xac}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe5_b0ugh7\x8b4_b1k3_\xad3s73rd4\xad}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe6_b0ugh7\x884_b1k3_\xae3s73rd4\xae}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe7_b0ugh7\x894_b1k3_\xaf3s73rd4\xaf}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe8_b0ugh7\x864_b1k3_\xa03s73rd4\xa0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xe9_b0ugh7\x874_b1k3_\xa13s73rd4\xa1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xea_b0ugh7\x844_b1k3_\xa23s73rd4\xa2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xeb_b0ugh7\x854_b1k3_\xa33s73rd4\xa3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xec_b0ugh7\x824_b1k3_\xa43s73rd4\xa4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xed_b0ugh7\x834_b1k3_\xa53s73rd4\xa5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xee_b0ugh7\x804_b1k3_\xa63s73rd4\xa6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xef_b0ugh7\x814_b1k3_\xa73s73rd4\xa7}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf0_b0ugh7\x9e4_b1k3_\xb83s73rd4\xb8}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf1_b0ugh7\x9f4_b1k3_\xb93s73rd4\xb9}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf2_b0ugh7\x9c4_b1k3_\xba3s73rd4\xba}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf3_b0ugh7\x9d4_b1k3_\xbb3s73rd4\xbb}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf4_b0ugh7\x9a4_b1k3_\xbc3s73rd4\xbc}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf5_b0ugh7\x9b4_b1k3_\xbd3s73rd4\xbd}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf6_b0ugh7\x984_b1k3_\xbe3s73rd4\xbe}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf7_b0ugh7\x994_b1k3_\xbf3s73rd4\xbf}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf8_b0ugh7\x964_b1k3_\xb03s73rd4\xb0}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xf9_b0ugh7\x974_b1k3_\xb13s73rd4\xb1}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xfa_b0ugh7\x944_b1k3_\xb23s73rd4\xb2}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xfb_b0ugh7\x954_b1k3_\xb33s73rd4\xb3}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xfc_b0ugh7\x924_b1k3_\xb43s73rd4\xb4}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xfd_b0ugh7\x934_b1k3_\xb53s73rd4\xb5}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xfe_b0ugh7\x904_b1k3_\xb63s73rd4\xb6}\x07\x07\x07\x07\x07\x07'
b'RTACTF{\xff_b0ugh7\x914_b1k3_\xb73s73rd4\xb7}\x07\x07\x07\x07\x07\x07'
https://alpacahack.com/challenges/xor-cbc