from pwn import * from Crypto.Util.number import * from hashlib import sha256 from Crypto.Cipher import AES from Crypto.Util.Padding import unpad from base64 import b64decode
context.log_level = 'debug'
#sh=remote('0.0.0.0',1337) sh=remote('nepctf.1cepeak.cn',30298) sla = lambda a,b :sh.sendlineafter(str(a),str(b)) sa = lambda a,b :sh.sendafter(str(a),str(b)) lg = lambda name,data : sh.success(name + ": 0x%x" % data) se = lambda payload: sh.send(payload) rl = lambda : sh.recvline() rv = lambda n : sh.recv(n) sl = lambda payload: sh.sendline(payload) ru = lambda a :sh.recvuntil(str(a)) rud = lambda a :sh.recvuntil(str(a),drop=True)
ru('M=') M=int(rl().strip().decode())
for i inrange(20): ru('#Round %d\n'%(i+1)) exec(rl().strip().decode()) exec(rl().strip().decode()) enc=b64decode(enc) key=(sum(enc_list)-len(enc_list)*514)*inverse(114,M)%M aes_key=sha256(str(key).encode()).digest()[:16] aes=AES.new(aes_key,AES.MODE_CBC,iv=bytes(range(16))) dec=aes.decrypt(enc) sla('message: ',unpad(dec,16).decode())