from gmpy2 import * from Crypto.Util.number import *
deffermat_attack(n): a = iroot(n, 2)[0] while1: a += 1 B2 = pow(a, 2) - n if is_square(B2): b = iroot(B2, 2)[0] p = a+b q = a-b assert n == p*q return p, q
n = 148841588941490812589697505975986386226158446072049530534135525236572105309550985274214825612079495930267744452266230141871521931612761645600600201983605957650711248808703757693378777706453580124982526368706977258199152469200838211055230241296139605912607613807871432800586045262879581100319519318390454452117 e = 65537 c = 69038543593219231496623016705860610154255535760819426453485115089535439537440188692852514795648297200067103841434646958466720891016026061658602312900242658759575613625726750416539176437174502082858413122020981274672260498423684555063381678387696096811975800995242962853092582362805345713900308205654744774932
p, q = fermat_attack(n) phi = (p-1)*(q-1) d = inverse(e, phi) m = pow(c, d, n) print(long_to_bytes(m))