1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| from Crypto.Util.number import * from sage.all import *
n = 114007680041157617250208809154392208683967639953423906669116998085115503737001019559692895227927818755160444076128820965038044269092587109196557720941716578025622244634385547194563001079609897387390680250570961313174656874665690193604984942452581886657386063927035039087208310041149977622001887997061312418381 leak = 6833525680083767201563383553257365403889275861180069149272377788671845720921410137177 c = 87627846271126693177889082381507430884663777705438987267317070845965070209704910716182088690758208915234427170455157948022843849997441546596567189456637997191173043345521331111329110083529853409188141263211030032553825858341099759209550785745319223409181813931086979471131074015406202979668575990074985441810
PR = PolynomialRing(Zmod(n),'x') x = PR.gen()
f = (leak<<230) +x v = f.monic().small_roots(X=2**230, beta=0.4, epsilon=0.02) p = int(f(v[0])) m = pow(c, inverse_mod(65537, (p-1)),p) print(long_to_bytes(int(m)))
|