# (solved) Crypto/4k-rsa > Only n00bz use 2048-bit RSA. True gamers use keys that are at least 4k bits long, no matter how many primes it takes... Provided file: `4k-rsa-public-key.txt` ``` n: 5028492424316659784848610571868499830635784588253436599431884204425304126574506051458282629520844349077718907065343861952658055912723193332988900049704385076586516440137002407618568563003151764276775720948938528351773075093802636408325577864234115127871390168096496816499360494036227508350983216047669122408034583867561383118909895952974973292619495653073541886055538702432092425858482003930575665792421982301721054750712657799039327522613062264704797422340254020326514065801221180376851065029216809710795296030568379075073865984532498070572310229403940699763425130520414160563102491810814915288755251220179858773367510455580835421154668619370583787024315600566549750956030977653030065606416521363336014610142446739352985652335981500656145027999377047563266566792989553932335258615049158885853966867137798471757467768769820421797075336546511982769835420524203920252434351263053140580327108189404503020910499228438500946012560331269890809392427093030932508389051070445428793625564099729529982492671019322403728879286539821165627370580739998221464217677185178817064155665872550466352067822943073454133105879256544996546945106521271564937390984619840428052621074566596529317714264401833493628083147272364024196348602285804117877 e: 65537 c: 3832859959626457027225709485375429656323178255126603075378663780948519393653566439532625900633433079271626752658882846798954519528892785678004898021308530304423348642816494504358742617536632005629162742485616912893249757928177819654147103963601401967984760746606313579479677305115496544265504651189209247851288266375913337224758155404252271964193376588771249685826128994580590505359435624950249807274946356672459398383788496965366601700031989073183091240557732312196619073008044278694422846488276936308964833729880247375177623028647353720525241938501891398515151145843765402243620785039625653437188509517271172952425644502621053148500664229099057389473617140142440892790010206026311228529465208203622927292280981837484316872937109663262395217006401614037278579063175500228717845448302693565927904414274956989419660185597039288048513697701561336476305496225188756278588808894723873597304279725821713301598203214138796642705887647813388102769640891356064278925539661743499697835930523006188666242622981619269625586780392541257657243483709067962183896469871277059132186393541650668579736405549322908665664807483683884964791989381083279779609467287234180135259393984011170607244611693425554675508988981095977187966503676074747171 ``` Standard RSA problem with weak prime probably. Should be solvable with [RsaCtfTool](https://github.com/Ganapati/RsaCtfTool). Tool gives output on ECM, but the output looks garbled? ``` sh # python3 RsaCtfTool.py -n 5028492424316659784848610571868499830635784588253436599431884204425304126574506051458282629520844349077718907065343861952658055912723193332988900049704385076586516440137002407618568563003151764276775720948938528351773075093802636408325577864234115127871390168096496816499360494036227508350983216047669122408034583867561383118909895952974973292619495653073541886055538702432092425858482003930575665792421982301721054750712657799039327522613062264704797422340254020326514065801221180376851065029216809710795296030568379075073865984532498070572310229403940699763425130520414160563102491810814915288755251220179858773367510455580835421154668619370583787024315600566549750956030977653030065606416521363336014610142446739352985652335981500656145027999377047563266566792989553932335258615049158885853966867137798471757467768769820421797075336546511982769835420524203920252434351263053140580327108189404503020910499228438500946012560331269890809392427093030932508389051070445428793625564099729529982492671019322403728879286539821165627370580739998221464217677185178817064155665872550466352067822943073454133105879256544996546945106521271564937390984619840428052621074566596529317714264401833493628083147272364024196348602285804117877 -e 65537 --uncipher 3832859959626457027225709485375429656323178255126603075378663780948519393653566439532625900633433079271626752658882846798954519528892785678004898021308530304423348642816494504358742617536632005629162742485616912893249757928177819654147103963601401967984760746606313579479677305115496544265504651189209247851288266375913337224758155404252271964193376588771249685826128994580590505359435624950249807274946356672459398383788496965366601700031989073183091240557732312196619073008044278694422846488276936308964833729880247375177623028647353720525241938501891398515151145843765402243620785039625653437188509517271172952425644502621053148500664229099057389473617140142440892790010206026311228529465208203622927292280981837484316872937109663262395217006401614037278579063175500228717845448302693565927904414274956989419660185597039288048513697701561336476305496225188756278588808894723873597304279725821713301598203214138796642705887647813388102769640891356064278925539661743499697835930523006188666242622981619269625586780392541257657243483709067962183896469871277059132186393541650668579736405549322908665664807483683884964791989381083279779609467287234180135259393984011170607244611693425554675508988981095977187966503676074747171 --private --attack ecm [*] Testing key /tmp/tmp1daqlcf4. [*] Performing ecm attack on /tmp/tmp1daqlcf4. [*] ECM Method can run forever and may never succeed, timeout set to 30sec. Hit Ctrl-C to bail out. Results for /tmp/tmp1daqlcf4: Private key : -----BEGIN RSA PRIVATE KEY----- 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 qqfDE2sCCA/sA6+spNDE -----END RSA PRIVATE KEY----- Unciphered data : HEX : 0x07b163c0bf66d28a67c88db5450f12a5fdffdf44514bd6f2fe42f05007bc850ac3e26e7eb5f7705b0653fee502dd349711467e7946d580db20ca5b25578fd2e8706ed73f15eae2147e98b0b77f7fafb9db3c0e49ecef94f8bfc1a6c2ae034ee07c5d9c970eb45566c0b6c3a14d39b81b6bf042a60ab386387796b0a852815b2c590c233ca1158ef07136bded0a3fdac95a90303df947541dd04a7a07ea5251c9c1469d7054252d65bd7b893c4d0cb42c6a8dc1026830b50139df72cfa0133870a8d4d29b33f5b8292dd869a8f98c258b976b9dba3f789b4aafbf827dbdb8cd6728f134d5eca3371f60f213884fdba2a4c5ff8c4e27d2f98b4ffe3552fbf0053214933854d32e12fe51b7c82ca15acc4c09dd66b81cfc73e29511776b85ceb5347b4c7b2e1e0b660cdd47ae93665f954c95b3e8fa62bc9b72dcc5a6cb31f1243b3009000aeee8c2e755c0822b568df33d97776efbae3471979503369551930a5145e0e244991b3aa8408b649c7bb20c5906a75b021ab93df74c7e59e101bd19bd240d7f445d88cda27f17edef9a3a710bc9d5089932758dbc4f8513106bceb3248f0d9e7f2e6ecaab557f7d12b17c48dc6afd68871e0228ad98a84d236c4b370220667bacec4d3da61fc2fd301ccde590449907093bbca69aebc335e58bab600948a47dc20d17e1207887193d5185bc4d873dd49a36fe364f53436f06f8 INT (big endian) : 1870656582389635319522490775681765556967033133375421817063580030728457230593569595131414277398150710605951256691851698607014346038293991115636475696890922999508248407125632913851022035568888312544660588318724416692819645970053246786214085233985018865610198082255731541614556037411568462902780963401259747249593241949572443995162110156272474492229702893170705537632617121620053409146544673453962485701871570816327976160510980709914322953860551681934553962130725463442951958511078343731761563980410426271077921497206430520148136641602942250025980666361809922277401906583051677740925742464684134696582849741398675332021222559619095993735383708900244871501427790769116964093831442766422704600286955989703255467385667324051816825678500364199592213660232549494940656315913289471193657150966190096392560117749636861246366524938199506669220698738729864231613015979805819538364722998690859404055290427668556077514632294070025157987587482664205390223677703558173312591277536453835019988033658697837804743300350491703518799745274195488115845961085516710580956246073099970177631140239688387784226734851541596141888949854089135954307535850320246064797940874210909258994651054665773084165308581469099061612356900397340528332812699520927480 INT (little endian) : 60311214428878565102247812539787501070204913583090576392691487440133176758070697462553257120757916862788771663389293946023248316596602127569564871367850224400480145908833613415562359788656099076882601146441452839440406130694595083218010338472872462208718771323238265431591733445464121900940657860541500842934964039058348885352372365419275069041165169914640676678457661016112443646301311198122284979559358676380966968491040340224467076366541748686430950939927727229461631730868870879407728819518903691147508525524607642140876984672780509701802925869138922403130238785391815466604220553459218336275202437703929210056251070112660764637928200231328942469621961328354604395450771796521342909002021606408862443406105136900854293735690233705992277215524875922754633289337601248133511007584342943394261373823449663870680927969805986151860089822822571293823122333051665636122250254142140233507051337199145914402980093605113126528220427337206158268694367489749068337092563191005611159355315897398859695890673715568835537739460686252198016834074160891415546998385389599384176358498540712726618967735318519600227864998048769117592865201468904434005028798787851821836940014086518833034263652725441814122602993646949441498014268405766664455 STR : b"\x07\xb1c\xc0\xbff\xd2\x8ag\xc8\x8d\xb5E\x0f\x12\xa5\xfd\xff\xdfDQK\xd6\xf2\xfeB\xf0P\x07\xbc\x85\n\xc3\xe2n~\xb5\xf7p[\x06S\xfe\xe5\x02\xdd4\x97\x11F~yF\xd5\x80\xdb \xca[%W\x8f\xd2\xe8pn\xd7?\x15\xea\xe2\x14~\x98\xb0\xb7\x7f\x7f\xaf\xb9\xdb<\x0eI\xec\xef\x94\xf8\xbf\xc1\xa6\xc2\xae\x03N\xe0|]\x9c\x97\x0e\xb4Uf\xc0\xb6\xc3\xa1M9\xb8\x1bk\xf0B\xa6\n\xb3\x868w\x96\xb0\xa8R\x81[,Y\x0c#<\xa1\x15\x8e\xf0q6\xbd\xed\n?\xda\xc9Z\x900=\xf9GT\x1d\xd0Jz\x07\xeaRQ\xc9\xc1F\x9dpT%-e\xbd{\x89<M\x0c\xb4,j\x8d\xc1\x02h0\xb5\x019\xdfr\xcf\xa0\x138p\xa8\xd4\xd2\x9b3\xf5\xb8)-\xd8i\xa8\xf9\x8c%\x8b\x97k\x9d\xba?x\x9bJ\xaf\xbf\x82}\xbd\xb8\xcdg(\xf14\xd5\xec\xa37\x1f`\xf2\x13\x88O\xdb\xa2\xa4\xc5\xff\x8cN'\xd2\xf9\x8bO\xfe5R\xfb\xf0\x052\x14\x938T\xd3.\x12\xfeQ\xb7\xc8,\xa1Z\xccL\t\xddf\xb8\x1c\xfcs\xe2\x95\x11wk\x85\xce\xb54{L{.\x1e\x0bf\x0c\xddG\xae\x93f_\x95L\x95\xb3\xe8\xfab\xbc\x9br\xdc\xc5\xa6\xcb1\xf1$;0\t\x00\n\xee\xe8\xc2\xe7U\xc0\x82+V\x8d\xf3=\x97wn\xfb\xae4q\x97\x95\x036\x95Q\x93\nQE\xe0\xe2D\x99\x1b:\xa8@\x8bd\x9c{\xb2\x0cY\x06\xa7[\x02\x1a\xb9=\xf7L~Y\xe1\x01\xbd\x19\xbd$\r\x7fD]\x88\xcd\xa2\x7f\x17\xed\xef\x9a:q\x0b\xc9\xd5\x08\x992u\x8d\xbcO\x85\x13\x10k\xce\xb3$\x8f\r\x9e\x7f.n\xca\xabU\x7f}\x12\xb1|H\xdcj\xfdh\x87\x1e\x02(\xad\x98\xa8M#lK7\x02 f{\xac\xecM=\xa6\x1f\xc2\xfd0\x1c\xcd\xe5\x90D\x99\x07\t;\xbc\xa6\x9a\xeb\xc35\xe5\x8b\xab`\tH\xa4}\xc2\r\x17\xe1 x\x87\x19=Q\x85\xbcM\x87=\xd4\x9a6\xfe6OSCo\x06\xf8" ``` Solved by looking at the factorization of n on [factordb](http://factordb.com/index.php?query=5028492424316659784848610571868499830635784588253436599431884204425304126574506051458282629520844349077718907065343861952658055912723193332988900049704385076586516440137002407618568563003151764276775720948938528351773075093802636408325577864234115127871390168096496816499360494036227508350983216047669122408034583867561383118909895952974973292619495653073541886055538702432092425858482003930575665792421982301721054750712657799039327522613062264704797422340254020326514065801221180376851065029216809710795296030568379075073865984532498070572310229403940699763425130520414160563102491810814915288755251220179858773367510455580835421154668619370583787024315600566549750956030977653030065606416521363336014610142446739352985652335981500656145027999377047563266566792989553932335258615049158885853966867137798471757467768769820421797075336546511982769835420524203920252434351263053140580327108189404503020910499228438500946012560331269890809392427093030932508389051070445428793625564099729529982492671019322403728879286539821165627370580739998221464217677185178817064155665872550466352067822943073454133105879256544996546945106521271564937390984619840428052621074566596529317714264401833493628083147272364024196348602285804117877). Copied all the numbers into my script and obtained flag: ```python= from Crypto.Util.number import inverse n=5028492424316659784848610571868499830635784588253436599431884204425304126574506051458282629520844349077718907065343861952658055912723193332988900049704385076586516440137002407618568563003151764276775720948938528351773075093802636408325577864234115127871390168096496816499360494036227508350983216047669122408034583867561383118909895952974973292619495653073541886055538702432092425858482003930575665792421982301721054750712657799039327522613062264704797422340254020326514065801221180376851065029216809710795296030568379075073865984532498070572310229403940699763425130520414160563102491810814915288755251220179858773367510455580835421154668619370583787024315600566549750956030977653030065606416521363336014610142446739352985652335981500656145027999377047563266566792989553932335258615049158885853966867137798471757467768769820421797075336546511982769835420524203920252434351263053140580327108189404503020910499228438500946012560331269890809392427093030932508389051070445428793625564099729529982492671019322403728879286539821165627370580739998221464217677185178817064155665872550466352067822943073454133105879256544996546945106521271564937390984619840428052621074566596529317714264401833493628083147272364024196348602285804117877 c=3832859959626457027225709485375429656323178255126603075378663780948519393653566439532625900633433079271626752658882846798954519528892785678004898021308530304423348642816494504358742617536632005629162742485616912893249757928177819654147103963601401967984760746606313579479677305115496544265504651189209247851288266375913337224758155404252271964193376588771249685826128994580590505359435624950249807274946356672459398383788496965366601700031989073183091240557732312196619073008044278694422846488276936308964833729880247375177623028647353720525241938501891398515151145843765402243620785039625653437188509517271172952425644502621053148500664229099057389473617140142440892790010206026311228529465208203622927292280981837484316872937109663262395217006401614037278579063175500228717845448302693565927904414274956989419660185597039288048513697701561336476305496225188756278588808894723873597304279725821713301598203214138796642705887647813388102769640891356064278925539661743499697835930523006188666242622981619269625586780392541257657243483709067962183896469871277059132186393541650668579736405549322908665664807483683884964791989381083279779609467287234180135259393984011170607244611693425554675508988981095977187966503676074747171 e=65537 # Factors of n k="9353689450544968301 9431486459129385713 9563871376496945939 9734621099746950389 9736426554597289187 10035211751896066517 10040518276351167659 10181432127731860643 10207091564737615283 10435329529687076341 10498390163702844413 10795203922067072869 11172074163972443279 11177660664692929397 11485099149552071347 11616532426455948319 11964233629849590781 11992188644420662609 12084363952563914161 12264277362666379411 12284357139600907033 12726850839407946047 13115347801685269351 13330028326583914849 13447718068162387333 13554661643603143669 13558122110214876367 13579057804448354623 13716062103239551021 13789440402687036193 13856162412093479449 13857614679626144761 14296909550165083981 14302754311314161101 14636284106789671351 14764546515788021591 14893589315557698913 15067220807972526163 15241351646164982941 15407706505172751449 15524931816063806341 15525253577632484267 15549005882626828981 15687871802768704433 15720375559558820789 15734713257994215871 15742065469952258753 15861836139507191959 16136191597900016651 16154675571631982029 16175693991682950929 16418126406213832189 16568399117655835211 16618761350345493811 16663643217910267123 16750888032920189263 16796967566363355967 16842398522466619901 17472599467110501143 17616950931512191043 17825248785173311981 18268960885156297373 18311624754015021467 18415126952549973977" phy=1 k=k.split(" ") for i in k: phy*=int(i)-1 def get_RSA_flag(c,n,e,z): d = inverse(e,z) m = pow(c,d,n) return bytes.fromhex(format(m,'x')).decode('utf-8') print(get_RSA_flag(c,n,e,phy)) ``` `flag{t0000_m4nyyyy_pr1m355555}`