Skip to content

Instantly share code, notes, and snippets.

from pwn import *
import json
from Crypto.Util.number import long_to_bytes
con = remote('socket.cryptohack.org', 13374)
rec = con.recv(1024)
con.send(json.dumps({"option":"get_pubkey"}))
rec = con.recv(1024)
con.send(json.dumps({"option":"get_secret"}))
rec = con.recv(1024)
refer to https://stackoverflow.com/questions/49878381/rsa-decryption-using-only-n-e-and-c
then download tool from https://github.com/Ganapati/RsaCtfTool
go to tool directory and run:
python RsaCtfTool.py -n {n} -e {e} --uncipher {c}
from Crypto.Util.number import getPrime, long_to_bytes, bytes_to_long, inverse
from math import gcd #for gcd function (or easily implementable to avoid import)
import random #for random elements drawing in RecoverPrimeFactors
My_private_key = (21711308225346315542706844618441565741046498277716979943478360598053144971379956916575370343448988601905854572029635846626259487297950305231661109855854947494209135205589258643517961521594924368498672064293208230802441077390193682958095111922082677813175804775628884377724377647428385841831277059274172982280545237765559969228707506857561215268491024097063920337721783673060530181637161577401589126558556182546896783307370517275046522704047385786111489447064794210010802761708615907245523492585896286374996088089317826162798278528296206977900274431829829206103227171839270887476436899494428371323874689055690729986771, 2734411677251148030723138005716109733838866545375527602018255159319631026653190783670493107936401603981429171880504360560494771017246468702902647370954220312452
refer to https://stackoverflow.com/questions/49878381/rsa-decryption-using-only-n-e-and-c
then download tool from https://github.com/Ganapati/RsaCtfTool
go to tool directory and run:
python RsaCtfTool.py -n {n} -e {e} --uncipher {c}
from Crypto.Util.number import inverse, long_to_bytes, bytes_to_long
import hashlib
mes = "crypto{Immut4ble_m3ssag1ng}"
res = hashlib.sha256(mes.encode())
h_m = int(res.hexdigest(),16)
n = 15216583654836731327639981224133918855895948374072384050848479908982286890731769486609085918857664046075375253168955058743185664390273058074450390236774324903305663479046566232967297765731625328029814055635316002591227570271271445226094919864475407884459980489638001092788574811554149774028950310695112688723853763743238753349782508121985338746755237819373178699343135091783992299561827389745132880022259873387524273298850340648779897909381979714026837172003953221052431217940632552930880000919436507245150726543040714721553361063311954285289857582079880295199632757829525723874753306371990452491305564061051059885803
d = 11175901210643014262548222473449533091378848269490518850474399681690547281665059317155831692300453197335735728459259392366823302405685389586883670043744683993709123180805154631088513521456979317628012721881537154
from Crypto.Util.number import inverse, long_to_bytes
from gmpy2 import iroot
n = 17258212916191948536348548470938004244269544560039009244721959293554822498047075403658429865201816363311805874117705688359853941515579440852166618074161313773416434156467811969628473425365608002907061241714688204565170146117869742910273064909154666642642308154422770994836108669814632309362483307560217924183202838588431342622551598499747369771295105890359290073146330677383341121242366368309126850094371525078749496850520075015636716490087482193603562501577348571256210991732071282478547626856068209192987351212490642903450263288650415552403935705444809043563866466823492258216747445926536608548665086042098252335883
e = 3
ct = 243251053617903760309941844835411292373350655973075480264001352919865180151222189820473358411037759381328642957324889519192337152355302808400638052620580409813222660643570085177957
pt = iroot(ct, 3)[0]
decrypted = long_to_bytes(pt)
print(decrypted)
from Crypto.Util.number import inverse, long_to_bytes
n = 580642391898843192929563856870897799650883152718761762932292482252152591279871421569162037190419036435041797739880389529593674485555792234900969402019055601781662044515999210032698275981631376651117318677368742867687180140048715627160641771118040372573575479330830092989800730105573700557717146251860588802509310534792310748898504394966263819959963273509119791037525504422606634640173277598774814099540555569257179715908642917355365791447508751401889724095964924513196281345665480688029639999472649549163147599540142367575413885729653166517595719991872223011969856259344396899748662101941230745601719730556631637
e = 65537
ct = 3207214905346244341499937235273229779605565107506283548562607320981096925813384099999833761313549183700476251504547287184679988703223449809856351496569777879643806518681317403120537555015949991663658213150433123086223880166668024784854760596258880330171980834729760117199983339855317569786787588974728453581677302215065738177984671000237
from Crypto.Util.number import inverse, long_to_bytes
n = 53586080804400955002917713570816801620145134314731356537101445902774349173942288544308470572073140971377552799371968258366916487380684204328843982807178997069475908084216225395525959055228304772878281294684516033480178208806815445302193672171026905098580505469209673877732179615338402489761559449345306813834120367374951409454600025363190299161719784758451969415212276540698213352659492868523238193474215219586138022122437085812873697595917686165104437037853909399019833629857294451273857083939658859009681321779119189594138046480337760277924066313383495232931686239958195059058800637122133412821540919760323694259767475672821223213405656271639915508010888110595276818919372882748466734937809110006822440468470167478239920037319243306276762284126405542603534976901811729962055480390249043233960056643224679581816746091618064739416915764724560355569273563086214871542879124276479946989692475347053985708076717005278391827318030483531838817708967423164091033774378975
from Crypto.Util.number import inverse, long_to_bytes
e = 65537
n = 171731371218065444125482536302245915415603318380280392385291836472299752747934607246477508507827284075763910264995326010251268493630501989810855418416643352631102434317900028697993224868629935657273062472544675693365930943308086634291936846505861203914449338007760990051788980485462592823446469606824421932591
ct = 161367550346730604451454756189028938964941280347662098798775466019463375610700074840105776873791605070092554650190486030367121011578171525759600774739890458414593857709994072516290998135846956596662071379067305011746842247628316996977338024343628757374524136260758515864509435302781735938531030576289086798942
d = inverse(e, n-1)
pt = pow(ct, d, n)
decrypted = long_to_bytes(pt)
print(decrypted)
from Crypto.Util.number import inverse, long_to_bytes
e = 3
n = 742449129124467073921545687640895127535705902454369756401331
ct = 39207274348578481322317340648475596807303160111338236677373
# get p,q from https://www.alpertron.com.ar/ECM.HTM by factoring n
p = 752708788837165590355094155871
q = 986369682585281993933185289261
phi = (p-1) * (q-1)
d = inverse(e, phi)