from Crypto.Util.number import * from random import * flag = b'CCTF{pOl1arD5_Rh0_A7T4cK}' m = bytes_to_long(flag.lstrip(b'CCTF{').rstrip(b'}')) x = 1017889920298554816361874889125359209380542463300 liar = [] p = 2**160 - 229233 # E = EllipticCurve(GF(p), [3, 0]) # o = E.order() o = 1461501637330902918203683758258034914537499271049 for _ in range(109): r, s = [randint(1, o) for _ in '01'] liar.append((r, s)) # r0 - r1 = (d1 - d0) * o r0 = randint(1, o) s0 = (-inverse(m, o) * (r0 - liar[0][0]) + liar[0][1]) % o liar.append((r0, s0)) shuffle(liar)