My solutions for CTFs
0

Configure Feed

Select the types of activity you want to include in your feed.

Daily AlpacaHack 2026/1/10

Takumi Akimoto (Jan 11, 2026, 12:51 AM +0900) 0421d8be f179fea2

+80
+1
alpacahack/daily/rsa2026/.python-version
··· 1 + 3.13
+9
alpacahack/daily/rsa2026/pyproject.toml
··· 1 + [project] 2 + name = "rsa2026" 3 + version = "0.1.0" 4 + description = "Add your description here" 5 + readme = "README.md" 6 + requires-python = ">=3.13" 7 + dependencies = [ 8 + "pycryptodome>=3.23.0", 9 + ]
+26
alpacahack/daily/rsa2026/solve.py
··· 1 + import sys 2 + from Crypto.Util.number import isPrime, long_to_bytes 3 + 4 + sys.set_int_max_str_digits(20 << 26) 5 + 6 + n = int("3771033181350829263969576074431524897790249654166659626333690350859549513817343981885990499054739593171678912013538556571770554517866862929432402001311344182641933296967882577363994855942277696939929528638972399672632063694379166898343501542737619668785866527199995618662554403775664282306752403598710714884457362322677784383534780581685708326467529715142085821713412738610022402177496282248106476099261643696212137965188239604830158515605325885632207098277165666536783838567916738591656211053731455036993421922917409027025992853540879665106689371260845780753850909903932411851040311800795262672250420479935370286463183345914684186858728381654849781460166481468395417213222301074806410131454383917074496942234723528062589275223937018370786595093873449822004298450021836619634197406036406904749317443672868302523380470753793032087570180685858573018046362702833286828940432356641209553550548978770999973102985374123443789897472980448705203718515844825626137003479567309249346700900418508852228378497614359648766247521094823050038958828236671777963042854217583873527032484378715985874302439844773949964273808179415451456378923216339501003228107526259087903292498598374365460141373763453403120517004722105186233350563191815822137006948576925421172833821619894865245693872875810020665173293854476266686967632722910475541249724515850144050141349793598295427362210425410015933170620917716241562741052135950855979455618922668860831543099607637318975402969615454694043683274573180010354717953384524456892897366492249464258581035135384440469227512886885501099433801659531512831581902510717108944111333120093377782555513953792305761795859275842014117009759044930801307317820299353807204275106525961968896103165013797627272660872718308423504881666234747443493157490489640395650257806194169197204797698004472769125311780890262077657470998167428254621315224880983960711739787540790618879781811122206500378252231606108818459573821503496827814901379475602027223655345635646431891065763372882513351332285000146973084936970792384340484771996944571117564913554703128311608123126202328201015717238606440251241050537705323586581644184673125847589423775285178334252863740135393169854220556879096114988226084762513025394012418333605574165235060562658256990379490118923315883927933223843683082463071770378000856180823564038956429627480502551351671582018451136304021047716030109131282576807784221731760897529179000173187814259071487022662129325111457874849100021688975212722695195942604629140828503697143652643313257422462637326865249801122300199360144410329766038372660129932010407959403447146459060513815645727154808726308246896489510008201560988874733175984173003092213484860092046938225468193485668589510506365739090836485312586074687793558818192284381958493011774770846686625072494438912759469514643584901472990472258658569227918231654888430048040997737167191406443896290156344797480705404292122158244250419620744656349887825982771508695923860048387172752289248959714895826803534772704760031560886735699959704136967992294316602982814466319905798471720918788480156140580065202032405927054241284870086916847465497738245621779305607390074626231634141360628841938021816142193796477000565499595546647138917425437591559453767175527192539298054518410796706869723822002959199843791590305346901500441815895373040126424562222304225037567969736225448696647688346368414657405315555794547807895367706660948265502770125758028403138971573035724602805685720723545632988712110504882808298907739906086884010542994687553114287948381552064834376116151436256698225212911397128048385398300152818302406370256191658052684840725502829990562869128665308819028347039926455538394931862770160184714441021020293133341713676103980013136247794772821039683222221765632083275078723713949041970597531101364176606819318431510268976468573781172699507410104142111470680421136792500120822904956269784695036867890334314681671717445733532405892366350757980643846317431424234432373586296547747738801054488773686211737358575462465746204187455185118422001168744259126597378400650165078060387799924535711498000849587136540146994300705617619706868859088312603708370937497704315019126702491487734386341465563662342863258994632491267479319067220502938421735104000205426397758895319372934828977313983564720952232622591399826764903509038893439504424635502388946037764523731463486707980069120681576770365938359337262673661885401445180825563837112128061752580845733747089633326992634431246044272640085620090780461025287025880552903904449912145348621380348106539471860871754040011663599329150633652618732989362141894762327738235160638860843749391248598582426501242146150693037432108183640997512243927419580311225870040524317236140759209960654118387714092048299294924777645882478978543740646919468666267319453328691565932818168428734597700064990304043050840889400731478543210779140248088804887606364895315955764560617654810210771634787134469704153185702721617420030148862975915264778249976140737511452146443124246533186259896143508803052247894217460442201677013571376363276564162058454791514329540480971660998486073026970461177437632079576890634778791517940599002024552980186062069631332156682337473761144757656287953550203131048507601391226411829251085975278398491360510995506953183668920183966685245988457836354890537881402481081482893407506476860737356959502654731397385147209718059124074179035529121726991159923200270156525241903668361141784074675760793176041596652092953117487887115982311139405726978480295415214552980797677234317698104233105723868101162828721737447814335534574364252992577626861165364756221881797372518633798091066082435336403669570287851371082030814643596590472621641030531918808211171050234690392854448645170248003102859250000") 7 + e = 65537 8 + c = int("1006624791493872428156013132059185769577908890685123588860265413284478464254081606554860552210162863617331555371407971112094881854682477696890143480660423446044879444417008769393551070479173256026444705522057313119317241134128056357856043702961942412317803244514905039381718005782757349223826371540863367884775322082571267626664637500353551029720919459564387412660827208292073532971906715818309760944558550028133605741467426684234633972800537234131209999677914376654373116301044586417380632098476979662901970486535512852275787807129053088109817051758957834342989399592121031376276455845110587077114823835770421749166841305733752044998141378948381464573574560515067220937615508014293148511132957173450923901104844962138071222321820132628437648595228819330349109864446780227763426619303986119229621458207511566668158113715592217919871458036544480027682786078776299592553428087955730410568687275539001478443127352388636719649371746991122841977313995301415814024795136453165946378547065993744458062283486073631304755589979680730794020405323329572961253293360513577338700402651103937763697025892349782709902651770736554098240800500905352177960476592380369757239571883253918139455129374959646800171920297714760947729609320603546587712893608811362635798112501347980735882977738892418203192714895095519940298016722620347929443068372813626511662321887474180748198509299589935045699388809030159788261027807313438412841025239120319789278300516865858359230937403655095545329741087715157395889411181656651431755356910802969116255660852026337232679971520612901985681150276612893468647847587680964094708278602943783754648995818234717511489996143840093503781390350945079961559647051120428390455592205721145790870564395659275761821735768348924691948924001584139013711717688721975276464445626460541472341584910015010294143221065039454929377920080964431493187025998698909062992018091025228637414578641083916317310127675988536433848182962264124689344803104794244977847730417665697613020580762276541180971639068306892008943748634947095804119231041511841161479207569737310938418455233204854211483863685429302869985400525105382306880318651887244853417524930678891244022252161339631314110650641551571747024730760363332459523871513220109586935132987835373286917661742301433236538485386215340959957194127460536298034016006134576599342774727510302306416124407356913070780661214510985298250048979789686131767482733919681070659684053736571095855834449965474750177878817656873656038737978064455651478016298030019265498584151329188704586240839041740808954415008339104552984969183387391975456318773864286787943031697213698996686946255718107336538134926303263597905318748419638890179539866151284431768322967558139969106836646864556735333036359093383385959996772752989168252014861238699338662994031669081399864374189877145752269437866314973447041167696543603845305033030714223885878865956724181394844676959585621512069847970955085021589628226610853109174370995911017065603884114070642701735919588167686139654362927933822938764802556055195568144057238705624269185944850716827815554482849355496624961694074052845915719970017838529897878451863537557483363155373695535010460614331502651047864280269291926105518969254360574019457618325324082957037366298643610879096374226875910736589808410833279550396688820112283278208192991766623258627578107830413797764710756715821439048302883130479030406039841125110866364087037092015956975765428225817051792222804866800514366895524551288821443922687782466711259163390753629516336747278600690220615246778329521485601887038323999632165619512484034270407598276771121269934821431430437751648524773488609977866454583501659378004048126708051934746811216528607605028495167001434044862816418060096489517127198528350180417612314639917948400514051465212264142225429422722794174197508664645132263432630798277466878138853812019581873744554476068771729959532923958292171564541468330490903970968262341611203482886526713457747342028423402540955860518912987342766394604241558554587187353160264098489837231496398170333459351127747345598896769081384584750430787836162551966994024722915321926840046946020177323250760936043053489784314710450045451400762557398691999969341391393667389764442133223968166420049321213369846281125972240109111927147479718196686775120968421731108267716504745749378607555160261913878972583437778409498078989352239814566971242742322579712446494860316601866751613941041827582079819595283367380330325548333015225385899095588166546738126699274135900008035777385020676563990834349232478916414853491568719444728035175916532996340297113692229019744894058969659382966820585926314563300800010086673046048874454860811145174154648865245690685938795590645994627666499023763011229154846306115598926149462227441554939820818508788777720370390824600073699685626392863302263500449059401165519243659474462247408799410026810438586759098812732411632772090332727345225549303454806184596881818414587804540759689170633889674995333226769497114494058588499691691065203524494128977027892609849802035234747074885030411841630615900522898984642948949181689470204596007143211275742464512506843889642600891097868562702744643405087386398328865820103876272587774375387015341065359130872818632759717848940107656765204322687313649525128470167246554491048891165634572344021214815159719241398084512753372214338006468069715823289367786004767028451422319583347230601902836402419482529964001695177744851966732250172653996454063182619802500001204199261556722125827672017589040667096105930732416489917034594598879454961594924688367124617812256762524631356182661634533531847507911310449089359427390844904145102779246503313737115696547458402528704634576385425637883925074328602417237203731223574073513231367722733229") 9 + primes = [x for x in range(2026) if isPrime(x)] 10 + phi = 1 11 + n_orig = n 12 + 13 + for p in primes: 14 + if n % p == 0: 15 + phi *= p - 1 16 + n //= p 17 + 18 + while n % p == 0: 19 + phi *= p 20 + n //= p 21 + 22 + d = pow(e, -1, phi) 23 + m = pow(c, d, n_orig) 24 + flag = long_to_bytes(m).decode() 25 + 26 + print(flag)
+44
alpacahack/daily/rsa2026/uv.lock
··· 1 + version = 1 2 + revision = 3 3 + requires-python = ">=3.13" 4 + 5 + [[package]] 6 + name = "pycryptodome" 7 + version = "3.23.0" 8 + source = { registry = "https://pypi.org/simple" } 9 + sdist = { url = "https://files.pythonhosted.org/packages/8e/a6/8452177684d5e906854776276ddd34eca30d1b1e15aa1ee9cefc289a33f5/pycryptodome-3.23.0.tar.gz", hash = "sha256:447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef", size = 4921276, upload-time = "2025-05-17T17:21:45.242Z" } 10 + wheels = [ 11 + { url = "https://files.pythonhosted.org/packages/04/5d/bdb09489b63cd34a976cc9e2a8d938114f7a53a74d3dd4f125ffa49dce82/pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0011f7f00cdb74879142011f95133274741778abba114ceca229adbf8e62c3e4", size = 2495152, upload-time = "2025-05-17T17:20:20.833Z" }, 12 + { url = "https://files.pythonhosted.org/packages/a7/ce/7840250ed4cc0039c433cd41715536f926d6e86ce84e904068eb3244b6a6/pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:90460fc9e088ce095f9ee8356722d4f10f86e5be06e2354230a9880b9c549aae", size = 1639348, upload-time = "2025-05-17T17:20:23.171Z" }, 13 + { url = "https://files.pythonhosted.org/packages/ee/f0/991da24c55c1f688d6a3b5a11940567353f74590734ee4a64294834ae472/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4764e64b269fc83b00f682c47443c2e6e85b18273712b98aa43bcb77f8570477", size = 2184033, upload-time = "2025-05-17T17:20:25.424Z" }, 14 + { url = "https://files.pythonhosted.org/packages/54/16/0e11882deddf00f68b68dd4e8e442ddc30641f31afeb2bc25588124ac8de/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb8f24adb74984aa0e5d07a2368ad95276cf38051fe2dc6605cbcf482e04f2a7", size = 2270142, upload-time = "2025-05-17T17:20:27.808Z" }, 15 + { url = "https://files.pythonhosted.org/packages/d5/fc/4347fea23a3f95ffb931f383ff28b3f7b1fe868739182cb76718c0da86a1/pycryptodome-3.23.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d97618c9c6684a97ef7637ba43bdf6663a2e2e77efe0f863cce97a76af396446", size = 2309384, upload-time = "2025-05-17T17:20:30.765Z" }, 16 + { url = "https://files.pythonhosted.org/packages/6e/d9/c5261780b69ce66d8cfab25d2797bd6e82ba0241804694cd48be41add5eb/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a53a4fe5cb075075d515797d6ce2f56772ea7e6a1e5e4b96cf78a14bac3d265", size = 2183237, upload-time = "2025-05-17T17:20:33.736Z" }, 17 + { url = "https://files.pythonhosted.org/packages/5a/6f/3af2ffedd5cfa08c631f89452c6648c4d779e7772dfc388c77c920ca6bbf/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:763d1d74f56f031788e5d307029caef067febf890cd1f8bf61183ae142f1a77b", size = 2343898, upload-time = "2025-05-17T17:20:36.086Z" }, 18 + { url = "https://files.pythonhosted.org/packages/9a/dc/9060d807039ee5de6e2f260f72f3d70ac213993a804f5e67e0a73a56dd2f/pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:954af0e2bd7cea83ce72243b14e4fb518b18f0c1649b576d114973e2073b273d", size = 2269197, upload-time = "2025-05-17T17:20:38.414Z" }, 19 + { url = "https://files.pythonhosted.org/packages/f9/34/e6c8ca177cb29dcc4967fef73f5de445912f93bd0343c9c33c8e5bf8cde8/pycryptodome-3.23.0-cp313-cp313t-win32.whl", hash = "sha256:257bb3572c63ad8ba40b89f6fc9d63a2a628e9f9708d31ee26560925ebe0210a", size = 1768600, upload-time = "2025-05-17T17:20:40.688Z" }, 20 + { url = "https://files.pythonhosted.org/packages/e4/1d/89756b8d7ff623ad0160f4539da571d1f594d21ee6d68be130a6eccb39a4/pycryptodome-3.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6501790c5b62a29fcb227bd6b62012181d886a767ce9ed03b303d1f22eb5c625", size = 1799740, upload-time = "2025-05-17T17:20:42.413Z" }, 21 + { url = "https://files.pythonhosted.org/packages/5d/61/35a64f0feaea9fd07f0d91209e7be91726eb48c0f1bfc6720647194071e4/pycryptodome-3.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9a77627a330ab23ca43b48b130e202582e91cc69619947840ea4d2d1be21eb39", size = 1703685, upload-time = "2025-05-17T17:20:44.388Z" }, 22 + { url = "https://files.pythonhosted.org/packages/db/6c/a1f71542c969912bb0e106f64f60a56cc1f0fabecf9396f45accbe63fa68/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27", size = 2495627, upload-time = "2025-05-17T17:20:47.139Z" }, 23 + { url = "https://files.pythonhosted.org/packages/6e/4e/a066527e079fc5002390c8acdd3aca431e6ea0a50ffd7201551175b47323/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cfb5cd445280c5b0a4e6187a7ce8de5a07b5f3f897f235caa11f1f435f182843", size = 1640362, upload-time = "2025-05-17T17:20:50.392Z" }, 24 + { url = "https://files.pythonhosted.org/packages/50/52/adaf4c8c100a8c49d2bd058e5b551f73dfd8cb89eb4911e25a0c469b6b4e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67bd81fcbe34f43ad9422ee8fd4843c8e7198dd88dd3d40e6de42ee65fbe1490", size = 2182625, upload-time = "2025-05-17T17:20:52.866Z" }, 25 + { url = "https://files.pythonhosted.org/packages/5f/e9/a09476d436d0ff1402ac3867d933c61805ec2326c6ea557aeeac3825604e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8987bd3307a39bc03df5c8e0e3d8be0c4c3518b7f044b0f4c15d1aa78f52575", size = 2268954, upload-time = "2025-05-17T17:20:55.027Z" }, 26 + { url = "https://files.pythonhosted.org/packages/f9/c5/ffe6474e0c551d54cab931918127c46d70cab8f114e0c2b5a3c071c2f484/pycryptodome-3.23.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa0698f65e5b570426fc31b8162ed4603b0c2841cbb9088e2b01641e3065915b", size = 2308534, upload-time = "2025-05-17T17:20:57.279Z" }, 27 + { url = "https://files.pythonhosted.org/packages/18/28/e199677fc15ecf43010f2463fde4c1a53015d1fe95fb03bca2890836603a/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:53ecbafc2b55353edcebd64bf5da94a2a2cdf5090a6915bcca6eca6cc452585a", size = 2181853, upload-time = "2025-05-17T17:20:59.322Z" }, 28 + { url = "https://files.pythonhosted.org/packages/ce/ea/4fdb09f2165ce1365c9eaefef36625583371ee514db58dc9b65d3a255c4c/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:156df9667ad9f2ad26255926524e1c136d6664b741547deb0a86a9acf5ea631f", size = 2342465, upload-time = "2025-05-17T17:21:03.83Z" }, 29 + { url = "https://files.pythonhosted.org/packages/22/82/6edc3fc42fe9284aead511394bac167693fb2b0e0395b28b8bedaa07ef04/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:dea827b4d55ee390dc89b2afe5927d4308a8b538ae91d9c6f7a5090f397af1aa", size = 2267414, upload-time = "2025-05-17T17:21:06.72Z" }, 30 + { url = "https://files.pythonhosted.org/packages/59/fe/aae679b64363eb78326c7fdc9d06ec3de18bac68be4b612fc1fe8902693c/pycryptodome-3.23.0-cp37-abi3-win32.whl", hash = "sha256:507dbead45474b62b2bbe318eb1c4c8ee641077532067fec9c1aa82c31f84886", size = 1768484, upload-time = "2025-05-17T17:21:08.535Z" }, 31 + { url = "https://files.pythonhosted.org/packages/54/2f/e97a1b8294db0daaa87012c24a7bb714147c7ade7656973fd6c736b484ff/pycryptodome-3.23.0-cp37-abi3-win_amd64.whl", hash = "sha256:c75b52aacc6c0c260f204cbdd834f76edc9fb0d8e0da9fbf8352ef58202564e2", size = 1799636, upload-time = "2025-05-17T17:21:10.393Z" }, 32 + { url = "https://files.pythonhosted.org/packages/18/3d/f9441a0d798bf2b1e645adc3265e55706aead1255ccdad3856dbdcffec14/pycryptodome-3.23.0-cp37-abi3-win_arm64.whl", hash = "sha256:11eeeb6917903876f134b56ba11abe95c0b0fd5e3330def218083c7d98bbcb3c", size = 1703675, upload-time = "2025-05-17T17:21:13.146Z" }, 33 + ] 34 + 35 + [[package]] 36 + name = "rsa2026" 37 + version = "0.1.0" 38 + source = { virtual = "." } 39 + dependencies = [ 40 + { name = "pycryptodome" }, 41 + ] 42 + 43 + [package.metadata] 44 + requires-dist = [{ name = "pycryptodome", specifier = ">=3.23.0" }]