Byte Bandits CTF 2020 Writeup

この大会は2020/4/12 0:30(JST)~2020/4/13 0:30(JST)に開催されました。
今回もチームで参戦。結果は5734点で318チーム中6位でした。
自分で解けた問題をWriteupとして書いておきます。

meet me there (crypto)

鍵を2つ使って、AES暗号を2回行い、サンプルの平文と暗号文がわかっている。こういう場合は平文を1回暗号化したものと、暗号文を1回復号したものを突合し、合っているものを探す。その際暗号文を1回復号したものはhex文字列である必要があるということから絞ることができる。まずは平文を1回暗号化したものと、暗号文を1回復号したもののリストをファイルに保存する。

from Crypto.Cipher import AES
from string import printable, hexdigits
from itertools import product

def is_hexdigits(s):
    for c in s:
        if c not in hexdigits:
            return False
    return True

pt = 'aaaaaaaaaaaaaaaa'
ct = 'ef92fab38516aa95fdc53c2eb7e8fe1d5e12288fdc9d026e30469f38ca87c305ef92fab38516aa95fdc53c2eb7e8fe1d5e12288fdc9d026e30469f38ca87c305'

for c in product(printable, repeat=3):
    key1 = '0' * 13 + ''.join(c)
    cipher1 = AES.new(key1, AES.MODE_ECB)
    c1 = cipher1.encrypt(pt.encode('hex'))
    with open('meet1.txt', 'a') as f:
        f.write(key1 + ',' + c1.encode('hex') + '\n')

for c in product(printable, repeat=3):
    key2 = ''.join(c) + '0' * 13
    cipher2 = AES.new(key2, AES.MODE_ECB)
    p2 = cipher2.decrypt(ct.decode('hex'))
    if is_hexdigits(p2):
        with open('meet2.txt', 'a') as f:
            f.write(key2 + ',' + p2 + '\n')

試した結果、暗号文を1回復号したものがhex文字列である鍵は1種類。

key2 = '}=v0000000000000'

復号データは以下の通り。

c91dcfc4e250ee0c013fe3e6faa0d76fc91dcfc4e250ee0c013fe3e6faa0d76f

平文を1回暗号化したものがこのデータになるものを検索する。

key1 = '0000000000000t\r['

これを元にフラグを復号する。

from Crypto.Cipher import AES

ct_flag = 'fa364f11360cef2550bd9426948af22919f8bdf4903ee561ba3d9b9c7daba4e759268b5b5b4ea2589af3cf4abe6f9ae7e33c84e73a9c1630a25752ad2a984abfbbfaca24f7c0b4313e87e396f2bf5ae56ee99bb03c2ffdf67072e1dc98f9ef691db700d73f85f57ebd84f5c1711a28d1a50787d6e1b5e726bc50db5a3694f576'

key1 = '0000000000000t\r['
key2 = '}=v0000000000000'

cipher1 = AES.new(key1, AES.MODE_ECB)
cipher2 = AES.new(key2, AES.MODE_ECB)

p2 = cipher2.decrypt(ct_flag.decode('hex'))
p1 = cipher1.decrypt(p2.decode('hex'))
flag = p1.decode('hex')
print flag
flag{y0u_m@d3_i7_t0_7h3_m1dddl3}

RSyay! (crypto)

$ nc crypto.byteband.it 7002

!!! Welcome !!!
Can you encrypt some data for me :)

Plaintext (b64encoded) :  sZEnbo8LgXLIzrDIlblUSPO3imgQLDrtlFjA2R2THi0=

241ce23f7a376cf061fbf619324c904fad37311ba4b568c7ea521baf7bc657aecfa5946c88ecba763bdf415a41911154ca6e3f2d23177c5734f24ba8574211b335a5ec9845806286f80cb8c7e85cde6d5f493dbd75cfc47487795ffbe447a0581086cf63afb4a0f4136b94c257a81d760e3a906763432e13910a699698f055bad
180d87bbf1974bdf048053dd416611c2ab33277b1839964724212e39cda7fee7e8a720aad1df5adc30d162be7667639777bfd4fcfcd4e0134e9fdb5c88849080ff5fda8484da5c168383bd2874f3d77450bc6995396739c9acfea2b7ea6819e3da92f988538c7c55e6e0db388bf11df419e51a3153f4c058d8a7e38b499950bb1

Ciphertext (b64encoded) : sZEnbo8LgXLIzrDIlblUSPO3imgQLDrtlFjA2R2THi0=

No flag for you !!!

xの式を変形する。

x = (pow(p, m, m) + p) * (pow(q, m, m) + q) + pow(p, m-1, m) * pow(q, m-1, m)
  = (p + p) * (q + q) + 1 * 1
  = 4 * p * q + 1 = 4 * n + 1
→ n = (x - 1) / 4

xからnを計算でき、さらにeが分かっているので、暗号化データを作成できる。それを何回も繰り返し答えていけばよい。

import socket
from base64 import b64encode, b64decode
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

e = 65537L

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('crypto.byteband.it', 7002))

data = recvuntil(s, ':)\n').rstrip()
print data

for i in range(32):
    print 'Round %d' % (i+1)
    data = recvuntil(s, '\n').rstrip()
    print data
    data = recvuntil(s, '\n').rstrip()
    print data
    text = b64decode(data.split(':  ')[1])

    data = recvuntil(s, '\n').rstrip()
    print data
    data = recvuntil(s, '\n').rstrip()
    print data
    x = int(data, 16)
    data = recvuntil(s, '\n').rstrip()
    print data

    n = (x - 1) / 4
    keys = RSA.construct((n, e))
    encryptor = PKCS1_OAEP.new(keys)
    ciphertext = b64encode(encryptor.encrypt(text))

    data = recvuntil(s, ': ')
    print data + ciphertext
    s.sendall(ciphertext + '\n')

    data = recvuntil(s, '\n').rstrip()
    print data

data = recvuntil(s, '\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

実行結果は以下の通り。

                :
Round 32

Plaintext (b64encoded) :  ZBFSZUVh0l6vO4wlpStpNCl0GLGDSigtKsTaqI4Ry+U=

2e758bc09b21e2d698d8dc9d7ebe23126b952fdd4a7f5c2fd07a89745af34b8c09e1a04f89d21c36e6ad8dbba049a907be07739bef12c2c7f8e74d725fc03e698f55f8268330bbd5da8bc937da676cd0acbee9b15ecb4c24b3232ba55bf96a58aa0acc48b9bd7cbdd210eb4189ef9f3160400263494859e71b984471d84a4bb290965b57590a5165de91adb39a6df19e5e8815d20a6aa5377ae7cb5eca859b5
10e2fd990bd0d91c9bdd16d3a2c2759cd9eb161a0b9a0a6016f872492d3ee4b5df4ea9339cbd5d67698574a6f4e239c1f4fd0dfe0c8834d4c5c67cedf61f0ab03c4efe68ebfbc6e1c5b8c7c0c8392cf29c94b19e553e47c28cc8a046abd12d8c03625c9c5578fc3bbd8851e9d59cb8b3579485ea94f9ef456a823b87de056a613fe6d7f0a6549bb483c383f152770fca46e4ad1477cb0b6a30439e6ac9e565d

Ciphertext (b64encoded) : oZ4S9s7xikH6JB5kN5oA7Pa3/dgOBffMq54xaDq4P13t3KLECBrXAte1Jv76L0Vhv9/tdUR9eWazGZd0QM1loLbiK2xfTyac0xW5InrPYdnNr25yYJum4/NHIc1PmnsmHLyBk3gEKE6uJ0SzVrbXMJExDe5RUi+2mumx6G1B0tm8ZsRntLYdC8G+DW98z65pFD0jJDSB62tSLr8P1r++


Flag :  flag{RSA_1s_th3_str0ng3st_c1ph3r_ind33d_0_0}
flag{RSA_1s_th3_str0ng3st_c1ph3r_ind33d_0_0}

AESy (crypto)

$ nc crypto.byteband.it 7004

WELCOME TO ALICE's ENCRYPTION SERVICE
(Plaintext is hex-encoded before encryption)


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
1

Enter your message(plaintext):
1234

Here is your ciphertext(hex-encoded):
f9024d920a22eac3c3368ea55da658f2c04d1f22b3f5e937f1f66aecd57fbf80


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
2

Enter the ciphertext(hex-encoded):
f9024d920a22eac3c3368ea55da658f2c04d1f22b3f5e937f1f66aecd57fbf80

Alice: Got your message!!★暗号化データを渡すと、この結果。


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
2

Enter the ciphertext(hex-encoded):
f9024d920a22eac3c3368ea55da658f2c04d1f22b3f5e937f1f66aecd57fbf7f

Alice: Got your message..??★最後の1バイトだけ変えると、この結果。


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
2 

Enter the ciphertext(hex-encoded):
f8024d920a22eac3c3368ea55da658f2c04d1f22b3f5e937f1f66aecd57fbf80

Alice: Got your message!!★先頭の1バイトだけ変えると、この結果


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
3

Here is your ciphertext(hex-encoded):
7d0d5c84903683750c535c216c008a68a45878c05a2492109a42f3a67d6545dcce2f8ecfde80973ca80f196b9a40b3c8c46b24adcf5530f90984952b571ef4613f0e77926907acc99683c7c8d92fcb278367406057825e8fc9fb44c15269e9cb


1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:

たぶん、パディングが正しい状態で復号できていないと、「Alice: Got your message..??」のメッセージが表示されると推測できる。CBC Padding Oracle Attackで復号する。

import socket

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

def str_xor(s1, s2):
    return ''.join(chr(ord(a) ^ ord(b)) for a, b in zip(s1, s2))

def unpad(s):
    return s[:-ord(s[-1])]

def is_valid(s, enc):
    data = recvuntil(s, ':\n').rstrip()
    print data
    print '2'
    s.sendall('2\n')

    data = recvuntil(s, ':\n').rstrip()
    print data
    print enc
    s.sendall(enc + '\n')

    data = recvuntil(s, '\n').rstrip()
    print data
    data = recvuntil(s, '\n').rstrip()
    print data
    if data == 'Alice: Got your message!!':
        return True
    else:
        return False

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('crypto.byteband.it', 7004))

