from Crypto.Util.number import getPrime as getprime ,long_to_bytes,bytes_to_long,inverse from secret import flag,p,q from sympy import isprime,nextprime import random
from Crypto.Util.number import long_to_bytes,bytes_to_long import gmpy2
p = gmpy2.mpz(80006336965345725157774618059504992841841040207998249416678435780577798937819) q = gmpy2.mpz(80006336965345725157774618059504992841841040207998249416678435780577798937447) n = gmpy2.mpz(6401013954612445818165507289870580041358569258817613282142852881965884799988941535910939664068503367303343695466899335792545332690862283029809823423608093) c = gmpy2.mpz(29088911054711509252215615231015162998042579425917914434962376243477176757448053722602422672251758332052330100944900171067962180230120924963561223495629695702541446456981441239486190458125750543542379899722558637306740763104274377031599875275807723323394379557227060332005571272240560453811389162371812183549)
phi = (p-1)*(q-1) u = gmpy2.invert(phi,n)
defL(x): return (x-1)//n
b = gmpy2.powmod(c,phi,n*n)
m = (L(b)*u) % n flag = long_to_bytes(m)
print(flag)
exp2:
1 2 3 4 5 6 7 8 9 10 11
from Crypto.Util.number import *
p = 80006336965345725157774618059504992841841040207998249416678435780577798937819 q = 80006336965345725157774618059504992841841040207998249416678435780577798937447 n = p * q c = 29088911054711509252215615231015162998042579425917914434962376243477176757448053722602422672251758332052330100944900171067962180230120924963561223495629695702541446456981441239486190458125750543542379899722558637306740763104274377031599875275807723323394379557227060332005571272240560453811389162371812183549 lcm = ((p - 1) * (q - 1)) // GCD(p - 1, q - 1) a = (pow(c, lcm, n * n) - 1) // n b = (pow(n + 1, lcm, n * n) - 1) // n m = long_to_bytes((a * inverse(b, n)) % n) print(m)
from secret import FLAG, ECDH_KEY_EXCHANGE from Crypto.Cipher import AES from hashlib import md5 from os import urandom
iv = urandom(16)
a = 14489 b = 10289 p = 7486573182795736771889604737751889118967735916352298289975055815020934891723453392369540853603360270847848895677903334441530052977221688450741083448029661
d = xxxxxx m = int(np.sqrt(d)) dq = deque() dq.append(m) n0 = n1 = d - m * m m1 = m while1: q, m2 = divmod(m1 + m, n1) dq.appendleft(q) m1 = -m2+m n1 = (d-m1*m1)//n1 if m1 == m and n1 == n0: break
dq.popleft() x = 1 y = 0 for i in dq: x1 = y + x * i y = x x = x1 y1=y if x*x-d*y*y==-1: b=(x**2+d*y**2) y1=2*x*y x1=b print('x1=',x1) print('y1=',y1)