from Crypto.Util.number import getPrime from random import randint # Public parameters g = 2 p = getPrime(1048) # Server's secret a = randint(2, p-2) A = pow(g, a, p) # Client secret b = '???' B = pow(g, b, p) # Shared key shared = pow(A, b, p) # Encrypt flag flag = b"picoCTF{...}" enc = bytes([x ^ (shared % 256) for x in flag]) # Write challenge info with open("file.txt", "w") as f: f.write(f"g = {g}\n") f.write(f"p = {p}\n") f.write(f"A = {A}\n") f.write(f"b = {b} \n") f.write(f"enc = {enc.hex()}\n")