SECCON Beginners 2025 - 01-Translator
AES-ECB (Electronic Codebook Mode) は 16bytes ごとのブロックの区切りで暗号化される。
16bytesの部分が同じバイト列なら、全く同じように変換される。これを利用する。
各ブロックを0だけと1だけで埋めるようにtrans_0, trans_1を決める。
変換する文字は何でも良いが、同じ文字種の16文字にする。例えば 0を16文字の000...000, 1を16文字の111...111にする。
code:python
patternA = "eaefc7dc6483aef0543978afe9bf1252"
patternB = "6e591da7e666e52cae4c53326dbfe4da"
encoded_flag = "eaefc7dc6483aef0543978afe9bf1252eaefc7dc648fe9bf1252...6e591da7e666e52cae4c53326dbfe4daeaefc7dc6483aef0543978afe9bf1252"#11864e458745782547332a40c8510066" (最後はpadding)
flag_translated = encoded_flag.replace(patternB, "0").replace(patternA, "1")
binary_str = ""
for c in flag_translated:
if c == "0":
binary_str += "0"
elif c == "1":
binary_str += "1"
flag = bytes.fromhex(hex(int(binary_str, 2))2:).decode() print(flag)