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 29 30 31 32 33 34 35 36 37 38 39 40 41
| import gmpy2 from sympy import isprime, factor from sympy import factorint
public_key=[806186273, 1612372546, 3224745092, 6449490184, 12898980368, 25797960736, 51595921472, 103191842944, 206383685888, 412767371776, 825534743552, 1651069487104, 3302138974208, 6604277948416, 13208555896832, 26417111793664, 52834223587328, 105668447174656, 211336894349312, 422673788698624, 845347577397248, 1690695154794496, 3381390309588992, 6762780619177984, 13525561238355968, 27051122476711936, 54102244953423872, 108204489906847744, 216408979813695488, 432817959627390976, 865635919254781952, 1731271838509563904, 3462543677019127808, 6925087354038255616, 13850174708076511232, 27700349416153022464, 55400698832306044928, 110801397664612089856, 221602795329224179712, 443205590658448359424, 886411181316896718848, 1772822362633793437696, 3545644725267586875392, 7091289450535173750784, 14182578901070347501568, 28365157802140695003136, 56730315604281390006272, 113460631208562780012544, 226921262417125560025088, 453842524834251120050176, 907685049668502240100352, 1815370099337004480200704, 3630740198674008960401408, 7261480397348017920802816, 14522960794696035841605632, 29045921589392071683211264, 58091843178784143366422528, 116183686357568286732845056, 232367372715136573465690112, 464734745430273146931380224, 929469490860546293862760448, 1858938981721092587725520896, 3717877963442185175451041792, 7435755926884370350902083584, 14871511853768740701804167168, 29743023707537481403608334336, 59486047415074962807216668672, 118972094830149925614433337344, 237944189660299851228866674688, 475888379320599702457733349376, 951776758641199404915466698752, 1903553517282398809830933397504, 3807107034564797619661866795008, 7614214069129595239323733590016, 15228428138259190478647467180032, 30456856276518380957294934360064, 60913712553036761914589868720128, 121827425106073523829179737440256, 243654850212147047658359474880512, 487309700424294095316718949761024, 974619400848588190633437899522048, 1949238801697176381266875799044096, 3898477603394352762533751598088192, 7796955206788705525067503196176384, 15593910413577411050135006392352768, 31187820827154822100270012784705536, 62375641654309644200540025569411072, 124751283308619288401080051138822144, 249502566617238576802160102277644288, 499005133234477153604320204555288576, 998010266468954307208640409110577152, 1996020532937908614417280818221154304, 3992041065875817228834561636442308608, 7984082131751634457669123272884617216, 15968164263503268915338246545769234432, 31936328527006537830676493091538468864, 63872657054013075661352986183076937728, 127745314108026151322705972366153875456, 255490628216052302645411944732307750912, 510981256432104605290823889464615501824, 1021962512864209210581647778929231003648, 2043925025728418421163295557858462007296, 4087850051456836842326591115716924014592, 8175700102913673684653182231433848029184, 16351400205827347369306364462867696058368, 32702800411654694738612728925735392116736, 65405600823309389477225457851470784233472, 130811201646618778954450915702941568466944, 261622403293237557908901831405883136933888, 523244806586475115817803662811766273867776, 1046489613172950231635607325623532547735552, 2092979226345900463271214651247065095471104, 4185958452691800926542429302494130190942208, 8371916905383601853084858604988260381884416, 16743833810767203706169717209976520763768832, 33487667621534407412339434419953041527537664, 66975335243068814824678868839906083055075328, 133950670486137629649357737679812166110150656, 267901340972275259298715475359624332220301312, 535802681944550518597430950719248664440602624, 1071605363889101037194861901438497328881205248, 2143210727778202074389723802876994657762410496, 4286421455556404148779447605753989315524820992, 8572842911112808297558895211507978631049641984, 17145685822225616595117790423015957262099283968, 34291371644451233190235580846031914524198567936, 68582743288902466380471161692063829048397135872, 137165486577804932760942323384127658096794271744, 274330973155609865521884646768255316193588543488, 548661946311219731043769293536510632387177086976, 1097323892622439462087538587073021264774354173952, 2194647785244878924175077174146042529548708347904, 4389295570489757848350154348292085059097416695808, 8778591140979515696700308696584170118194833391616, 17557182281959031393400617393168340236389666783232, 35114364563918062786801234786336680472779333566464, 70228729127836125573602469572673360945558667132928, 140457458255672251147204939145346721891117334265856, 280914916511344502294409878290693443782234668531712, 561829833022689004588819756581386887564469337063424, 1123659666045378009177639513162773775128938674126848, 2247319332090756018355279026325547550257877348253696, 4494638664181512036710558052651095100515754696507392, 8989277328363024073421116105302190201031509393014784, 17978554656726048146842232210604380402063018786029568, 35957109313452096293684464421208760804126037572059136, 71914218626904192587368928842417521608252075144118272, 143828437253808385174737857684835043216504150288236544, 287656874507616770349475715369670086433008300576473088, 575313749015233540698951430739340172866016601152946176, 1150627498030467081397902861478680345732033202305892352, 2301254996060934162795805722957360691464066404611784704, 4602509992121868325591611445914721382928132809223569408, 9205019984243736651183222891829442765856265618447138816, 18410039968487473302366445783658885531712531236894277632, 36820079936974946604732891567317771063425062473788555264, 73640159873949893209465783134635542126850124947577110528, 147280319747899786418931566269271084253700249895154221056, 294560639495799572837863132538542168507400499790308442112, 589121278991599145675726265077084337014800999580616884224, 1178242557983198291351452530154168674029601999161233768448, 2356485115966396582702905060308337348059203998322467536896, 4712970231932793165405810120616674696118407996644935073792, 9425940463865586330811620241233349392236815993289870147584, 18851880927731172661623240482466698784473631986579740295168, 37703761855462345323246480964933397568947263973159480590336, 75407523710924690646492961929866795137894527946318961180672, 150815047421849381292985923859733590275789055892637922361344, 301630094843698762585971847719467180551578111785275844722688, 603260189687397525171943695438934361103156223570551689445376, 1206520379374795050343887390877868722206312447141103378890752, 2413040758749590100687774781755737444412624894282206757781504, 4826081517499180201375549563511474888825249788564413515563008, 9652163034998360402751099127022949777650499577128827031126016, 19304326069996720805502198254045899555300999154257654062252032, 38608652139993441611004396508091799110601998308515308124504064, 77217304279986883222008793016183598221203996617030616249008128, 154434608559973766444017586032367196442407993234061232498016256, 308869217119947532888035172064734392884815986468122464996032512, 617738434239895065776070344129468785769631972936244929992065024, 1235476868479790131552140688258937571539263945872489859984130048, 2470953736959580263104281376517875143078527891744979719968260096, 2271772865869042562343933210469277026878003414201539042867658625, 1873411123687967160823236878372080794476954459114657688666455683, 1076687639325816357781844214177688329674856548940894980264049799, 2153375278651632715563688428355376659349713097881789960528099598, 1636615949253147467262747314144280059420373826475159523987337629, 603097290456176970660865085722086859561695283661898650905813691, 1206194580912353941321730171444173719123390567323797301811627382, 2412389161824707882643460342888347438246781134647594603623254764, 2154643715599297801422291143210221617214509900006768810177647961] c = 9300864384064097558471271281235466391616213967975393508307623247 x = 2412389161824707882643460342888347438246781134647594603623254764 y = 2154643715599297801422291143210221617214509900006768810177647961
b = 2 * x - y n = public_key[0] factors = factorint(n) g = list(factors.keys())[0] a = list(factors.keys())[1]
private_key = [] private_key.append(g) for i in range(len(public_key) - 1): g = g * 2 private_key.append(g) print(private_key)
c = c * pow(a, -1, b) % b
flag = "" for i in private_key[::-1]: if c >= i: c -= i flag = "1" + flag else: flag = "0" + flag
print(bytes.fromhex(hex(int(flag, 2))[2:]))
|