31 lines
537 B
Python
31 lines
537 B
Python
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")
|