27 lines
459 B
Python
27 lines
459 B
Python
from Crypto.Util.number import getPrime, long_to_bytes
|
|
from pwn import *
|
|
import random, binascii
|
|
|
|
flag = open('flag.txt').read()
|
|
|
|
def v(p, k):
|
|
ans = 0
|
|
while k % p == 0:
|
|
k /= p
|
|
ans += 1
|
|
return ans
|
|
|
|
p, q, r = getPrime(2048), getPrime(2048), getPrime(2048)
|
|
print(p, q, r)
|
|
n = pow(p, q) * r
|
|
|
|
a1 = random.randint(0, n)
|
|
a2 = n - a1
|
|
assert a1 % p != 0 and a2 % p != 0
|
|
|
|
t = pow(a1, n) + pow(a2, n)
|
|
print(binascii.hexlify(xor(flag, long_to_bytes(v(p, t)))))
|
|
|
|
|
|
|