[Lattice Based Attack on Common Private Exponent RSA](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.450.8522&rep=rep1&type=pdf)``` pythonfrom base64 import b16decodeM = matrix(ZZ, 4, 4)M[0, 0] = 9340839063356994543825244634439511746168190665008710505312793938053942051578773541905721378366249085682424830408563162405353174129977981998168120082963619
M[0, 1] = 51983813665671800409839988493029246480070074834841243495961153551775041734427962445872206132230740295302754013962953264876213932808699081864133090192643613789187721225535425912301364390420043383226457510304822096397715316371940024746022705176795180819408076922934552124373282859536967093759368041876524225139M[1, 1] = -64654556231563695547493500054632859378349684890112764196584470405550515097294751579707227891255194885132433625167039162096344730307555508022839694405138861889000145901955321456009232987544380737060291863753072870240289176719347333380538372971927607904400675634229083209011094844177200435042629699575056728699
M[0, 2] = 27739852474419814228424766924939927182500516940059791169884494311457023682682230955930800978332815986965586583064459588099484588195620051027704700779477722077749045118897076513621888201257345893078071262859502274345222853921855050442599821812942390370406366416961645664934820366758955722115914057396318787763M[2, 2] = -74561423829806980524762065744155854310440311101120993432266010620312856451632675934042147880250464659466017963810572077347801696514675652965621592345498505236749292061898839126590516721706748456057877425174070374594141399926282566873744118828366392787410273564550665904842042511263241293542741010537465102549
M[0, 3] = 52410295784947271807699643665492970476313244237108219429498040919274591805644565698024448558334954813038722155025541077631406997664892706754011478896823826919399377762601338482475790274399209231131418307414926175342665178227305755286417956083958970337197812786680712427177379910792964894812040492910957653247M[3, 3] = -87251274407535975129608866158128487370461251684094714478155440086809079998231882544278049923953015443634719979966094891747120081394876471201674948529612176388367317640140769795923453417761838492471434429225347211071537368045520244029666892473137131731436015187840445356660313211735614312893366598786502415141S = M.LLL()d = abs(S[0][0])/M[0][0]#print(d)n1=87251274407535975129608866158128487370461251684094714478155440086809079998231882544278049923953015443634719979966094891747120081394876471201674948529612176388367317640140769795923453417761838492471434429225347211071537368045520244029666892473137131731436015187840445356660313211735614312893366598786502415141c1=21551750332345122871179549552729450671666301239047430727233645786059420932730878556425786175119768649063802412108774800797599339474458058991692461489091449347205047107377019431027507235000069856965995634720386916586363494704156772213011202200368450136695450540531985954052107694827395812747657750091227056093print(b16decode(hex(pow(c1, d, n1))[2:].upper()))```