data = recvuntil(s, ':\n').rstrip()
print data
print '3'
s.sendall('3\n')

data = recvuntil(s, ':\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data
enc = data.decode('hex')

enc_blocks = []
for i in range(0, len(enc), 16):
    enc_blocks.append(enc[i:i+16])

xor_blocks = []
for i in range(len(enc_blocks)-1, 0, -1):
    xor_block = ''
    for j in range(16):
        for code in range(256):
            print '%d - %d - %d: %s' % (i, j, code, xor_block.encode('hex'))
            print '****', str_xor(xor_block, enc_blocks[i-1][-j:]), '****'
            try_pre_block = '\x00' * (16 - j - 1) + chr(code) + str_xor(xor_block, chr(j+1)*j)
            try_cipher = (try_pre_block + enc_blocks[i]).encode('hex')
            if is_valid(s, try_cipher):
                xor_code = (j+1) ^ code
                xor_block = chr(xor_code) + xor_block
                break

    xor_blocks.append(xor_block)

xor_blocks.reverse()

flag = ''
for i in range(len(xor_blocks)):
    flag += str_xor(enc_blocks[i], xor_blocks[i])

flag = unpad(flag)
print flag

flag = flag.decode('hex')
print flag

実行結果は以下の通り。

                :
1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
2

Enter the ciphertext(hex-encoded):
c4e5f427d1d9a7195eedb4d05a00e4129621f1c0eb41d546ea5aa7c27abc43d0

Alice: Got your message..??
1 - 15 - 197: f5e437c1c9b7094efda4c04a10f402
**** 66c61677b746833 ****

1. Get your message encrypted.
2. Leave a message for Alice to decrypt.
3. Get Encrypted Flag.
4. Exit.
Enter your choice:
2

Enter the ciphertext(hex-encoded):
c5e5f427d1d9a7195eedb4d05a00e4129621f1c0eb41d546ea5aa7c27abc43d0

Alice: Got your message!!
666c61677b7468335f307261636c335f306e6c795f6775316465245f3768655f313333377d
flag{th3_0racl3_0nly_gu1de$_7he_1337}
flag{th3_0racl3_0nly_gu1de$_7he_1337}

Secure DES (crypto)

$ nc crypto.byteband.it 7001
Welcome!

1. Encrypt String
2. Get Key
3. Get encrypted flag
4. Exit

> 1
String : hoge
Xd8MvjZmWLM=
> 2
0xb4e814ab5f737f395af33f800908463fb27ff67e1fd9ef7d2fd81c185f1dc34316d04bc7a5d9c99576f2ab414bbcf8ae819a073bbe8e473ea85cfd99f2307dc7
['0x43575cc90b034910f680e694098e42b310956cae702e787ed801cdbc7c2bcabc18f08a6f5b52aa98cb27edf7ed03b59c935d9899faf55e24ac15a32c58a61047', '0x9a7b75c2f6bd8caeb13e3eb678399ad73d621d8e304536a5648d83f6ccbba78fdbfa21b935d825584e5bd90ad3cc61f16dc4eb679c1db235a3bad5f6e7ae8040', '0x15a8a2a3f34d54da64aa6f932b1a717d0783512d2f2c8c256ffb5169c7f698a8f68f4386a4b72572f31fdffc33fef6bf951d867c7f571a366c77728570b8973b', '0xa86d423a87cb7213ff983f395cd142a4b5c298c66cf96befc9b4bf7dc38ea4759565bb1d49553e618c894da66bcdb9d602f2bcc428a46cc3cad1bb5ee63e00de', '0x660282ff1ac8c7ab351897c6ed70dc6e38f712b762ad0c3f5070d4dea84a8cde92e101cfedafd986e71ec4e0cfe9af528c440b0d0c72c74c65c16f35ed7a9b45', '0x9e8bca900b610120a052d0db42dfab08b0932ed6e2b9f58f05ba532d234ad6f2dc9f1b7ef1f88ccdd17643a60a2145d0fcf7bb039e58471a12d29438418ac037', '0x58d06b7674bec7982cc42b6e1abc79a007e053e14ef0ab2871bfee35c0a432d7b370f779ba3d8677b5855fc8ffa7b2c7457447ab73c315b8007ab668b57cd346', '0x3c26769a2363b83c3a69f48b371b30775aac3a5ba3966e8795181f848127ef9d0b35091453620f7c32785ad1713f1a67d5fc10f23b2c153d3c0ceb83a7d3a964', '0x46b35f9f3511d7c498eeabbd18edd22050c2d03909c1ddb4bfb59e9da5f253e968729d910f798b06e83cda52a0150a04f4607307d02e19b5c29539a1b24afbf3', '0xdf57eb1273f990a60c1d44574ac57efa4ecea52c61c020f3ab1ffa2f2729890111c108e29a376001a2a26d9c76064d66fe01edc27203b7bd51a62af81b1fc22', '0xb40bb30b424fac1d5937b4347ac1a0503583fc98baa693ae0a7de458466eff48eb823f5fd27b549dd9c3eb90aa51746e78921b896b954fb1fac5399904ce022f', '0x3f835f0bfd13dc88179dc6a792f505f971f602a957622b10af0746a8b40e40de58905d3edffa98839401f6bc40c38977333ff4fd817ac038db23861a8359d5f3', '0x10f302d7ebda0c480fa59889651d7a2f590dd2f54537144b762ce629162411f231d914b29432f7678144e8c3a24337b1b59dc53969dd330ed647dba5ef3be79', '0xb4129905ac577a556b92e5484d9299077ac96f585e2f3b85d25520204152671b26749cbacd8b2012c0722c3b2bcb12c526e1a2083f45ee9e5a7c6e44e9e0864b', '0x3cbabd445073aaf0cb876d857dfc0672cfcbf8c45b83d7762d33c0bb71e7a63c32164597449f1848000e0234935e95598e3ecf15d522994963aaa1a556c49354', '0x6166017774c89279f6fcf413192bb8fd6cb3404e104148542b474390cfb2663167ba0dfc77741781569644da18645f1a0a9a6d826d2f868b92784c0323d91ba8', '0x909fe481fde99853bc0878a1ab2463b214b45310e94a1f748b709cbe420fb6502c4b2be387af93a98b09d30671ee715cf315c55329c616db0e0d10d0feb5e6f6', '0x432abef9e92cb5349d60ef246050986b4aefbe25b4213488c1b051dd767702efc034523dd2562022ae1fe5bb630e715e136042521d324b9859a0d6be5606ae27', '0x8073ddc015537d4d24e367b54edda7f71e57d9d2c0b85feaa0a38a9546d6cc08761cf19a6f4f4d8b1f03cc60487b82d92a1d4a3b600dc299949a978f09d8f9fa', '0x6b6a28658161532b904464cab276bc689c34e5765686f23e200c9bd44c781090ccf9b5f4085eb8dcb4fbf1b3b6b400728b537f716e4870b8dc970079d86f5470', '0x6b67fac8fdb53a9b30afbe9a1c10a7fa4e2a59a8964af7b93b4e6b046ce6c09e90fefd459e0130e5abc25da9077714a2235ad656412c91011a50e9656ebba543', '0x91196fb37862f7ba0a4393f61a8d5b6eff5e0a4f3e77222bc12665049a98e507ea0189963c9a1c12927dec5d7699200f2d98b1934d36e0df86c13a1f26f16fb2', '0x280e60d279724cd4ce625bbea08e01737d369cae5fc82036f30c7062800ad4d4300ee12cdf69c05371692eb2c6496eb7ef4bf664bcb518954c7d918a571793f', '0x43fa1f0b9f6fda78944c60b1ef7ffef1772c156e53f4c88ea34d39bc34236217f5ac2a8e342a0ed8904f60964690d1e40b733c3e881a3da6973738b9722b7dd8', '0x3794dfb5b5d020c1256a2b045f2764165b7f98a446b33be0c0ac2f1e4973410781ea3adb34d49afbdec896fd5f366b0d90fb695cea9c1fbb71197066cd9bd93c', '0x521a5387f675a7953a89321aebc649a8b30b6a509f6100e025b8c77f71573731e5d8b095a56b0549719c861117afbefbcb0ec421a1d4aead9ac5d9c1fcf32ea0', '0x97f81c76c03c70cd1925111b7e851bff3a66ed22849210c46d387f2fc56c5bf1443ad847eea8f0c45f443f8a15829bdc9606190bcc5b7cd5bf748a2474ad14a', '0x55bacb8e8ac0bd302a611b198e07c7d6129c9bede1af04e570187f32890b674f78d90434420c4172bf0ca3919e045e135b39e618b7d963b1c74d572122c569bc', '0x3ca1bc3aebade401596c25dbd8ddc6d0f4615c2a6edd77087beb78a904fe2d3d3c2bd43de1da797c1a6f0f5e068bb3317442f634f4ff5009400a072b920df41', '0xa33ff8522fd6be1a0fda28d3f89bcb38ed1636c9eef922b635b28bfbecb0a102863893d2eb9e798b1dbf01f854113947c722f7778ad42af7d5365ba4b711e140', '0x7ff9d1ccbabeeacb82dfce388e84d90dfe55ad400cbf097b5ab2ea8e55671a0a8a6c1bd5285723c8efa77630d1e0f74d34aa239dc175cb87aaaa1fab1dcd4761', '0x8779398167ba405d0fb6343cd15bd0b8d1310a58d695b1ce871c66f6b4bb497d5a78c9b95786c42740ddb0f49bc98656ef10cc9c1a9aa39018938f058463dcb6', '0x8c07fa10ceea2fa521d41d41c85b98619091f778f9c82b4b581c308cfbef67745891d851891c48ae0c3748900ba82c487befb1517d2a22cce8e666fb1f5d04aa', '0x6d53d59b4f9685c9e46ca0f951b824e49337ae93980a4d56ed4cb68fb3a80f7979387a0bbd3c36670eb01a35c69ca1625579ed12328b2cd1c560422567c302b1', '0x64a32f7bbd63119d48a61714dad8f1143cce2325a645f3f294d4ec23efd3c4d493681a09d9e2e385f8b386d25d8f78c3c2027b49495e5b1722b05f16fd6242da', '0x7d6e0478e1ae4c841b84f54d6d12ae11d936ef07783ca479216db0129c403bb1db3504ca0f132ba81be54a3fb74039be7841771099b4318911218c78e2d68dbd', '0x6650068d6acfdbb86f34115cd5315c613b6d8929a4f10a06bd7f46f099a914a08ba460323e48e7d6601788f158a9509135b225b8fc8b179b0ba181052632a193', '0x3f50dda67f46a1c622e5c096f1f12dd127ea9da7d6bb129027362a926b5fcfde41d655b865e79b58cf420d058199731da7911081f5765402fe8ec96794afe3c', '0x96572fbb20536d11c4bb5e35efa994b8165d9285aa1ccc8871941d32b490e76fa0f8f5187544445a8789e53819167549497cd08e7b7dc6356bb4aecdce0470bb', '0xaac2e72c84992747eb4ca67b8dadc79f9478993c3a09d01988175a559236e96700cdb80df01fad838709b75b7e268e7839735d3df97131d1905c75f02d4f6dce', '0x970ca725375f6a28430da22144e7bbc850e8653a51f4c159978ce5fee57f67566c3ae8f676f9a34c7687f10d253bb9b4724d6c06e9d601641db0f4e5fa35b4cd', '0xafe0c1e0247c9d7bba9628c7e469713d8816e209d65071fe77272c607fa82755e96cf24f707458fbf07868391a9c2569f1cf77052b1040cd20ae931fecb767bd', '0xca48267014bf9ed194d258f77f96794b4c01a0d4eb166444b10974aff673affbaa735b234dfff3cfb3c8926e0c7b38484d38c6a9ad627528a2a32ac871a3ebd', '0x9630f69069e2b698a64c0276cc1f5f251d30868154b1ad88ef2803ae684a6f5f55375b84adff8d1115eed1e5d071558514b390ff02bcf682e391827bb6e0d4f8', '0x86d364c8070dda86929bd4f9a4ba2a4e012affd8c67f12b749decca51b503c8ff430c65160ae283c974005913c09e3520095cb9b306122c23f2464bb45f3659d', '0x2f6226a89e66a7447fe10db7c5a7373caa6d67ffb56096431596ff5d305ecc8a0e59710d84347773f4aa3f92c860a4eee17e731ca18c08c234d1459cd4cd6129', '0x6567780d166e4be1d89b710ed25c6be4e5dce7ff325f59ef8c590d37e4cb16e86fc90a0fa04e41cabef89210e7f978062e1b928722d1ae48c951fcdf6568ba2b', '0x5c0efb90cf5d174eda28f50da375fb44cf2f8708c48edcb80ed06cc7e0b684452ea9c2397909ef2f71809050099cf1d95580e88876bfbee5263efee5d218869a', '0xb0c4304440f15bfd30b6f593640b9433326e9293a50345da978d4676500fdd94e72b2223eecbb3766aa88212a18fd2f6e6005d1c758b30f095c55d3592111fdd', '0x63fd75ac02b42a6057355416a41fd6f84f5458cd750fca1f7c31c161d7472c593e2469cd91b6a5307ad9547182998281729051afe41a18f767b50e5ac4e32802', '0x88412ada3ed8663985c108b9fe591f0483a1f47c5a1586269c5b7a412e5600441be557bcf5fa28dd06e16cd6438f93b2a95763f73f931503804d411d5120d7b4', '0x232705daa6ea4a3a1be5d4fe9bfa164263a5c6c68cacb294ded834f802fb6d3db7063a323ffd35114f142b360770fb586619a41e920366b6fec93ca865fc7440', '0x2887a58d4944760c4da080eb5d7d076663b73c38c4a7e7da3c2ec5cf056e1fa6e188f6c44553d4aac2c72b018420687c958cfed67e953aec7acf9753693d8674', '0xa9eb2d7976f95c699703ef01582ee7f917fb7e511c6b4cee7688d3b887702b71760a9c369a47313f2263565ee0afdd02e58adad7624291eb07b6bcb79cc60f72', '0x93768c03340fd185c7b94f8fe3d681f2dfc7bb881f27215d2ea6530e6d72510d5c34aa2b87a8d26294699dab1dd89122d1d73fd6f233a03e1e8a42aa18b3afae', '0x3dd1b87fdd779d083cf199b06b5358f154321627c031287eed5894f8371658ca18ffaabb03e79ec44c978208a5c1e9c9e159548ef94d5f2e3b7a32eaa9ff11b3', '0x99f4f776348de14af0ac415ace2ea36c6dd5d834cf16244b736cfa7980cb62ae3b7dd2aa86109fb1736f775eb08b13361e03d9fb16e8861fb5a3e39987007342', '0x2652f67c72e0e8a575bbf5be8203fed148aeb202bec50aaefd7be6142165511060d3429f5dd28daf28d0801c901dd102ed0d1563ffc560da45ab1d16879b4239', '0x2acfd72e23185620d1783dda4e29c9b8f2cdbf8c7acb93152115952f9f191caf9d56e57a2bc11a4138b120ef7dd5cc7cb01cec3afd50b8aa41c52d9981b19a1c', '0x9069a314c9581ea59b9ca07ac4e1398487201f8ab37c3cb87aa9e78a37384eb376b1b3335311c5357b01b69489a8986a7faed6743148556ddca39a3956b5e080', '0x80d72b982551f7e955450502bde38f6ecdf7334be3a11b89ebda5fc68bfde52ec1d0275bdae55e46f2286b8ab3da4a6fff48359931ee65d5697e4d3ad2ca668a', '0x945df7b8d4a44f12919696615f9c13eed5aa08401d2e7a8fafa26a4f87c97d4758867a8aeb92e2bf392559e132c1ebc4f73a89e70606da8eb39f6203615c1725', '0x55b2d14fd22133bc3bc084893185c5f5cb9f7e2f0cbe8e81a56b0ad8c6d34bb43b50a0417486b9a3ea306ab9a073b905c0c2ea6e57a55e5e9652355af18285ff', '0xac08075a961a9562636c79b13cf3006bf01e154b831e22cb3f69217744214dec5e9b2f6abe378741aba477ae076f0705510145330932e942f4a28015578bb141', '0x1c52ea1d896ed49a8b6d78e4ec8cd64bf1e03052c29671d1cae6d672c253f23ea4b278fff7831a7bacb6283281b6ad9a8d6c9b2fe1873681b02ff6b4d9f9eff0', '0x319fba557dd0fc3134dca3805833b37a0e4d497335e1c65e55655c2c0cb09853b43c314413232ddcfc5dbb9f46223b82264b6bed4362465bd40751b1c846fd70', '0x98718bd777c78f3549bac76eaf8e190e500b05ff76d3f7eca37347164238090e7f4e7386524d9ad4c6ad202346a0fdb8d9a49d5c492bca2e55abaee366f8cd0f', '0x9074abf740835a1785d2d206197f791f0b77a0dcd1247210adf86b2c3369042e60566a28c6105702dd34492873c1ac858b4eb596c31db546fa4e76a482d7cf9', '0x9835467c510ce9d47bb70545d1f68a943ca9c9123df25cc738852b0e9d584834586a4bdcb4a323ae51d4adc2a9602315aa1dc78a57985892e7799510b475a2b3', '0x51caeff29c4acf9265494daab9f738fb78d28be77d19d869f18380a4e512548440a17003df7956cf2d213fb8d1fb15d8534ef919f95e4b00c776187021ef7a33', '0x54fc2f50a144b084155996786c297b28cdaa1b7090ac999568329ef1d84fd8eb4a79af3a2a617bd44dc9934f7ced97d47d54b120af3c90187cd76d7f36b86b4a', '0x4a6badd0489425d38a05a4639b5a4347859479886e43178ca1d5da722a27311866ebd2ca7f70a29e45c68295a36663f19c2d50bb8d472481ae2f8546a82e004b', '0x7b2dc36b528af2c797038db0bdb1474b80bc32d5811e3cb89fa8c1cc53bce3daa1fbbbade8b0e1cb4a441d817f355be4bc9d12008296c7242468b53430cdd0ae', '0xac5e01dfba8d77aec62ebd5ecee558fafae18a726347e80797fc4db35ee55a621c3f1923811e2acabeca03fb79c4164a59e4bba8f541459fd136f40063123328', '0x407097f2cd06449d78985bb253cd09a540d8ca46741a226af7955ce8db3fed6a9592b115d5ae3a4a66a4f40722baffcb17e030a28f60d76e7f614e6e6ceac61d', '0x839a22b4fef60eb0000ae87568ccf7e4545347fa28c2c43b9a32968a9414a258311001ab68782eb647945b368cf4e61ea9187af067c2e6db9848c0ce3d6dc89', '0x6c609f4072771ac134e3833a59853dca8ea780adfc2cb78ed1336218033cd8f16e5ef7784e517bf499686ffdda564d277920ac66f53185777d059e12e91fc91f', '0x178acb8176b97e6549a8080e95a7fb22fab28f738b420be480003b04e13d83e4de48d1dbdbc79561644dd47544250a45ebd462721cfccdb3baf5b507ff1eec06', '0x97cde9a228678ab49d706ea930566b937cb5e2a886fd59ad9353ed9bbf4d33649055b099c7fcd5e03d2941a217c2d71812742aa828a0f715642d207065f29072', '0x226fde65e5c2c2cecbe9bbbcd735e344d44e46040f3e9da01cef04c86f9a5e023f541d970de57b09bd54a3e1fe375c9875298487a1633e098fa7c55b715b6103', '0xab8c27f6d519687b7c1a7d345e91f3fd0ff3fa8b7fe8a12f1fb59587efc3d12536549095991283e3850c7c2a6cba84c74962bdd0a54f2e17e97eeaf6b9aa30e2', '0x8776e31b198bfd5024e1e1453bc94ef8835681a504e5242064c5e0274f5ee951490841f02ac9ba248da22ed4fbe1ab4317b05439df796fec63e494e4d40ec254', '0xcb857b23a939b0165083e93f6f0d55f30a90ea3c68cdda55d9f4cfca95bba2269105e64b865ca4e12277a35a6d3320be830318c06e01be477dbea56f707e5b7', '0x6ace1513e18e39421a9c34f49a08c4d21f31e64f7b87fc454ea1568fc77f80a316cfabbc5ecf83f5c3ac0bfdd925f6bdf7426fd9a96bf1f5a7d764e5f10c9ea', '0x93b26ac97f2b385cc1acab0e5c4d803fbff13e0c4e64f4ac99d79b670863b46c105eb7bb6612503fef6136cfcfbbeca704b089972c7ecf88898e0226ccb00d4', '0x3c17df46a0a5bc31b4b24b17092b79e34193cf9766a4b226a7df5b3fd6e587adfacec02a6a740f1dd0d423234e3a5114aa722f940d5409ab23281830953b11c6', '0x870e12f216d1add12a62965b468859d5644b367e7964231d98e12a5c1eafd40f65c74dda37e9ca20b95bbfb8b6b5059b6890856044a11d9975e88ae52da7fc3c', '0x921edfd48db06f8522f4d460ee632b4d0e56f39a09f4f784a95aa2469b3c40e6b4c2566ae86913a7f69e8caf44bab74f85f2a9a40db4b37fba5d55693900b741', '0x45088ff20aad2bd1c10e71a7864f92bc03fbdb5c0840ce49a4adbf145566009f39aa4d60bdfc6fa75964b4a72ac55018691cb9078248566b9a4e183c66d9bee3', '0x9b1dc3cd3b91425bf6793a45bf2122872df3693e67fcf0809bc472cf687697d19f8bed79e0d42a1ab72e45ae6a76a22d3322da9ee6976342bb951fbff7f55da9', '0x2d14de4ab4931af5cfc282423485e6b59e3c68ab9e0df2aed5146bf81d40da3a6b9a87bdf1f850070cef6e5bd1c00e12403e4f9b67d7182443828f9b5ac45cf', '0x57ba53c539c11c646a193c2ce5a5230f1cdf947528797f8e0b7cfe81dda46175061c255aa82249d3df7b548dfdd86f294c766617ed4c158e676796e067921b29', '0x65dd1b9a5d9123a2c2c1f6689e62d264798d7e4bccd2a984ca2bb1a78de6444640da44a7aa933ae11e6646a0efabaf48d58a90192bceb68bcc4b09c0f2a0b299', '0x49ceef130a56482460d0f1a6fedb5fecbac7120a09aec4701360307035d487ca99fab4415f6e867655e9c1cfeb12ee6eb0fa7ff6dbac22809a7d4954a7ba7b56', '0x5faccf3952b1ca7ba0281c0476cdfd31cb9431dfb66ee465a8930c0d811b7fb12425250874d7edc7124d91b64abced88f9d9911b8aa964ac295e80013625907b', '0x91c969ba0878e9382acfc3002a81516f91fc650914d528d07ae5effa1925c88a54d9f4d05a55bd36fc5cc2476cc77c4cd0db9614db5f7e5aa20c0e865e92f9ac', '0x30aec75a0038dbbaf5e51a6b09d33af676a21923edbf512416eefbe731f8fdd91293cca3f2160e243bdd15dc4b2d0494b11de46b29432a74611a53626015ed70', '0x24efb4ca9f117b6a7b99477d03c656021459c5534badb2f797fe0eb09b88616f3d2121e5dea47b08d45fd5d1bfdf66879448095410c33aa352fb63bc2ab96770', '0xa0f11c9642acc82821905d5ced75fbcc587020b546a3068a2b790a4f19d4297ab607c2f9bbe2e69c64af47d6551d0d6d23096c966c3832d166fab3009ccd1a67', '0x30a9bcc47fcff92e70f9deb321bae6b934397ef6ec24914c9ec9842b5ac687697e53c731b2fa9db12c245c9a97e5576e9cd4873fea9b4eeba9a0f9ec35618287', '0x4205f7c740fd82f78804faf83142f1f181e40ddaa24998d4cd66db528eaf1b79d94ee07bf30fcd739d7e0474dce9fc2a7a00b60c609d8ab19d61984cbb63d498', '0x27bdb98a8334f89215e1c14535a7047770b5d4d8ff1baaea63ddd30c5eb62ddd4582d3ea81dc452321c0436c695c2f792442d44b6e20b70764446771c38a9c3e', '0x94eed3570e3e1fe695cbceda6c2fe7236f06bc537621f8abe24b0bf7c17e0d3ba7e93c2adf8c5cf1ba1c042d8f4dc7d3b2ab53384f78db13e30b6539f4403bea', '0xb62b20b4a8f60cb4d2c425866c9a8d65c46b50ad6cdc75b0dc08c64485b711d2984afa9028ba541443c07818df568e770a8dc621f512b6b521bd2d9af46d1da', '0xa3a0d361c99d1416d832dacd9140171c7e249846e17c1034f98602586e9e38eeda31241c716b8850e5632f3281d12c41c4221745154c0af162ca643f7422960d', '0xb08e2f59f05f1644ad5f2caae0ca8120685ae2565e6b490d3cd1fdbf383b5358bb3c7683c3dd4911de92e9cbbbc18490510ced330f3023e8bcce347c64e81873', '0x8664c31ee4f612386632de04ec1c4d2357c307c1487c299f170f8cff2f697ab3e73d003751ab6a2815c4243307b9da0d1c207be8bb77633dfe69863e0c322a4', '0x8b433f6172bcec4cf1f04c5c1c05764dbf268b93e84bf4bca556e8e6f04f49e1bde041d479006dd5a28134b5cc69cef48a756566ff64048aaa4e525c5a2ffca7', '0x5d1c6890f3cab5dc104b6c114ed1273bde05df23a57b7a5db7301e5c01fdecba3140d59862f301fff6dee24a096a20bdacc09aeb2343ecf45971ce407cf39b4b', '0x83abea4aba6739cb66d54b4b2afaac0046f04ea8f1693ea8be9731612f3c3cf648c45156bc976962484d44c8f480efc93a5916e0f1d2b4196a09aeb547219df8', '0x32217dd8a4def7b1c5fceec30c17e63e5c6c7e3f06f6c8c48e053b0fe940f06daac19655ce132f7a4f4ab226ec12eb020f1f830ca297595cfa7cc444912d15e1', '0xecde100865424fae115410f405f0450372d9f096cbdeb7a6d4705547f267d81c0639ca209e237df5470d889da3fc5a0c3a6dc4da5523ed69cee544401c9d09d', '0x167c0cbd1ac1be74b0962624fcccf8cbf02dceb547510425250f767920b20164b4f959fa513765480a4bad0b4e85bf051394ac8d847cd94f654209e21c731f6', '0x3157b22e59f1a0c1c5dcac4418076e4a10d5950d856f90bf7db267f6555105ff4cbdc89b07059f2fb550729d57df67e392a0b37ef9289d8830d3b06d3c885f68', '0x1e1356d1b7c6a3a2ec49afd54308f2df1e4fedbdd43eeff1b42a409fd8624e7514caaf79ecd899d39f6eb6203c4ba9d4aefffa5d188c9f422ca30f407665aab4', '0x448f6655e4a7857c0af25335a92fc7115cce6b14ba46439e604fd61e470c30e767ed21ed79c7b96a72484dcd7981e7ba13c80b25317da15fee8db0be25ccc18f', '0xa619812459ba2617e5fb153d7cd655422c4ce19c8452e1f756fabc81f9ce0b48a2ffa57afd1da0d7cb0d75004c836b2397bbbc2dd4fbd4f39c794f38bbf3dcf', '0x3b469cb54a2ef0e5748f0deef2ae2d4ba2dce58854555668c5d6e81a067efc207c7f6d2063fb2a5c843490a5a27d595df76d4f7aba5d7975b44dd248504d2316', '0xae75f6f06772f04fa0ecb787faca9865961d8816e6629fa1fb15be10b241cb2c2427472270c99b7171bbc182636165cc3b3b0a1192ae4f2223a7205a7029d909', '0xad8b368c39ef55a6e4842ba3001e9e7e049f74161e7333859feab241c2b70a27a2c8db4925ba4025b834e51da06039e425a3f7913c2c08aa02ce97243ea33feb', '0xac60a70c68a4e8ac4e7065bd91e7e032082c4422d014816eeaac4d5f3bd838751e09f97fc11df8ac421d6e7b7202a3e22037998f82972ec1dbfd966e824f0cfa', '0x948895f09daba4a63a9bda3e865a4cd58002ef422b8948769bd43d672f1f46ba605bf2abdcc66581f0081d5afb20518415497905f3abbc2ca5655d8deb14758b', '0x73cfdca97c5fbc29959f4fe9f2aa4b31ebb85cde5e857a3b6c08a65e6bfe36124e1cbbb9fc79db3ac224f13225d7956c07330d9a66b22dde7cb74c0e944a0fab', '0x9b8bcc6296010c081783dd7a05febbe763bb2e0bedad24ce2d96abca7f70ba3d99b32bd83a5ef85b02404cbf9873aa56f47a8efb858dabfe59716056a2de59c3', '0x7dd04842d416a38d432f3776263fc5be417f5aee57b15679ffb9a3c83da9ac5470aae79fbf63fd342e138510c99d1925165e4bb5cc0b092dffac86b0a3bd0d96', '0x177824f73dcd848f8829f2525b13a47c2d74bb52364f86c069eada724eb2f997e85eca89ebefdf5cad8bab85e611d2df9ac60f31ececacb0306aa7f9780d1baa', '0x70542a156c45998292d6cc8f0498db35e1be7ec279e6990e4283c0bb1316cb2b52f45d149583fcaba7a0129adafb9b5479a583d658f7000c271281bb72c2fdb0', '0x8517632bf8ab9af61729ba92277e8071ffd81e964cc1239ec4ae661376392b631001925021a798416bde7e6140cab6ceac8b7d3f7155116230fd46851187fb5a']
> 3
HVvDXneFY8wlhYnrgvf/wrXhprTIQRgsfw5At7qm1Of2FzANjfwLhw==

サーバの処理概要は以下の通り。

m: 素数、4で割って3余る
l: 0~1016の8の倍数が入った配列(シャッフル)
l2: pow(key: 8バイト(不明) + long_to_bytes(l[i]), 65536, m)、128個の配列

■1. Encrypt String
・指定した文字列を暗号化して表示

■2. Get Key
・m、l2を表示

■3. Get encrypted flag
・フラグを暗号化して表示

□暗号化
・文字列長が8の倍数になるようにそのときの文字列長%256の文字をパディング
・128回以下を繰り返し
 ・DES.new(key[l[i]:l[i]+8], DES.MODE_ECB)
 ・暗号化

mは素数のため、l2からkeyとシャッフルしたlの値を割り出せる。あとは逆順で鍵を回しながら、DES暗号データを復号する。

import socket
from Crypto.Cipher import DES
from Crypto.Util.number import *
from sympy import sqrt
import base64

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

def unpad(s):
    l = len(s)
    for i in range(8):
        if ord(s[-1]) == len(s) - 1:
            s = s[:-1]
        else:
            return s

def decrypt(ciphertext):
    plaintext = ciphertext
    for i in range(127, -1, -1):
        cipher = DES.new(key[l[i]:l[i]+8], DES.MODE_ECB)
        plaintext = cipher.decrypt(plaintext)
    return unpad(plaintext)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('crypto.byteband.it', 7001))

