Easy RSA CTFs

Below is a collection of the basic / easy rsa challenges that I authored for the guided CTF hosted by Securinets ISI.

RSA01

description : RSA is a public-key cryptography algorithm that encrypts and decrypts data securely using a pair of keys: a public key for encryption and a private key for decryption. Attacking RSA in a CTF often involves exploiting weak key generation, small encryption exponents, or insufficient padding to factorize the modulus or recover plaintext. Can you break my encryption and retrieve the flag?

Data :
n = 133057759405410196713996577614776585137 c = 81027466694039655654338302697352619188 e = 65537`
For this challenge the modulus n is too small that it’s easy to factorise it using factordb and retrieve p&q then calculate the private key d to finally recover the flag.

Solver :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from Crypto.Util.number import long_to_bytes, inverse


n = 133057759405410196713996577614776585137
c = 81027466694039655654338302697352619188
e=65537
p,q=9408799956350366153 , 14141841682541493929


r=(p-1)*(q-1)
d=inverse(e,r)

m=pow(c,d,n)
f=long_to_bytes(m).decode('utf-8')
print("Securinets{" + f +"}")

RSA02
description : if I use one prime only for N , you wont be able to factorise it ! im so smartttt

Data :

c = 118282453994915067115533072330204791590985623652958941724778500771132309209861471374977196484899695310790041029397945228312122466853334812707185314591133611995735076734093397710259825632388059828239146185365391425927762196807431151021766050491656240686821887089991313147120177642109805744451402690972638232208 e = 65537 n = 146943159688355173703916100543422379050357054115445990235972218469195431271709113288070841431038332725248398306543010191587575795114347455545117361096054023707807481731708102069920173598906378778376470955147300891620899721367733561338236185018799014766984757756587631920968288449973827629341343486711607539921

because the decription itself is a hint, we can guess that N is a prime itself instead of a product of 2 primes , as if N=p
Therefore the euler tuition is simply phi=N-1

Solver :

1
2
3
4
5
6
7
8
9
from Crypto.Util.number import bytes_to_long, inverse, getPrime, long_to_bytes

c = 118282453994915067115533072330204791590985623652958941724778500771132309209861471374977196484899695310790041029397945228312122466853334812707185314591133611995735076734093397710259825632388059828239146185365391425927762196807431151021766050491656240686821887089991313147120177642109805744451402690972638232208
e = 65537
n = 146943159688355173703916100543422379050357054115445990235972218469195431271709113288070841431038332725248398306543010191587575795114347455545117361096054023707807481731708102069920173598906378778376470955147300891620899721367733561338236185018799014766984757756587631920968288449973827629341343486711607539921

phi=n-1
d=inverse(e,phi)
print(long_to_bytes(pow(c,d,n)))

RSA03
description : A 1024bit prime wasnt enough , and the 2048bit takes too long to generate , so I generated one and used it 4 times hehe. my number is real huge rn ;)

Data :

1
2
3
c=19134745275853194244503274030795421762751522415696767603261669936071405459005384769933434710016779543250956707812515094242574018194676257513764291640739637309694951402828389416196073330414030135316532127299164661461474466434106368166999042073035142601932114669993593582411556895863088075301414562257356600771140910874483259543923293638309986862599629911582061638816509857936693518316412641347185821933608716580148400006401584742030822994147694241279316996591456664764737966681902295961926719060406235766606530307906506074485147282109688652355764806745553846746779646486597458061805223119273617165510995444554998268468874307672361703832102277193553679673692510833348067984482250484583338427925466915171553404439378058589942892381199700348848022611900428310003322115381408422036941535865665887921366450355836640142336602494339843279385799585879384270232349283820447079412271069818218270110241826564255120098584111318288430261753943145918587034365416019965883765680504984000188761691359835653829745238783563320399591988226758980384470312668504399659973823873261718201972875706351891914040829153312712321376733222848656886532703469789894802853336793333587780004201380642692503186996380817503106542224474497677602589165653715186120472831653772899406800617990546004685231074474016455622030766175230542323511603645779349776320687647782989555722351567812720275957035955713690580718363542019151662368656349235353024384408586125497942783549553366432135316578559767620628474591570042765570502787364092210441075517313747151023052828908012962493966179623817478013636123056309724947968928001628469554672746997334694399453407073352436232841177718541650831215548465194385987720273170127921998145033469088644718754568068589999917296585075509866617086721328472864032016169372044916913568308581975830533258753677823378594543675756192508593533071127225858748419752355485678532217980337921689114893700448665412605161836395286763278088419297135767885275429085504661521633338134682593982675900569599430604042620687759836512684341682214118449025211639283776711115058149520971897921057079853857180649140825993343170303404545002448497759417414073836846420361307212351060369454934412990805030668440777112010054084050937719775132115870996431439278724822483664871764668734189553831000276582043520582966990862068736337014548798536326291199778030654958378054562753153183372668976075876664527759936152033089946958596486758352916448970690711702660954951507225274987257069677595630433666360937263088
e = 65537
n = 306607703391320056991513508753308666153844616701220871565567756535824442282020363654415017648287251418094948471550721510037817600354749031881292195025406884692963700853082836342568071081951327706971115819281677838267390893991115539454288086702195434281355343619618384963825082359923650376320707789535190216598886030782420201576372735472846975776891369441574236016694997945723166091024648343784719987678665417742217723228683101937082381061495252534905641610948072185757521700996820771253130256458431942937333222650601683491131174738247428266245587715749268238567846848723750778583206864060883545651183065329378774513614421500810990646535914591292953834490895542003777329054349717336728425248606309121611741566970489617677135004159364622510578671731155482755204795488150582666826594815791827689938675588977014320493667724140798567593974467195612351641352821702608556208775886482402907121023951693671323224679951727350959171944188688071550863511898397630553811189832564079579629859889126727205984841758587102825319022596325639974797827574130433192129922592125010908650175541115118252562154312855169609325513287696798639123259558384419082401559053867350286614651244167035643395835740987173693898941458094990621921731496148857527612123684720960000136425151047602273023138303135724647435930867481448233415635808109081172409980120573832791835162285828159598816252756809472054818599964619598004591754297393230007485296961651219928823707247431240313353642276735463786408483029377933033483173144720685398779473515484401913186710254190339831086747555652846170407711005445543290791822618993177939691776427979912746356355961781647172838349637813974986583013385191267088443242447648749480582697865171526854170867597938964948870978085979341683359085281848837171075345862242407732720429704596398726720581518807680912958669346224310775018193087642493531223643966222760512022136216924920976230463472478535799051380627345641642961713950476476243597167257713788697626216765556628995341269402205739928534509840720613601576820130781078109813406005673934688266607419655030801551599161922821939673577854460859643758941300319382438968910009093849410629473541672099732013280418462853503735213490678742707026205836833420926495325213943579367574987100085697983198275030082560049690384976104792045980946826660325555300100458514124012186157762882147441224700639367534144490333422997269694354445625952469391662795976652735323290855263245162753910469341528457898090564341771082201316338022681886321

‘I generated one and used it 4 times’ , which indicated that N=pppp = p^4.
In this case we can find the prime factor p by simply calculating the 4th root of N , then we will calculate the euler tuition.

Solver :

1
2
3
4
5
6
7
8
9
10
11
12
13
from Crypto.Util.number import bytes_to_long, inverse, getPrime, long_to_bytes
from gmpy2 import iroot



c = 19134745275853194244503274030795421762751522415696767603261669936071405459005384769933434710016779543250956707812515094242574018194676257513764291640739637309694951402828389416196073330414030135316532127299164661461474466434106368166999042073035142601932114669993593582411556895863088075301414562257356600771140910874483259543923293638309986862599629911582061638816509857936693518316412641347185821933608716580148400006401584742030822994147694241279316996591456664764737966681902295961926719060406235766606530307906506074485147282109688652355764806745553846746779646486597458061805223119273617165510995444554998268468874307672361703832102277193553679673692510833348067984482250484583338427925466915171553404439378058589942892381199700348848022611900428310003322115381408422036941535865665887921366450355836640142336602494339843279385799585879384270232349283820447079412271069818218270110241826564255120098584111318288430261753943145918587034365416019965883765680504984000188761691359835653829745238783563320399591988226758980384470312668504399659973823873261718201972875706351891914040829153312712321376733222848656886532703469789894802853336793333587780004201380642692503186996380817503106542224474497677602589165653715186120472831653772899406800617990546004685231074474016455622030766175230542323511603645779349776320687647782989555722351567812720275957035955713690580718363542019151662368656349235353024384408586125497942783549553366432135316578559767620628474591570042765570502787364092210441075517313747151023052828908012962493966179623817478013636123056309724947968928001628469554672746997334694399453407073352436232841177718541650831215548465194385987720273170127921998145033469088644718754568068589999917296585075509866617086721328472864032016169372044916913568308581975830533258753677823378594543675756192508593533071127225858748419752355485678532217980337921689114893700448665412605161836395286763278088419297135767885275429085504661521633338134682593982675900569599430604042620687759836512684341682214118449025211639283776711115058149520971897921057079853857180649140825993343170303404545002448497759417414073836846420361307212351060369454934412990805030668440777112010054084050937719775132115870996431439278724822483664871764668734189553831000276582043520582966990862068736337014548798536326291199778030654958378054562753153183372668976075876664527759936152033089946958596486758352916448970690711702660954951507225274987257069677595630433666360937263088
e = 65537
n = 306607703391320056991513508753308666153844616701220871565567756535824442282020363654415017648287251418094948471550721510037817600354749031881292195025406884692963700853082836342568071081951327706971115819281677838267390893991115539454288086702195434281355343619618384963825082359923650376320707789535190216598886030782420201576372735472846975776891369441574236016694997945723166091024648343784719987678665417742217723228683101937082381061495252534905641610948072185757521700996820771253130256458431942937333222650601683491131174738247428266245587715749268238567846848723750778583206864060883545651183065329378774513614421500810990646535914591292953834490895542003777329054349717336728425248606309121611741566970489617677135004159364622510578671731155482755204795488150582666826594815791827689938675588977014320493667724140798567593974467195612351641352821702608556208775886482402907121023951693671323224679951727350959171944188688071550863511898397630553811189832564079579629859889126727205984841758587102825319022596325639974797827574130433192129922592125010908650175541115118252562154312855169609325513287696798639123259558384419082401559053867350286614651244167035643395835740987173693898941458094990621921731496148857527612123684720960000136425151047602273023138303135724647435930867481448233415635808109081172409980120573832791835162285828159598816252756809472054818599964619598004591754297393230007485296961651219928823707247431240313353642276735463786408483029377933033483173144720685398779473515484401913186710254190339831086747555652846170407711005445543290791822618993177939691776427979912746356355961781647172838349637813974986583013385191267088443242447648749480582697865171526854170867597938964948870978085979341683359085281848837171075345862242407732720429704596398726720581518807680912958669346224310775018193087642493531223643966222760512022136216924920976230463472478535799051380627345641642961713950476476243597167257713788697626216765556628995341269402205739928534509840720613601576820130781078109813406005673934688266607419655030801551599161922821939673577854460859643758941300319382438968910009093849410629473541672099732013280418462853503735213490678742707026205836833420926495325213943579367574987100085697983198275030082560049690384976104792045980946826660325555300100458514124012186157762882147441224700639367534144490333422997269694354445625952469391662795976652735323290855263245162753910469341528457898090564341771082201316338022681886321
p=iroot(n,4)[0]
phi=(p**3)*(p-1)

d=inverse(e,phi)
print(long_to_bytes(pow(c,d,n)))

RSA04

description :
you’ve got tricks huh, no worries , I’ll get diffrent large keys this time, but gotta use a small exponent to make the process faster

Data :
c = 1537150285716227605031838934788141177886658836535923894763771788997502746013878586588514967177576918221488975252570099470296450911774897636944014027191763 e = 3 n = 6146786767906341640151717109352619305048516049635186076371517569989570692234448672669878631257842691410568891710875462548373242004652600229150965897359313 len_flag = 22

For this challenge we can see that n is too large however the exponent being too small is our attack vector.
if m^e was smaller than n, we could’ve simply calculated the e’th root of of c, but that’s not the case here , so we need to loop over the c+i*N until we get the correct value of m, and knowing the bit length of the actual message we can narrow down the bruteforce range to gain time.

Solver :

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
from Crypto.Util.number import bytes_to_long, inverse, getPrime, long_to_bytes
from gmpy2 import iroot


c = 1537150285716227605031838934788141177886658836535923894763771788997502746013878586588514967177576918221488975252570099470296450911774897636944014027191763
e = 3
n = 6146786767906341640151717109352619305048516049635186076371517569989570692234448672669878631257842691410568891710875462548373242004652600229150965897359313
len_flag = 22

val = ( (len_flag * 8) - 4 ) * e
print(val)
min = 1 << val
max = 1 << (8 * e * (len_flag))


i = 0
while c < min:
c += n
i += 1

counter = 0

while c < max:
root , ismultiple = iroot(c,e)
if ismultiple:
try:
print('Securinets{' + long_to_bytes(root).decode('utf-8') + '}')
print(f"counter: {counter}")
except UnicodeDecodeError:
pass
c += n
counter+= 1
print('ended')

RSA05

description :I’m tired of people asking me the same question everytime and I have to generate a new key for each one of them >:(
Data :

1
2
ns = [55652954556107937436558126130981628469856830287651865257678648899331805910043630032738711075829125391173995512937487967442784636753086109531427000402056608938491835296837881214860569181216532717137995094938375506869925337418160802275724334329482671051594951034447281423042165197425948725066232459381503950871, 74317707688528667734326310556369127679363839044112684268763499686297343909580606783294265127685637603095184276878475093085990102530903504855375190095606001608654646880882846997161488032875150866953493212774724313410414052408519709710246256340861000533962319218128896253429654271650449192059657854828358319881, 64610303514259489173190071645325227435529007293865254785054422075911134023740021218644975356497715317975225905438864505857734457980489143651948289084138142584568616094816024565295521676524559195168334481782417818615112202107067725334706077641337609878152825258511471444232065593907253361191149864339442436649, 89352693182075337565753811697934726171680454908902290204987204948265365745707834874285616073681156364432767956453547821098084491529476880581582210498912472764279430653450370431574884091570438640365285338339299527702254238910842664271780050921460878610523026995557275788502158207199799970687692206819907272537, 116833829788556746725985252036485299180740742457927450142375071338888809993746705437912651244451180152690376095883524309952025011184494763869022619884619675619693930967449532004051399889434706813802987262665782459913223294989308782373530514096294642790997848949753388329432981757286829750263885178311279014987, 102758156787949727052984669382103233902122311189542309969176976858686696823198636361276233347411347820142573928989678762334542047701586095569896287662346525921105945613986221927055897604739213189659461610372092731142681491560951697693644662046391780905830127253914365856623914012997152215082469668425552583487, 163250215611624901214911467708884149756974936476834832869206561773698104188108995305975191564158541422108411636873390318128385924863119602365133321392268979640180454919229980633145689220953925985916441226684300874508496239497404252056118998178342650604051465136657184676171131939430344845441258572820554373149, 92204600429229681567062981208228031396799887078013906778335334844098293896141184242189353039234741101113190249589245522193469948625904320419357053556665483940296374114264292713405417709988540557363273032511090673844981878781695146261938669841364635773144091321146338994764253780195115302035177201070158244963, 59755605009395580109959652803159492861489394796139835681371906515300680796269944279335538254122709728454563915764055575396842901324985627823234395710383578901789711244650268302038937718692877765041703711604863770531522541693756529043052460892379814210808443394069410731033984634708715176607459382001565928769, 76978698694225426603628666216050019401300196022989084900987688709659476668843883528263398684142455951317912398851720712801661496525017764889560201904598734105796900026553356894665134912312367426104709179526633379033917442960612488019845897474926149473673195033958926208537086197149478057101529430276439863137, 63481434549248676554863301953266578233243371852408309722635933401697704746634474259821047903986044965604796262512881161462978131349164911057523842039820726320582505360986190161485469496899570034800142432127592716795812853536259119980645044905132536567625723809350743593284429679811885212000798510223605323219, 111651950125212979546157305754750391030594508345202613788204455464581293091995925383166172415575749738600014405526160432230030255401013669832723848667722261517229686658797581747493454353043341953733930098743221507414831929958451522880603097097443200931516969830936195341961833185260283195923798600956230858523, 169218565764102899528206502378388223852621349400791913950861288592611975679221889096714727222519907896454228311940248576418664770427417931995199092969214477658706792650878479419876559813616235925342594124971847832945072224773800459523889221385938527325358760700287857961916467095824990282494132936371957848169]
cs = [53159491895267665854834694618908191858783711148528393162976251872433615671361845304231940271131658059190631221979488528305600369424342076235258101100595311686669434266961653390447665153058550092235809835606033534326454928348236347494359711875385696047123449293834298135686403228515308880040914367299727059527, 22386315293484117989112083698199417589956458170322806126485978531712908059186360070578536641891122497756029166716583543206386710673030810542336572067166297902831468794543741230260396297313725080565493510295927731892692769159260760058326928957021143902299275999285698583908754507177108874879067069608275699918, 133787592382651583366457626475006975997135004114138580707333697114521342075725109763954912924124694440677341894343067378940825133508196739543920256915780209104022689502219577997363598691834056508825244400725662455543507933903594587127231449927076599972948119111498535432840253133049169539714773593869525505, 31526248717883820679468067815908095944032291371017774810931771724377343491243215267937987838528343222818047976595274068982865570895661855938291073820132808790001711222673999087888838170649487110155760950004015021520725971291530970556211594830739935491050904064737083239578468580804838922587263747849764075306, 25435296823005926738364276467034436153156207170540573482890500159604430509490146787933222801037110204844214270856981850305400621479248971185378733428307289541489223529774301372171928232701241931814498064562724858478153319241857407675391607689516272580878085588831516481287054910592998591860844785177013533987, 101347505294427587514432649632426648028542934550320124395882883205397049466577560580138992450040453894012393075790639914824966010826660269456782032413103781929767161071543882336783384391581162287415792590345775081336236902286962942842331842854823272488287481561686144709156834877404840221429520122769813226264, 162943458912651618508651153467676392091156026718393085668013007798062256475864625602777660715295613841812808769941881340455503766323424202425473720556553855120993056731876391050850350178365383633230172733726855932798194223550136434445326282202288054108250257059946158819209110418042895413448281599547835589565, 52320821390089389440795023332549423002706329266023949961620426212759196189426291666845211690200140998103750457802763537528126691699807479748490635261543583937859629954716604182499131749408287124874330534725181989798523520543800078873251822815558431631342340445525827033617729940703880034836371747415950808836, 43297116305384161695601724389241545837954438166481510694515557756012573576331098332594586086564961912928034449504006930636682845461151768826538049642905604337506339073976718693715266186936525113418118303998297685675491722112583129304750826754849348285175619689814890894063878568326459174528833924398392281077, 44182602934946626460700944578656004240746142921076648208461066652204831707762435062969698600353661732843848464410402525848906484313644665876369818466191058857102118518424141870365166526334818667612702419667525308446978049710500709684940966641192019883137139823769372570859935005348534859742514544875329179761, 8837704036395335206591172732434753123982045735845134310283634591634759799872625389467004611489400017013122501683932113584474597710425887880380201396801084994585485570843898389766855006966038228406256636865245522678479204277063114536612734094049275982205205520195846757293686401707441809817745328371540329300, 93771572184712862421302603650367867291477073763952525471381946283786627510868205719242118112847024418601110508497926313890304904188843584322633943221289899548198781745352208927333812094476836185643812866753110356164917920765461739520464648117775646154014624226171221639323893022378476989928539939685917991984, 70862795735577114358155920181784752407726843840950145133637263066143344357823499361396487181863833887061506489233621969189423640556070930099048731895331671447818381223212957790459731898290733493307777734548470639238246764128971111501921003469725114994260097806392993715710870889270969348075856844771229090994]

Damn those lists are huge, with 13 Ns and Cs.
The description indicated that those ciphers come from the same message m, which hints at the Hastad’s Broadcast Attack
since e wasn’t given , the default solution would be that e is equal to the number of Ns and Cs in the list , which is e=13

Solver :

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
from Crypto.Util.number import long_to_bytes

class BroadcastAttack:

t = []
messsage = 0
def __init__(self, e, N, C):
self.e = e
self.N = N
self.C = C

def calculate_partials(self):
for i in range(self.e):
mod_product = 1
for j in range(self.e):
if i != j:
mod_product *= self.N[j]
t_i = self.C[i]*mod_product*ModUtil.modinv(mod_product, self.N[i])
self.t.append(t_i)

def solve_congruence(self):
partial_total = 0
mod_product = 1
for i in range(self.e):
partial_total += self.t[i]
mod_product *= self.N[i]

self.message = ModUtil.isqrt(partial_total % mod_product, self.e)

def attack(self):
self.calculate_partials()
self.solve_congruence()
return self.message


class ModUtil:
@staticmethod
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
gcd, x_old, y_old = ModUtil.egcd(b % a, a)
return (gcd, y_old - (b // a) * x_old, x_old)

@staticmethod
def modinv(a, m):
gcd, x, y = ModUtil.egcd(a, m)
if gcd != 1:
raise Exception('Mod Inv Undefined')
else:
return x % m

@staticmethod
def isqrt(n, k):
u, s = n, n+1
while u < s:
s = u
t = (k - 1) * s + n // pow(s, k-1)
u = t // k
return s

def main():

e = 13
ns = [55652954556107937436558126130981628469856830287651865257678648899331805910043630032738711075829125391173995512937487967442784636753086109531427000402056608938491835296837881214860569181216532717137995094938375506869925337418160802275724334329482671051594951034447281423042165197425948725066232459381503950871, 74317707688528667734326310556369127679363839044112684268763499686297343909580606783294265127685637603095184276878475093085990102530903504855375190095606001608654646880882846997161488032875150866953493212774724313410414052408519709710246256340861000533962319218128896253429654271650449192059657854828358319881, 64610303514259489173190071645325227435529007293865254785054422075911134023740021218644975356497715317975225905438864505857734457980489143651948289084138142584568616094816024565295521676524559195168334481782417818615112202107067725334706077641337609878152825258511471444232065593907253361191149864339442436649, 89352693182075337565753811697934726171680454908902290204987204948265365745707834874285616073681156364432767956453547821098084491529476880581582210498912472764279430653450370431574884091570438640365285338339299527702254238910842664271780050921460878610523026995557275788502158207199799970687692206819907272537, 116833829788556746725985252036485299180740742457927450142375071338888809993746705437912651244451180152690376095883524309952025011184494763869022619884619675619693930967449532004051399889434706813802987262665782459913223294989308782373530514096294642790997848949753388329432981757286829750263885178311279014987, 102758156787949727052984669382103233902122311189542309969176976858686696823198636361276233347411347820142573928989678762334542047701586095569896287662346525921105945613986221927055897604739213189659461610372092731142681491560951697693644662046391780905830127253914365856623914012997152215082469668425552583487, 163250215611624901214911467708884149756974936476834832869206561773698104188108995305975191564158541422108411636873390318128385924863119602365133321392268979640180454919229980633145689220953925985916441226684300874508496239497404252056118998178342650604051465136657184676171131939430344845441258572820554373149, 92204600429229681567062981208228031396799887078013906778335334844098293896141184242189353039234741101113190249589245522193469948625904320419357053556665483940296374114264292713405417709988540557363273032511090673844981878781695146261938669841364635773144091321146338994764253780195115302035177201070158244963, 59755605009395580109959652803159492861489394796139835681371906515300680796269944279335538254122709728454563915764055575396842901324985627823234395710383578901789711244650268302038937718692877765041703711604863770531522541693756529043052460892379814210808443394069410731033984634708715176607459382001565928769, 76978698694225426603628666216050019401300196022989084900987688709659476668843883528263398684142455951317912398851720712801661496525017764889560201904598734105796900026553356894665134912312367426104709179526633379033917442960612488019845897474926149473673195033958926208537086197149478057101529430276439863137, 63481434549248676554863301953266578233243371852408309722635933401697704746634474259821047903986044965604796262512881161462978131349164911057523842039820726320582505360986190161485469496899570034800142432127592716795812853536259119980645044905132536567625723809350743593284429679811885212000798510223605323219, 111651950125212979546157305754750391030594508345202613788204455464581293091995925383166172415575749738600014405526160432230030255401013669832723848667722261517229686658797581747493454353043341953733930098743221507414831929958451522880603097097443200931516969830936195341961833185260283195923798600956230858523, 169218565764102899528206502378388223852621349400791913950861288592611975679221889096714727222519907896454228311940248576418664770427417931995199092969214477658706792650878479419876559813616235925342594124971847832945072224773800459523889221385938527325358760700287857961916467095824990282494132936371957848169]
cs = [53159491895267665854834694618908191858783711148528393162976251872433615671361845304231940271131658059190631221979488528305600369424342076235258101100595311686669434266961653390447665153058550092235809835606033534326454928348236347494359711875385696047123449293834298135686403228515308880040914367299727059527, 22386315293484117989112083698199417589956458170322806126485978531712908059186360070578536641891122497756029166716583543206386710673030810542336572067166297902831468794543741230260396297313725080565493510295927731892692769159260760058326928957021143902299275999285698583908754507177108874879067069608275699918, 133787592382651583366457626475006975997135004114138580707333697114521342075725109763954912924124694440677341894343067378940825133508196739543920256915780209104022689502219577997363598691834056508825244400725662455543507933903594587127231449927076599972948119111498535432840253133049169539714773593869525505, 31526248717883820679468067815908095944032291371017774810931771724377343491243215267937987838528343222818047976595274068982865570895661855938291073820132808790001711222673999087888838170649487110155760950004015021520725971291530970556211594830739935491050904064737083239578468580804838922587263747849764075306, 25435296823005926738364276467034436153156207170540573482890500159604430509490146787933222801037110204844214270856981850305400621479248971185378733428307289541489223529774301372171928232701241931814498064562724858478153319241857407675391607689516272580878085588831516481287054910592998591860844785177013533987, 101347505294427587514432649632426648028542934550320124395882883205397049466577560580138992450040453894012393075790639914824966010826660269456782032413103781929767161071543882336783384391581162287415792590345775081336236902286962942842331842854823272488287481561686144709156834877404840221429520122769813226264, 162943458912651618508651153467676392091156026718393085668013007798062256475864625602777660715295613841812808769941881340455503766323424202425473720556553855120993056731876391050850350178365383633230172733726855932798194223550136434445326282202288054108250257059946158819209110418042895413448281599547835589565, 52320821390089389440795023332549423002706329266023949961620426212759196189426291666845211690200140998103750457802763537528126691699807479748490635261543583937859629954716604182499131749408287124874330534725181989798523520543800078873251822815558431631342340445525827033617729940703880034836371747415950808836, 43297116305384161695601724389241545837954438166481510694515557756012573576331098332594586086564961912928034449504006930636682845461151768826538049642905604337506339073976718693715266186936525113418118303998297685675491722112583129304750826754849348285175619689814890894063878568326459174528833924398392281077, 44182602934946626460700944578656004240746142921076648208461066652204831707762435062969698600353661732843848464410402525848906484313644665876369818466191058857102118518424141870365166526334818667612702419667525308446978049710500709684940966641192019883137139823769372570859935005348534859742514544875329179761, 8837704036395335206591172732434753123982045735845134310283634591634759799872625389467004611489400017013122501683932113584474597710425887880380201396801084994585485570843898389766855006966038228406256636865245522678479204277063114536612734094049275982205205520195846757293686401707441809817745328371540329300, 93771572184712862421302603650367867291477073763952525471381946283786627510868205719242118112847024418601110508497926313890304904188843584322633943221289899548198781745352208927333812094476836185643812866753110356164917920765461739520464648117775646154014624226171221639323893022378476989928539939685917991984, 70862795735577114358155920181784752407726843840950145133637263066143344357823499361396487181863833887061506489233621969189423640556070930099048731895331671447818381223212957790459731898290733493307777734548470639238246764128971111501921003469725114994260097806392993715710870889270969348075856844771229090994]


attack = BroadcastAttack(e, ns, cs)
print(long_to_bytes(attack.attack()).decode())

if __name__ == '__main__':
main()

Easy RSA CTFs
https://stortny.github.io/blog/2024/12/28/Easy-RSA-CTFs/
Author
stortny
Posted on
December 28, 2024
Licensed under