data = recvuntil(s, '> ')
print data + '2'
s.sendall('2\n')

data = recvuntil(s, '\n').rstrip()
print data
m = int(data, 16)
data = recvuntil(s, '\n').rstrip()
print data
l2 = eval(data)

e = 65536
phi = m - 1
d = inverse(e, phi)

key = ''
l = []
for i in range(128):
    ct = int(l2[i], 16)
    pt = long_to_bytes(sqrt(pow(ct, d, m)))
    key += pt[:8]
    l.append(bytes_to_long(pt[8:]))

data = recvuntil(s, '> ')
print data + '3'
s.sendall('3\n')
data = recvuntil(s, '\n').rstrip()
print data
enc_flag = base64.b64decode(data)

flag = decrypt(enc_flag)
print flag

実行結果は以下の通り。

Welcome!

1. Encrypt String
2. Get Key
3. Get encrypted flag
4. Exit

> 2
0xdaf69fa8264ee5d22fcdfcc185b33150235d2a25e16ad31fa7767db43f8937cf9a3538cb59e83e5e094987d2806e143e6e71e72d2f3d17ab842df806b51f067f
['0x95bb63bde3407439644eb4d8f07ed639e9d40e9b1faf8b9c674527516700411d8090f3d009b85bf95aa0166475b9650deaac26656071ac96bb4cee2060be2c0a', '0xe57d271e6ec906b9c3821edca070a4acd75da3aa5f03f663fce4d310e6f790e59d31b979028b07d205c071ea468bdb307f09a2bbb5e72bf2f6161882cfe9e12', '0xb1a9b8f4777f6e3f1720f27dce733366b6b696d831cadc42fe6740b8ce449ad457b5d7544a2d7ae45feec6630efd0f00469170e3b83b3eeeaa5f61c6a556ade9', '0x448f9a1d9b4e0528eb79a83922539b3782b84f0baf980a78bd7f2fbbbb72a59cbdc94ff684d0d24c48095e3ce7c998a737e855403fd415995d43168ea05fabb7', '0xbfa8bb6d8a346d97d20c3ddd4e25928dfcb39038925107ebbdce263968469dffc420ad2438b24fd85d832dc3b2ce0485cfe0d5e6130e7b2572e53def0bafc123', '0xcd28c22c4b53a1f3242f05605d2f68d4af17fd701b6becd290f910789cea0aace5d87d353cce38bfabfb7be16974e85882fc8fbb48e1e9f88950c1716258847e', '0xb469b18ead6916e89813da9bea3f24df7bff2011ea4fc8c474d5cd703da14612b01f36f0af9750ff58a96da961105acba3b02ae824618ceb1ca0a73ab5ec191b', '0x54749a7e4fc4e491175e783761332aadb9a847f628b2baff9f21070a2bcb7e9897ce86674b3bf3b098dafdd9a8445216afb2ad6a219aa37e192c13b114095f95', '0x891780c9a9f29c42b5a5fa55d5a1c578349f409022bb4debae98f6632ee5d197c39267ed1b4906b0d7986701a404c7348d0b61c57175a50ae6761659b2629a8f', '0x1210d8421d3c3a8f2ee62857e304e171f17d39fee2a71ba457338ae97db905084777edf8d5a8c6b7f9b9bac2f59812437247e15be9a8680d5947f098f2e5200c', '0x6fba783344e4b3bbd0862aa3b67ff8873b12b458c96a549aedfe7562ad583b2c7f29540b67b2fe2c3a9da7d02a1b19e0a06afe2acc63677cd8fe93c07a61af54', '0x73f791c6b14805bbd96697782bc60319c7e29edd52aec050ca93fefc5532ff9b86c8990cf53d89dfb78741ee55cd4e2ca173afae1e9d19f8ac0b165c6a8d3a2c', '0xd33199a9b848763d9b83a659cba5c29a8bac45153d7ece262fc182dbc776f46689cbb7be7481c4a413b70dd123469936e4d7b008ad65cdc766f53c847cf02309', '0x962b69bde2900f4d79485c01985cc33cdc5d735f28d913bdde9c3fd4af667a418e171f42c591629b6b156dc9097560c1459d5f4dbb6151889b1b8b07b1dc6efc', '0xd3a4fb6e2e1afe48023d1ba5ba3aaea0fd479039a219a2e8e8665a7a14e17974c21e48c74a29797fa9c4458b0ff1de0d41f31b19bcba11ac41ad7f45652e0748', '0x46b4241bedaf2eae273e3b85b5203d0258813047f69ea8b842cfe47b29d9958ac27e56706938bcba9c06eed6cb77e9bd6d5f05c27b42e1976bb3b2a28bfd228a', '0xd611fc5fd948c73b207da0529b4ef4f10aabc61caee7335649655b1a4e65e655e29840cc12e4fee25570f007044008091d2a1746b854f5d781954ccc18714ab8', '0xcd58db47ced4e31001061235d19a9736ee5959ea1ed2d8e02569e4f450c144fba9d5672f3daf1b54f9661a3211f33e7c286bb8d44bb0989db5ae779e70387514', '0x591ddb676ce02ca9540c6a4d1b38c5ee894586d74cc66cbac3381f25aafcd3bed0640b19f15a3615d3b251ddd84e152de6ef9be32069d92dbc3996e4aa0701b', '0xcb7d839f36eeab826d4e3eb5c9a9f57178bd137c8e73c0f441a52aa16d528c09fc8775e6336fd35b8ea58e40cd5d3592aaebdf9045bcd380de2ce0a0f006180c', '0xb3bfade03b726bb2caa61f01e40ec5c99e4ee62a79564042224e933ca8838d120c7498c9c81f5bf34e89b618118a72ba469cb798af92725adb6a05c0c7df99d0', '0x1f29ef4e8b7e80fabec3be56d7f9465ea1e2be4cfc40430a4653233d08ef278ed099b864f05cb0618a539308d3aa3a28b2b0bb65f9f43d92dcff0d3e784a4777', '0x8bb10b88ab8ebf4c4d5b7f240eb84cb0c8776d24cec30587a1e9152bfed5bbe0be623c64b17499c765fd5c47a484f365183bbb07a0a2fa11099c3e4a16f6a3cc', '0xa072c875ddd786a33c43dc94d9db84c3f221cda6590d062773f63907e6c496ab856e14c3c6705cfba0ef72047c6cce3325fe6679025cbb6d4232cba4903d1a79', '0x21c596d5325857cc70d649a98252b3cb93d035568c4f6d6c7b65b843c8c6efaa1b3412941615eed764bbba0a51ab6a55c39f194b9c70655a67903f188e52b089', '0x25a55ea22f7b523b743d07b7deb9c654f08253470ccb7a164659d0dab256fe77339917a3b5ac068bce6ef844fd88ab7915d2b3259825dc902227b5df14f8b5f7', '0xb3c114e32a502b7fcbfa9ba31f3904358870cf6f88b344a12bba11a08790b42c8976dc7a519846370b4c680ec27fa460841f468b48f0f67a606e2eb6910b5593', '0x57ecbe4755e14b5ab78d820b1140b850f712a17e7a324efcef51f0bd683898c88a949ee483231f48cce1d6dc79951914a0c437f596b6e5923a20b72285551bd0', '0x12b1bf07e219762016c34553a814e27cdf6b7f0c2c836ce1c7497d9dcb7308ee118f092066894f80b137d67036d8778c15a97767fb4761f791d8c601ccd9a22e', '0xb6f5e8cc95d601777815fdab8f7513491fd5a5b9d5ed34aa64f413dec5d446c2f65872c7b8dec4a8e8e48bcfe26ef6e07334ffdb91701b6061ba65bab2b7c584', '0x96ea3f3a34d01476c1d5e5199a22758e6dc4a353e23f1d9d9e69fed80a35e30846f2b4d074b748cf034b8693dfea0956f02acfa68c6bc13ea59e21bca5d54f5e', '0x4579996f86482fdf266a7799813510bf39df6cfc9e079dc4d255bfff25ed4ce5b040abfba6b24fe25b24f8e42f50f0fe6d471bb34a53308e2738e8069fa5f85f', '0x58100762871f8ceae2c5d99d2636c3407a2781741051f6af80268751746fc6506c67a2f3c62993f80d360c1cb12e6b7ba66f60207e325a3400a5f9501e49d18b', '0x6e1376f816c41461b2ef108139d424ea2e94887fff7bc4de2c50bf1ba3771ac2f54826f0fe110197c0b7f177b5c9d284a1cbe2ae6c89ee75a3f2f06e19f670b1', '0x7e518635046c7511cfea3f4e34be9703ecc2af7b6591b744d000d7d728d00490e501949548869ae8d081211ef171e35cd4acb29aeb38bb2252c01a444bcc6586', '0x727e16dbc30192a48106cf150a87d55c09ab285efb5e27084bd10d4ad02d973fd95acf07e3b792715591bf04f306b13a2cf2230312fb11b454284160696d4083', '0x2003fb20bde8f7df43a47442ac77ec7e305e19700eb67111b7cfc21bd4e09b73d0223459c5b9e8bbdfdf5be285e829b61164a4c1a57a472a0aec6f0e8b8c3c24', '0x698d8668afe8c23633e77d297662b41a4b2c80785aeb7e23cf7cb8e2d8d61ee6022ee588665d7649820da87fffa5933bfbf3b5e98ff15e0ea506e991be21db02', '0x81b4d8c5ae223c16381be6635a320730499f9d905a09f0417bc7dbccc891334015a9992f898395870b6a0db79360bc5a1f8f5cc1b762c05485ce709680e52f1b', '0x945ef7559684ab1aaea5b9eb21079eaee4ae17f8ce156cf7e529ddfb8f639a663904174aeee93059faefaeab160d83c4caa913ec2f0bac7b9b1589f12b442000', '0x164537994d82840d6390e36a09b6627c680ae0cb638af90db939af47ab992e28e751ff7647c2753b8c420b4882b52aafaac82fad422e685d22eedc5f4b6cafdb', '0x1d65c39dd09b46849c5d6075ed28ebfe8ea8d2bcd01691de4358d6bf9d8387417d6977899084ab1ec8222969f1765feeff687d5967a8120a9bc1850acf7d75ca', '0x1ee818f0a5ecf19f2abaca755d0880a28b32ff7c8109451d9795f1546fb23f411d91372245c09e9535a80bd8b0aa4709fac6eeb7620e65a360324ee586e284b8', '0xb1ce7e054747fa3d1cb8db3c9116a321cca379493185fa5319bad969ceb56c77a1f5fff21faa6dd3a19f016af711e00f902d1cf9b4ac6a49d6e6e04be00be66', '0xd9ff32fa13a74b72e3491ab473af8b20c6771f41d9c0847a378eb2d849f41e21a53f7aeb677ef355e64c383dda2b71de1feaf73c5e6d98a5251444a0ca715179', '0xafc656c7478304650a5036f0785ff71e49f45608fbaca6761a1366912ae20fdc8e757ac5efad7893b1ae1c9dd76b2bb5378cdb64c95746727acc4375614e78e3', '0xd6254a71f494b798d6995c6c2ae23b0aae1d733c73b3c72f6080d6699f6b636057a736f4a9a9f99af1db034608dc3536106edac3e8aa70cdd88ddff48e5bf583', '0xb819a1839799e4e0fa95fcc113edf475ced5f4f3703a602afe548b5b7435fc5d9f4dab54e02ff6bc51a976ec3b8f44242defd1feecf8d78ebd32416f20f785b4', '0x5cbab1adc5e9f074905537856744153c7768c3c38522be6196d776104f1184b02709b45b623a3f6517953e654db6dfae5648f2cfed9389334d303b45108173f2', '0xac8fa362f0632d52962938ab31002395e0823c26cdeddb14cb5a89baba4b3e9f3742e534ea1addeaa946ee9daf1be6f330516f131ddedfe81fb951c2c12d3602', '0xb0ada8f51d8f377185de259003a7a516e2e991625fc58f98dfa36bf158e59e158eddbb5cb23799117581124727c419894da78a12e069c723f64d24773e69a709', '0x25cc2dad99cbe677e72935ef262d4855adf0d378287fb5f0e2cd8ae5a6e9bab30ef9e040d8362cf3c9c957908b21e447c379f46719abd4f1bd89d08ccc8ea954', '0x1a2b69b0113e95e157358b0ecec6e8c0069edefdf2bb779c8d7ee5118cb130464db18686986062d80f350a8b878727afd25358e78c00f73668e46e855eeb4343', '0x4e6e7bd1f14d7ae25adfdcc617c95e6d374fd7892604503d83483f5044fd87da8238620580312de54ad3cdd6f3b7b3ad46675eefec26371ac5ec40bd5e3c3547', '0xc0251f2234a84741a94e79a698bd72087da605e84f628dbcd2c580063940b0865d0ad600807882cd1ede82923008f98db646f85b44e2876570506cdd205c2bed', '0x4b32247fedc5b3180c69e998e25402769d6a44a74ff4aad90bd08a8a6cfead1e20b72c15b7ef98f53b968e2d7ec1761b41aa73d0bcc841dbedba7e82d22d8f6', '0xa700da20f874a8fff59b50653af2025d3c4d31f7a9368df7abaae54c31190840c1099c27b9f26b65e3d77601bb7ce504f4d3bd3b275a06e428cac922f72e9ebb', '0xb6f0c137031851694174b8c07e0ec6916441017e4c20957148ceca64a61db985e5740dae94fa24d115e34bdbd3d497fb6e3a5ef1c18ebd61e848205848ed27d8', '0x5995ed438cb0ca0d04ed6e56093f9ad3638ddef8bef66aa0ea18244c27ec72d0c747f8ee0014ea0862f7c89b4af206aca61145e0b867e4a1ffac5915df229aae', '0xa53f58a2d103bc1189f078512d9b532ad916af25d7895dd3eea97c6def0d82bb523528d20c47b71230b9dca69d91b63ee5be11e94720aff5a00aba4ca70b882c', '0x5992ef68b86e9e6857023c3fced5a5aa1a8599b6f15ef81e636d71fc9627fbb451fb9232ca2f9af22ced34d5afe939286b5462a1a8c02e26366e9980b3756359', '0xd7b059012060c71a327cc68ab1e511201c52e9a341a69b760134104df312a9b26377f4909a9d8eef09b940797dd96890fbb1d0d627f79758e2f234e759a89a19', '0x741af2fa54877654f16849375219f54d675919d05b7a8f586fe6cfb17981d933045e0b9e730ec791fb84fee057df3c2cdf286722313b6bce35dee08e744a4c93', '0x1a4aaa3487691f3b5460b8f32e38c9f0f90e6ff29fe6161c8010209f04b025d8482864756b9354dea7b60361eab051c3d4cc97c8ccbbf7c1b2503362d1e0cc6f', '0x6498d293e45a69c550034d7e768a110b7d932ff4492e45fc7515b9a1806b6c7bca86f07e1a7de216c4b9954408e17a6c450641b061a033f7869d3d4dea0da9ab', '0xc0164b1528923498a34dd8263e3c07468940d85beec859e54f39f740b045cd60804a2e13589f5ffea82528b6a6c9ce12a984ac7c067f01322ae1c90868ab739c', '0x48e25f832b17df154881531f4d6c3bf6a3751a3a68b8ffb6585a1fe3e0175511a54c317b19c164987e7a4c47b0494b515b431d5caecb64e4abae76191c16c901', '0x41cb266032a9241501cb2623d2a8687390bb59bc03178782129686358bd4ffcc8df6b733a14f14533c8d4517b20d97ad8bea96c7bebb8a67cc682df6ecc3c556', '0xc5111dac4ca973b65a8e2b61e95ae257c6f1e0bbbef2161fcbcb92e88769c4623f9010bfabec5d76adebb3d831d74a3c42551e1a1fcccd2d9646534234516317', '0x8e38c4f5d70580b5e1fb7e8ade6092f98d6c304a2240c186c807f4a90708df65d2726923f89238b16e5b2d9b35c18f4cd20a3f4b4f2d4246fdb96f4032a9ade7', '0xa0df1b19cd947755499f9dbe30580dbb4fb3993f303b238f87bf8d3e231d83f9f8d0532f2a494fe304a40e8e9f040c22eb668dd38255682771b7fc95dc99e68c', '0x6adaaf963bdf56101ad2b536c5441b8a1df42bdbcf8ce0c2913f0eb823c997f7a0164316ee841c1df94fbeee55fa09abc68f28e90be38ee18cf5e09f845c9b3f', '0xaa89148d17b322761dabcd59e9f25a8d3a4050eb8b7c4b46fcfadeaaf0253c432b6d7cfcc8e634287b3057a24c95098e53d3f1d661bcb79b671a4f2b900d60ab', '0x8b796f0ed498c45fd15f360b0922127153fad88736837b6f72cbcaf39237b1c4e8a7b2d9cdf15cfc8d8af19e43c36c2525599ed6d6142826157ea938bcdd264f', '0x33acca47e612d66158818e2a7d56e3ca4d315b4a6198202f889102bbae6e43975568a3f98b2a4caaad6cc6e8a338b15db999fc09fd8e938414fa0c3c6e47759b', '0x494f13966bfacccecb5d8be16fc0ceaae64d0b80564424c0ddf23278d6949b72ed408d456992d8cc5e08fbb17555aeb85f7a703146ef483021696d259707075d', '0xa77c9669388830fb67455c46858dd3ab92ccfd6f4e98ab9b018de6b12b1c843c567d1a22f1a7b4ee85eeaabbea1c62cd338706af3d02595ebb80e266975a571c', '0x2f98f9aab5aefbf75dd28338fa2247d7e6b65b58a7569106da3eedf5ae84f0f35251dbd9c0f5bc10f6ad2161a6b37438ffd44c42b41a63ff736d64a4e68d5f3f', '0x9ee87825ab6bcb96d6f45404908227e1e30b00fca128411e0030b365d007d5b9ba468f53e47f709ff78ccfd5597b873959da0d6f1c08dc8fc43c950e09b03af0', '0x968f4fb247e2627777b6024ca3aae139afca4a42328ce01206ab09c4ea8ee76ff3144090eb8d6d07eca981a8352c48f574f88e0f0124d16020e57ee6b1222924', '0xd0c615021d71d68d3370b536d89984660b58266f9d46c7f1fb48519aba5fda14106cde72262f28c18149090ae2d1f8ea27c09f37d1be06352d51666b2ff1889b', '0x6397c5bdc18b119ff901bc678c8b4800cb3095388785ffd15f8997d41d24eed4d3e5fbf3e8a982a09a911743a14b11a288b3ea577cf47e4f1873187a71b7c7aa', '0x4be808a1b3527301f10c8aec7192707842a46f61ef44fff1df39e22c3cefccd0c69fc2c6f601171ea2fed416e4b6d7ec3de7a72a26cd64cbe3323c1945ffc2e3', '0x40041d833c8c1f1b6c17df11cb8e4670d19f389968d8f3ced90b39a6ea7c5ebbda645e276670b6b3317e96439b29f029caf7607ac55f6b5da8a29b633e01aad4', '0x65b77a523b2a13b6bee1f5cd149614fe5884ecd14e7af4776a60a8daa2ce6772edfc3e7e755279821f9cdc196e8f7be57fd527461edc36e26102b9e940a96fe7', '0x18537672876aefb4a7d17eb4f41ceafba1826cf19ae32476aefcffe15e8139902cf59437c3c168171b62d8b2d20809ce9313031511a1dd1c83e2495e5292eba2', '0xd092db5f24bec326151f4bab507abdce329cd215d255a2ed39039b6dbae17c09ea19adf82c343d7efd85b883fcf720600ddab7f472ea8c83fe175a6a67a92d8', '0x82f8a2594397f823c48d16c07701e57a3b64c8a3c6f0e541673134e8e6332d4193d09ad672297e4b3ec8576777e106618216b839c77b119c09447f4d30060b0f', '0xb12e082a90122f8c9b8cb69ae859aca6ef688c36b5c375cd9990e00a6c600e3c98dd2a56fb03d6f6777bb08bc2176a64720a2fc4b49ac9242644be3147cde9ac', '0xb6fe779c156d4b303389d88e08023edd81b3046372c12b7b24ce3558d6703ea08bfbf6f2f674f72ea71678d1e833d4e155f0f95ce19ec9f9c7ca771b8814e2f2', '0x878890d8526de4bbf8b8c9f465fe77af55a423c46de174e66957add648bf36a8feef14f27e1b788fdaddbcf542ee12373b0e4661ac4afc210b46df8ec2a9a625', '0x6490646ca627d49bdc4b55a1f97d88050163e8b0251ab272952830224d68e0b71eef8edca75efa9704f773091b1be12d24d2b052c1eeac0e8d97e21b0f40f213', '0x9718d93dfc6faeaf0ce11c20882c978dcfb4134a30b4d500a3006aebef20a8a43544b219afc996b79a474453caa8be9d1f0a7651ccb61035757cca49046f7f59', '0x262bec2c9199368a5c220f71e9ca9cc4835ebb8632a6f6538e220d4015135e41f02d0ac0579b83b5811a2606497a57d52ded99d4ae30c3fe142cc1fb628f35f9', '0xaea7d047723dd8d40d4869a9742441bbfe1803b3518346f626de60385fc69d6ce1087307cba7387b5157312fa99b989ccd2a9a43b7e6ff20045bb2f51c825ea2', '0x2b191393740d60ed322ee74003d6e979245ca0d66daa7196b089e05f5208e2b34bc5b827ba9e9f574eb2346f03e359c9d6157b44f6078df05d097e83836c733e', '0x33b3d2835812baadb41903b9e7232deb8a3cbe8fd55545433ef6bfd5364e5df865f1c66c849f624ab88d3839955a1aaadf78f5d4e2806e6eb9fc962162801a1f', '0x16e6f6e6f4848636befc56eae11b69791d79ad2775ccf389fb906c419f371d4d9c523431a62fcc36e01d224b83d239932fbd3cbf4907f2f3e9586a9fd4da454a', '0xeb0db222bbc2aba5b6c83ca631c0e911b708d62e8b2c23c5d1eeb9535c0dd198228ebb30d3433114fb29c96de775fc7e4b2ce0fb718cf8e739591ffad621e9e', '0x70beeb04076c38fcdd9fc1879ab3d9e46b02aa063b6879be77f605efd3338d15da81af28654a669e6119355d26a93e646eae83e9587ef192602c587aa749940c', '0x468fd0dc93bfe3887c1314b5569afdc9e6f27a1e240bb9140d696017fd2fa36a9f9748a5961935579cd18b517e1ba3bebf16bc18b2271d6545aca5aa749129d9', '0x72a91cbe0191c150ab8f0fc5a1ca1dea8bf5b2b9cc9cadef72cb7544f9576c9042fa360a01f179e27bf9bbd5ba64703bf94a61edf504c4b1041aab5911aa2b5a', '0x42659d8718c1d6094201d1837b109476d62a3065a43749ad91a9dfc53502ef32741e062d61f303fd4a8ff2d61cac9ab31f0287e7cd1b8865e0d1f4311460a958', '0x599b60c389fc5576ae861807949425e259d2b7f6e13f903f9229c05467983e48676a63893a0090ea1b25e18620c99fb25c563d4cc74cb248edc02c4dad2e5be3', '0x5ce91cc0054b57d885fe589de84a9322365ea446a3892c8e087a91c2abcf9f8890e0e8a30b6066f0eb0fff3b5e01e3a591b064608179f3297d20c33c8c661756', '0xb7c2f3e8817f526eaff6c64dca766706e0eca6897346fae85ceb1fdb788d2b9ba29d3f53ebf69bd9ae10142734242e6c1f8780b0c383861ae9beace97dba11a3', '0x508564984e5d61924c8b4924ae72ee073b344676ac690e455ee6f3caefdcd01f2c7c659339db109751747f580792f62c26fbf2c17487e71ced8231ef6196e0ef', '0xa727f15fe91b0ecfe2254cc21b6a320fe989be6061a8349e62382b453cc58c11d56c67c2c756a5b7daf395e9c5ec90cf1b5c27b2077aa089e766906d39c738e6', '0x307f5ee252fd6c1dd5df5e8fc804ec262458949905fc6adf20c504338f227a3302c9499be77c33cdb62675a79dabe0487aa8ee639cabc18dcefad6b5253e62fc', '0x4ba985778b08d3717f1bc6e59c9a4209fef4838603cea92f3561e2f45785ca468f2d6978e762eeb5f535db3e0988b3819e41a64b7d093d63edb0528727bb32e0', '0xb69aa85decafbe2f33fc356e9a0178617bc2dddfbd36b6b9ce9acfa2d082661c6c154313f8aeca8a5f08eb37757a0575b7228ab5d2c6247150f2717e00eedde9', '0x68b27d2a86e99be00ec5609ec45f0d57d1d91b1ecfc1ad4f5118e8f544fece6d360d44c9229b53bf894714fe5d8ab8146013927a76dee2957784f5b2f0e76b4f', '0xab973a13583a3c15c87dd8370689fb1cf3701e990729ecf36600f5b2f09d17edfd595b12f22189aeb367755377e0e97fe2a9e601483853731b72962a266959a', '0xbe3e234e8601f99718c47f14027b7737816fd0fb6e6319a34e0e5502b871aa15cd20e2eff3098d6fc594c389276cc8bfea5ad4d0e5093b4f6bb8347e8949cf85', '0xc6a14ba7ed64ae3b722fbbb88338c86d28849a5e94cce0ff66bccb957fa78eba069661bb6c34df1e1a01f2b912f9691eabf3456a706c7a189d525ff031ad7375', '0x84b22265b34ef15d5baba658c34424103113dce4edad247e10fa64223a85e028e75aa2a279b2f38529d225a70c594f94d7c395c2c5b370afbb9e3086261c52d9', '0xd34e0b2da9161173da542979b4206a1df000f0aa049d62755cb96ee09622d6a9d08a02483dd932e8a70d42c59f6abc7af1c0ba3aa968d91bad34d1b70f76bda5', '0x97b9fdc4fe39ca9e692676126baa5ced7b2101217f156585d9cb55ea02b1b4c070cb09211fafc287039bc9c348778277d325cf0b1fb8c92bfab2116cba23bfbb', '0xa9b8624e47f0b185d96e66aa5b34568897514d6eb68ba551d3a99eed81d03f2727622bc9cf62200fe1a42cf66e5c3826f219258ca69793c1267c6136f8c76216', '0x8f557bd5ce099c74aa43babe468555c0c33060457ce2ca4c2260395d83ebfdfe0659e1a0c54acd2061e72470813e7d8c52bfa5c9b7ffa4b1a30de757a8140084', '0x21227e3ad49eb63b445db5c6c105b5a9005ca21abfeb2e63c71b7730c9d742db57a651edffdd9378037a42f6ccb372f19ad49db9fcaa56e94d87316d253a3b44', '0x63e951393731b4b62facd8d298c6f7c44f4cbf87437d4249283c549452cf8f079d189011c4a0ca351e7259d0d6cd4911a9fc3cc7df6f7b19fdb90a28d09a0508', '0x80720bec08dbf299db483d75783f8774e3964e5a47d5a3fa1d6565ea3ea1ff5a3f3a7cd6946618ab60705bb518d82576a899a26315435f33a003e73d73ed9775', '0x6a9430dfeb33f7e4c5ba2ef50dc14b9600b4e0c5490e5884b12b87d2fef29e8cfa3de2af872c914cc84ad80c086703211cd1fa65e04be959084527cdae7951c6', '0x47a87aa02e4a0f4c95ea7bce2d14eb745c0985ebce663dffd3e6082f8b8d1614b19de05d14dfa05b6594dd1d57beb3e5a8ffc8b532114f62fb085b673ef91574', '0xc1744625b4717f13d0aa27480c02c6652c76c5fb89d7f146f44c2d1027ba357874b538acd3ec2d6c8305639faec20b093a063eb7bd9f75e385e9c4d3d55328ea', '0xb24236b7ae7a067d13f3d469e76aa9ec1826b6b7925eb0ee8a8fc198683cf081e653b1cfdaeb8b052b3de75497eb568aa71e6672c4b53951bd64d32d5c557ef1', '0x6b6e726dffef288727bd45d4629fb529d7de7ca98c66bc02c64697d9ee1d3303605356fbb3fd9e5973b182e8e07e0219a30354bcfad611f4fc37829788490290']
> 3
QlDGTeto00MKLENrF6hxcQ1O1vVgJwiFKrs4h0spM3E2wnmHaq89Qw==
flag{y0u_f0und_th3_rar35t_ch33s3}
flag{y0u_f0und_th3_rar35t_ch33s3}