强网杯2022·Crypto_强网杯 2022 密码题-程序员宅基地

技术标签: Crypto  

前言:改于赵总wp,出了4道密码题(mxx307yyds),还有两道关于格的,,,不太会 等复现吧

欢迎师傅来玩博客

crypto-polydiv

题目

  • 题目描述

    多项式乘法,已知a(x)*b(x)+c(x)=r(x)a(x),c(x),r(x)求`b(x)

    可以直接在sage上跑

exp

from pwn import *
import string
import hashlib
table = string.ascii_letters + string.digits
re = remote('182.92.222.142',45390)

re.recvuntil(b'sha256(XXXX+')
x = re.recv(16)
re.recvuntil(b') == ')
y = re.recv(64)

flag = 0
for a in table:
    if flag:break
    for b in table:
        if flag: break
        for c in table:
            if flag: break
            for d in table:
                z = (a + b + c + d).encode()
                if hashlib.sha256(z + x).hexdigest() == y.decode():
                    flag = 1
                    re.recvuntil(b'Give me XXXX: ')
                    re.sendline(z)
                    break

PR.<x> = Zmod(2)[]
for i in range(40):
    re.recvuntil(b'r(x) = ')
    r = eval(re.recvline()[:-1].decode().replace('^','**'))
    re.recvuntil(b'a(x) = ')
    a = eval(re.recvline()[:-1].decode().replace('^','**'))
    re.recvuntil(b'c(x) = ')
    c = eval(re.recvline()[:-1].decode().replace('^','**'))
    re.recvuntil(b'> b(x) = ')
    b = (r - c) // a
    # print(f'r = {r}')
    # print(f'a = {a}')
    # print(f'c = {c}')
    # print(f'(r-c)//a')
    # b = input()
    re.sendline(str(b).encode())
re.interactive()
#flag{6c108498-234f-4626-8319-4aa26dcc1a10}

img

crypto-ASR

题目

from Crypto.Util.number import getPrime
from secret import falg

pad = lambda s:s + bytes([(len(s)-1)%16+1]*((len(s)-1)%16+1))

n = getPrime(128)**2 * getPrime(128)**2 * getPrime(128)**2 * getPrime(128)**2
e = 3

flag = pad(flag)
print(flag)
assert(len(flag) >= 48)
m = int.from_bytes(flag,'big')
c = pow(m,e,n)

print(f'n = {
      n}')
print(f'e = {
      e}')
print(f'c = {
      c}')

'''
n = 8250871280281573979365095715711359115372504458973444367083195431861307534563246537364248104106494598081988216584432003199198805753721448450911308558041115465900179230798939615583517756265557814710419157462721793864532239042758808298575522666358352726060578194045804198551989679722201244547561044646931280001
e = 3
c = 945272793717722090962030960824180726576357481511799904903841312265308706852971155205003971821843069272938250385935597609059700446530436381124650731751982419593070224310399320617914955227288662661442416421725698368791013785074809691867988444306279231013360024747585261790352627234450209996422862329513284149
'''

4个因子,因为都是128位,yafu直接分解 n \sqrt{n} n

img

最后 e = 3 e=3 e=3 φ \varphi φ有公因子9分别来自两个因子;由于 m m m比较小,直接选用另外两个因子做模数就好了

exp

from gmpy2 import *
from Crypto.Util.number import *

e = 3
c = 945272793717722090962030960824180726576357481511799904903841312265308706852971155205003971821843069272938250385935597609059700446530436381124650731751982419593070224310399320617914955227288662661442416421725698368791013785074809691867988444306279231013360024747585261790352627234450209996422862329513284149
n = 8250871280281573979365095715711359115372504458973444367083195431861307534563246537364248104106494598081988216584432003199198805753721448450911308558041115465900179230798939615583517756265557814710419157462721793864532239042758808298575522666358352726060578194045804198551989679722201244547561044646931280001
n1 = iroot(n, 2)[0]

r1, r2, r3, r4 = [225933944608558304529179430753170813347, 218566259296037866647273372633238739089, 223213222467584072959434495118689164399, 260594583349478633632570848336184053653]

phi = r3 * r4 * (r3 - 1) * (r4 - 1)
new_n = (r3 * r4) ** 2
d = invert(e, phi)
m = long_to_bytes(pow(c, d, new_n))
print(m)
# b'flag{Fear_can_hold_you_prisoner_Hope_can_set_you_free}\x06\x06\x06\x06\x06\x06'

crypto-myJWT

题目

使用的是ECDSA,虽然是密码题,但并不是对ECDSA的签名、验证等步骤操作,这些都由java封装好了

所以是java的问题

由于代码中使用的格式是SHA384withECDSAinP1363Format,经过搜索是CVE-2022-21449,发现竟然是java没有判断 ( r , s ) (r,s) (r,s)是否等于0。。。

exp

这里如何实现将 r , s r,s r,s都赋值为0?我是直接穿了0的base64编码但是不对,,,看CVE的demo是直接喂\x00的base64编码,不懂为什么,还没深究

from base64 import *
from pwn import *

io = remote('47.104.76.78', 23334)

fake_sig = b'\x00\x00'
name = b'4xwi11'
io.sendlineafter(b'your name:', name)
io.sendlineafter(b'>', b'1')
token = io.recvline().decode()[:-1]
head, payload, _ = token.split('.')
payload = b64decode(payload).replace(b'false', b'true')
io.sendlineafter(b'>', b'2')
payload_x = head.encode() + b'.' + b64encode(payload) + b'.' + b64encode(fake_sig)
io.sendline(payload_x)
print(io.recvline()[:-1])
# b'your token:flag{cve-2022-21449_Secur1ty_0f_c0de_1mplementation}'

crypto-Factor

题目

#encoding:utf-8
from Crypto.Util.number import *
from gmpy2 import *
from random import randint
from flag import flag

def gen1():
	r = 2
	while True:
		p2 = getPrime(1792)
		p1 = getPrime(1792)

		q1 = getPrime(512)
		q2 = getPrime(512)

		if (abs(p1-p2) < (p1//(2*r*q1*q2))):
			n1, n2 = (p1**r)*q1, (p2**r)*q2
			break

	phi1 = (p1**(r-1))*(p1-1)*(q1-1)
	phi2 = (p2**(r-1))*(p2-1)*(q2-1)
	while True:
		e1 = randint(5, (p1-1)*(q1-1))
		e2 = randint(5, (p2-1)*(q2-1))
		if gcd(e1, e2) == 1 and gcd(phi1, e1) == 1 and gcd(phi2, e2) == 1:
			break
	return n11, n12, e11, e12


def gen2():
	r = 7
	while True:
		p = getPrime(512)
		q =	getPrime(512)
		N = (p**r)*q
		if len(bin(N)) == 4096:
			break

	idx = (r*(r-1)) / ((r+1)*(r+1))
	delta = int(pow(mpz(N), idx))
	phi = (p**(r-1))*(p-1)*(q-1)

	while True:
		d1 = getPrime(int(2048*idx)//2)
		d2 = getPrime(int(2048*idx)//2)
		if abs(d1-d2) < delta:
			m1 = invert(d1, phi)
			m2 = invert(d2, phi)
			break

	e2 = 0x10001
	return n2, e2, m1, m2

def gen3():
	r = 7
	while True:
		p = getPrime(512)
		q =	getPrime(512)
		N = (p**r)*q
		phi = (p**(r-1))*(p-1)*(q-1)

		if len(bin(N))-2 == 4096:
			break

	idx = (r*(r-1)) / ((r+1)*(r+1))
	delta = int(pow(mpz(N), idx))

	while True:
		b = getRandomNBitInteger(int(2048*idx)//2)
		a = getRandomNBitInteger(int(2048*idx)//2)
		if a*b < delta:
			e = invert(a, phi)*b
			return n3, e3, b


n11, n12, e11, e12 = gen1()
print(f"n11={
      n11}\nn12={
      n12}\ne11={
      e11}\ne12={
      e12}\n")
n2, e2, m1, m2 = gen2()
print(f"n2={
      n2}\ne2={
      e2}\n")
n3, e3, b = gen3()
print(f"n3={
      n3}\ne3={
      e3}\n")

m3 = bytes_to_long(flag)
c11 = powmod(m1, e11, n11)
c12 = powmod(m2, e12, n12)
c2 = powmod(b, e2, n2)
c3 = powmod(m3, e3, n3)
print(f"c11={
      c11}\nc12={
      c12}\nc2={
      c2}\nc3={
      c3}\n")
'''
n11=801049932940568005269978912396585741498810389425615966036828877784238116634177290247194019425111606811005728521368879065336038221361037062407029836155148874719789714345603547779284558101833801155509762818376470874215789574939002212274399950433269775325144015468620263028557804618774240232988157961712628677901130814703917513004114547234375629747176834581166306552311075522669403347828095831520693563291249869832390698646691647204371133362254846234990175138047928703289833460734235302093916147489509206061923877623300596194317059884824322527532662470348274079800781120104946546063500763852622187404608639542858285661288293918912184354236687975919510300221932074135531028314170475917110204254042336116619335841213418990605590620842511615815443114612333881430920769002933370887494558640833005339906706603497809846863863967391543647049224309556936909768179259581851520214669904560467640473144481633920438487615788689262961741053146610554997224861331949716721056553499531186695425439163222802917813140266513735841447717418846360096652592844940362932171019143434080184728093326143821165097895058935372215708948088248596585127475770021962501262915274497478428868130455122612016408381607561200802267038869516896665387576895570245272035575637
n12=635401970340205725139325006504978344512744926958688031423448003992072769931808217486709574151492230879374574313457662436423263437792389711379687512056391117410807565492548718691166183372633151644917135272259770997096195518489056319350258673723095417922153182423913759272893696867426193704479752772511081457729513843682588951499551132432923147997238597538055902932123792252593514225328196541483451747314048080824405530742533473914329294346486691684904100406972073037050089861816604505650042953778360621934380815999541183067585498606053857125775979915077329566722531830089714823979965934190338538564188253271016367299890015449611141166780048763403252309160517164569110740561584100839212138661881615351382946813818078899882595313362934594951895560189003438775450675343590147821186953526262224973333962454561275321925151619178204499342339749637758100126893330994252902926509705617882239610380420830791088907378397226817514095468815228186716220057075095711894070032344613244803934541318573847029365563159918970404057137270884587905766828750387753130065274147902379993224780149663600462492281891320702134153853359393588902750423972068679293373333869389393970353760507436913233657422185531482023237384247535554666481760197851108297145147371
e11=1898839980562048754607069073527844852132536432440793106124181406514770178066775988232362054809850074774981836898118651469424148725970708199461113088705044905633592578936333918328544505910996746428679299419879472444790941363558025887620570856598548320246426354974395765243741646121743413447132297230365355148066914830856904433750379114692122900723772114991199979638987571559860550883470977246459523068862898859694461427148626628283198896659337135438506574799585378178678790308410266713256003479022699264568844505977513537013529212961573269494683740987283682608189406719573301573662696753903050991812884192192569737274321828986847640839813424701894578472933385727757445011291134961124822612239865
e12=1262647419018930022617189608995712260095623047273893811529510754596636390255564988827821761126917976430978175522450277907063247981106405519094560616378241247111698915199999363948015703788616554657275147338766805289909261129165025156078136718573006479030827585347458143645738353716189131209398056741864848486818076440355778886993462012533397208330925057305502653219173629466948635110352752162442552541812665607516753186595817376029707777599029040724727499952161261179707271814405907165207904499722122779096230563548011491932378429654764486855147873135769116637484240454596231092684424572258119768093562747249251518965380465994055049411715353547147466711949391814550591591830515262296556050946881

n2=209798341155088334158217087474227805455138848036904381404809759100627849272231840321985747935471287990313456209656625928356468120896887536235496490078123448217785939608443507649096688546074968476040552137270080120417769906047001451239544719039212180059396791491281787790213953488743488306241516010351179070869410418232801398578982244984544906579574766534671056023774009163991804748763929626213884208260660722705479782932001102089367261720194650874553305179520889083170973755913964440175393646890791491057655226024046525748177999422035469428780228224800114202385209306803288475439775037067014297973202621118959024226798935588827359265962780792266516120013602384766460619793738405476219362508944225007365127768741191310079985425349292613888185378948854602285379329682053663283534930182589905986063348509703027498270111412063194971956202729807710253369312175636837558252924035002153389909587349043986253518050303628071319876207392440085675892353421232158925122721273720564784886530611286461575045181073744696415657043278123662980166364494583141297996445429477446442693717498789391918530672770193730629928408766563592081857706608049076318165712479742423149330311238462044666384622153280310696667586565906758451118241914402257039981388209
e2=65537

n3=539779851369541956878655738599584730199799866957191805784596190682932284216781781433367450841202917758999300635019369629627621029957135109806205877317954671312041249493462048283611940752235036153024920172209763260723728345918562258401803973624430150143563078517485996070862532682695228590709019451174548520135142052216785774589096706631010293690859363524584240662502290912412366366114571976050857239915691266377257797199583543940504695517331512813468837128344612227973709974625418257243011036826241599265375741977853552204640800449679679351666009764297016524814036295707311913711955324055690490892097177271718850857268982130811714517356073266905474635370690445031512184247179039751734276906533177939993769044135143389748416635981226449566039039202521305851567296884751935162651063209779647359922622084851547605090230221057349511482738300221222563908357379545905837110168948295030747460300104202323692732549831403834387939156877086852393515817984772384147449841124275061609701453997579569931391166586163299940486204581696722731952467570857217406030804590055255431828403195798003509083922294733709507134156466158642941338493323430671502043066148246348074878064089651235355282144209668143249348243220714471988019011613749340243917652821
e3=8179300978753084587812861894047395225516049110376948812109811319430275614612773726672345893359691900281432484382670047044697374818043512731533402576374645405477207239801498428774783768163880078495448747421425078521981578408638790336528372019271073712013371141939808017049399434858687299480461753638164719404612128939787055797762174745092074547412183349192156638711750872083313795551439465507724807626674514935170104573715458782366469587138508845980490673890245713729782917089910271980557159592807350504157192913530007199510144004848020221181558472160543018733124225266127379373751910439604459368078652499029070936707349862139053913745186413782066470461478961703013591655136140060879250067379283913798867648758171004535775565306842444545755351202796833177560656564652632975685912935281581268141803696686952259539945588609591385807620108279333498170028167338690235117003515264281843953984997958878272347778561933726792473981855755454522886321669676790813189668084373153897754540290867346751033567500922477317530445967753955221454744946208555394588111484610700789566547507402309549957740815535069057837915204852490930168843605732632328017129154852857227895362549146737618906180651623216848500491438142456250653458053922622240299736136335179639180898730269690699965799644757774472147210271111150769048976871249731156387939260749192370361488285775377622944817570292095201906142567403539151179209316853493906909989301225903409448461436855145

c11=18979511327426975645936984732782737165217332092805655747550406443960209507493506811471688957217003792679188427155591583024966608843371190136274378868083075515877811693937328204553788450031542610082653080302874606750443090466407543829279067099563572849101374714795279414177737277837595409805721290786607138569322435729584574023597293220443351227559400618351504654781318871214405850541820427562291662456382362148698864044961814456827646881685994720468255382299912036854657082505810206237294593538092338544641919051145900715456411365065867357857347860000894624247098719102875782712030938806816332901861114078070638796157513248160442185781635520426230183818695937457557248160135402734489627723104008584934936245208116232179751448263136309595931691285743580695792601141363221346329077184688857290503770641398917586422369221744736905117499140140651493031622040723274355292502182795605723573863581253354922291984335841915632076694172921289489383700174864888664946302588049384130628381766560976143458735712162489811693014419190718601945154153130272620025118408017441490090252674737105557818759190934585829634273698371996797545908125156282869589331913665938038870431655063063535672001112420959158339261862052308986374193671007982914711432579
c12=336587005671304527566745948355290412636261748969581976214239578621816863343117433524033533838636941679300497270909696775021031004312477997130741361709262822736904340641138652359632950455651920464042448022467664596484055174270895170499076347333381222768518599018520948098943626229061996126260154604038101543546588917619576702866444998578555907070990331574722135141778182631559802154493815687284077524469331290249057291163803290619701104007028836609832847351748020354798788508790258935718399783002069490123663345156902440501507117289747695510266461539019431610123351176227443612317037899257774045751487135646052309277098939919088029284437221840182769808850184827681307611389353392683707516141736067793897378911235819049432542758429901945202632117089595899280390575706266239252841152490534353760118231918190110043319877744119083811214707593122757409240645257409097436061825613686773916466122693168971062418046703969144004779270391320645495586024342668002497155358623795942692477164489475917351003149045087283510728981096449890130735055015075557614253867698702479920619299919816768972581273507837309179450374634916567083251630203067065663910073926990517108921490442919372774170201239734064819301693527366233007925670043499415100789027665
c2=18352572608055902550350386950073774530453857897248738030380007830701135570310622004368605208336922266513238134127496822199799761713782366178177809597137102612444147565578155260524747439899150012223027218489946124086276814899675563837669559795153349686434242738207425653079514376089070980797596457151965772460109519623572502109592612394316680202287712465721767341302234806130244551387296133051760893033194962691942040228545508895009195291106297581470066545991352668826197346830561010198417527057944507902143965634058848276017283478933675052993657822322866778994956205033704582047618324071045349072526540250707463112668579342537349567247810715604220690215313641329522674080146047291570752430231923566302463491877377617044768978997438596643458475128936850994934029476030136643053997549253792076260765459166618369864942681056864815996253315631930002738854235841120321870075261782250357506436825550088826469396508045912258303652912217151127280959435741419961721418428605515096160344688795655562889755165362006775317188009008288782691705879510655892181975003485714604340542378477388225736316682379616676770234557939471098919647053799313777248678455620231721202780830980063824003076308811540534492317719811588898727134190545533822501681653
c3=113097822337683973761068913398570777162211043704088253732500045618770280334319497174908657828372816818344430304314992760410247741225285170975119344962728883084314382093407445567724674775086423808679124143380073906159023182353116556175251427048715466914368972746661938211846262612414049036821553068430149530397389927209475908905748728402722287875974303298260579839357610962198145974153609818939841880084892796820949226354126424023144300953584658958900737493704530725894948802258740332090822797815745616247879170037794873059391625680745994045522420168248552864215035136318711240256011217929372430302003068882829637056296413462078222453765071094277727760527662423010417144554652783429899139309180017349156600053882338180319473460877576898373222480215735280046214925463242092830060830764299787309912687294672319845054775281463150375545716818434962456139485501224661520991156961587158843064393883274763714930309353593180897123378717852182761518709151878662808890356934477932099818218743384674756674800089177733447066489275506387382342429495897972218764782517198727316942685748481956118012927027254979181519862451112593068440686462293151078537886822555211870303467014484443432209106264020502334805536091587252238173816637270028678636848763

'''

就完全是这篇论文的复现了New attacks on RSA with Moduli N = p^rq[6]

注意第一和第二种攻击中,用CopperSmith解小根就可以得到相应的未知数

exp

from Crypto.Util.number import *
from gmpy2 import *
from sage import *

# solve m1, m2
def solve_m1_m2():
    n11 = 801049932940568005269978912396585741498810389425615966036828877784238116634177290247194019425111606811005728521368879065336038221361037062407029836155148874719789714345603547779284558101833801155509762818376470874215789574939002212274399950433269775325144015468620263028557804618774240232988157961712628677901130814703917513004114547234375629747176834581166306552311075522669403347828095831520693563291249869832390698646691647204371133362254846234990175138047928703289833460734235302093916147489509206061923877623300596194317059884824322527532662470348274079800781120104946546063500763852622187404608639542858285661288293918912184354236687975919510300221932074135531028314170475917110204254042336116619335841213418990605590620842511615815443114612333881430920769002933370887494558640833005339906706603497809846863863967391543647049224309556936909768179259581851520214669904560467640473144481633920438487615788689262961741053146610554997224861331949716721056553499531186695425439163222802917813140266513735841447717418846360096652592844940362932171019143434080184728093326143821165097895058935372215708948088248596585127475770021962501262915274497478428868130455122612016408381607561200802267038869516896665387576895570245272035575637
    n12 = 635401970340205725139325006504978344512744926958688031423448003992072769931808217486709574151492230879374574313457662436423263437792389711379687512056391117410807565492548718691166183372633151644917135272259770997096195518489056319350258673723095417922153182423913759272893696867426193704479752772511081457729513843682588951499551132432923147997238597538055902932123792252593514225328196541483451747314048080824405530742533473914329294346486691684904100406972073037050089861816604505650042953778360621934380815999541183067585498606053857125775979915077329566722531830089714823979965934190338538564188253271016367299890015449611141166780048763403252309160517164569110740561584100839212138661881615351382946813818078899882595313362934594951895560189003438775450675343590147821186953526262224973333962454561275321925151619178204499342339749637758100126893330994252902926509705617882239610380420830791088907378397226817514095468815228186716220057075095711894070032344613244803934541318573847029365563159918970404057137270884587905766828750387753130065274147902379993224780149663600462492281891320702134153853359393588902750423972068679293373333869389393970353760507436913233657422185531482023237384247535554666481760197851108297145147371
    e11 = 1898839980562048754607069073527844852132536432440793106124181406514770178066775988232362054809850074774981836898118651469424148725970708199461113088705044905633592578936333918328544505910996746428679299419879472444790941363558025887620570856598548320246426354974395765243741646121743413447132297230365355148066914830856904433750379114692122900723772114991199979638987571559860550883470977246459523068862898859694461427148626628283198896659337135438506574799585378178678790308410266713256003479022699264568844505977513537013529212961573269494683740987283682608189406719573301573662696753903050991812884192192569737274321828986847640839813424701894578472933385727757445011291134961124822612239865
    e12 = 1262647419018930022617189608995712260095623047273893811529510754596636390255564988827821761126917976430978175522450277907063247981106405519094560616378241247111698915199999363948015703788616554657275147338766805289909261129165025156078136718573006479030827585347458143645738353716189131209398056741864848486818076440355778886993462012533397208330925057305502653219173629466948635110352752162442552541812665607516753186595817376029707777599029040724727499952161261179707271814405907165207904499722122779096230563548011491932378429654764486855147873135769116637484240454596231092684424572258119768093562747249251518965380465994055049411715353547147466711949391814550591591830515262296556050946881
    c11 = 18979511327426975645936984732782737165217332092805655747550406443960209507493506811471688957217003792679188427155591583024966608843371190136274378868083075515877811693937328204553788450031542610082653080302874606750443090466407543829279067099563572849101374714795279414177737277837595409805721290786607138569322435729584574023597293220443351227559400618351504654781318871214405850541820427562291662456382362148698864044961814456827646881685994720468255382299912036854657082505810206237294593538092338544641919051145900715456411365065867357857347860000894624247098719102875782712030938806816332901861114078070638796157513248160442185781635520426230183818695937457557248160135402734489627723104008584934936245208116232179751448263136309595931691285743580695792601141363221346329077184688857290503770641398917586422369221744736905117499140140651493031622040723274355292502182795605723573863581253354922291984335841915632076694172921289489383700174864888664946302588049384130628381766560976143458735712162489811693014419190718601945154153130272620025118408017441490090252674737105557818759190934585829634273698371996797545908125156282869589331913665938038870431655063063535672001112420959158339261862052308986374193671007982914711432579
    c12 = 336587005671304527566745948355290412636261748969581976214239578621816863343117433524033533838636941679300497270909696775021031004312477997130741361709262822736904340641138652359632950455651920464042448022467664596484055174270895170499076347333381222768518599018520948098943626229061996126260154604038101543546588917619576702866444998578555907070990331574722135141778182631559802154493815687284077524469331290249057291163803290619701104007028836609832847351748020354798788508790258935718399783002069490123663345156902440501507117289747695510266461539019431610123351176227443612317037899257774045751487135646052309277098939919088029284437221840182769808850184827681307611389353392683707516141736067793897378911235819049432542758429901945202632117089595899280390575706266239252841152490534353760118231918190110043319877744119083811214707593122757409240645257409097436061825613686773916466122693168971062418046703969144004779270391320645495586024342668002497155358623795942692477164489475917351003149045087283510728981096449890130735055015075557614253867698702479920619299919816768972581273507837309179450374634916567083251630203067065663910073926990517108921490442919372774170201239734064819301693527366233007925670043499415100789027665
    for _ in sub_fraction(n11, n12):
        q11, q12 = _[0], _[1]
        if n11 % q11 == 0 and q12 != 1:
            p11 = iroot(n11 // q11, 2)[0]
            p12 = iroot(n12 // q12, 2)[0]
            assert p11 ** 2 * q11 == n11
            assert p12 ** 2 * q12 == n12
            phi1 = p11 * (p11 - 1) * (q11 - 1)
            phi2 = p12 * (p12 - 1) * (q12 - 1)
            d1 = invert(e11, phi1)
            d2 = invert(e12, phi2)
            return pow(c11, d1, n11), pow(c12, d2, n12)

# solve b
def solve_b():
    n2 = 209798341155088334158217087474227805455138848036904381404809759100627849272231840321985747935471287990313456209656625928356468120896887536235496490078123448217785939608443507649096688546074968476040552137270080120417769906047001451239544719039212180059396791491281787790213953488743488306241516010351179070869410418232801398578982244984544906579574766534671056023774009163991804748763929626213884208260660722705479782932001102089367261720194650874553305179520889083170973755913964440175393646890791491057655226024046525748177999422035469428780228224800114202385209306803288475439775037067014297973202621118959024226798935588827359265962780792266516120013602384766460619793738405476219362508944225007365127768741191310079985425349292613888185378948854602285379329682053663283534930182589905986063348509703027498270111412063194971956202729807710253369312175636837558252924035002153389909587349043986253518050303628071319876207392440085675892353421232158925122721273720564784886530611286461575045181073744696415657043278123662980166364494583141297996445429477446442693717498789391918530672770193730629928408766563592081857706608049076318165712479742423149330311238462044666384622153280310696667586565906758451118241914402257039981388209
    e2 = 65537
    c2 = 18352572608055902550350386950073774530453857897248738030380007830701135570310622004368605208336922266513238134127496822199799761713782366178177809597137102612444147565578155260524747439899150012223027218489946124086276814899675563837669559795153349686434242738207425653079514376089070980797596457151965772460109519623572502109592612394316680202287712465721767341302234806130244551387296133051760893033194962691942040228545508895009195291106297581470066545991352668826197346830561010198417527057944507902143965634058848276017283478933675052993657822322866778994956205033704582047618324071045349072526540250707463112668579342537349567247810715604220690215313641329522674080146047291570752430231923566302463491877377617044768978997438596643458475128936850994934029476030136643053997549253792076260765459166618369864942681056864815996253315631930002738854235841120321870075261782250357506436825550088826469396508045912258303652912217151127280959435741419961721418428605515096160344688795655562889755165362006775317188009008288782691705879510655892181975003485714604340542378477388225736316682379616676770234557939471098919647053799313777248678455620231721202780830980063824003076308811540534492317719811588898727134190545533822501681653
    m1, m2 = solve_m1_m2()
    PR.<x> = PolynomialRing(Zmod(n2))
    f = m1 * m2 * x - (m2 - m1)
    f = f.monic()
    root = int(f.small_roots(X=2 ^ 1000, beta=0.75)[0])
    p2 = gcd(int(f(root)), n2)
    p2 = iroot(p2, 6)[0]
    q2 = n2 // (p2 ** 7)
    phi2 = p2 ** 6 * (p2 - 1) * (q2 - 1)
    d2 = invert(e2, phi2)
    return pow(c2, d2, n2)

# solve flag
n3 = 539779851369541956878655738599584730199799866957191805784596190682932284216781781433367450841202917758999300635019369629627621029957135109806205877317954671312041249493462048283611940752235036153024920172209763260723728345918562258401803973624430150143563078517485996070862532682695228590709019451174548520135142052216785774589096706631010293690859363524584240662502290912412366366114571976050857239915691266377257797199583543940504695517331512813468837128344612227973709974625418257243011036826241599265375741977853552204640800449679679351666009764297016524814036295707311913711955324055690490892097177271718850857268982130811714517356073266905474635370690445031512184247179039751734276906533177939993769044135143389748416635981226449566039039202521305851567296884751935162651063209779647359922622084851547605090230221057349511482738300221222563908357379545905837110168948295030747460300104202323692732549831403834387939156877086852393515817984772384147449841124275061609701453997579569931391166586163299940486204581696722731952467570857217406030804590055255431828403195798003509083922294733709507134156466158642941338493323430671502043066148246348074878064089651235355282144209668143249348243220714471988019011613749340243917652821
e3 = 8179300978753084587812861894047395225516049110376948812109811319430275614612773726672345893359691900281432484382670047044697374818043512731533402576374645405477207239801498428774783768163880078495448747421425078521981578408638790336528372019271073712013371141939808017049399434858687299480461753638164719404612128939787055797762174745092074547412183349192156638711750872083313795551439465507724807626674514935170104573715458782366469587138508845980490673890245713729782917089910271980557159592807350504157192913530007199510144004848020221181558472160543018733124225266127379373751910439604459368078652499029070936707349862139053913745186413782066470461478961703013591655136140060879250067379283913798867648758171004535775565306842444545755351202796833177560656564652632975685912935281581268141803696686952259539945588609591385807620108279333498170028167338690235117003515264281843953984997958878272347778561933726792473981855755454522886321669676790813189668084373153897754540290867346751033567500922477317530445967753955221454744946208555394588111484610700789566547507402309549957740815535069057837915204852490930168843605732632328017129154852857227895362549146737618906180651623216848500491438142456250653458053922622240299736136335179639180898730269690699965799644757774472147210271111150769048976871249731156387939260749192370361488285775377622944817570292095201906142567403539151179209316853493906909989301225903409448461436855145
c3 = 113097822337683973761068913398570777162211043704088253732500045618770280334319497174908657828372816818344430304314992760410247741225285170975119344962728883084314382093407445567724674775086423808679124143380073906159023182353116556175251427048715466914368972746661938211846262612414049036821553068430149530397389927209475908905748728402722287875974303298260579839357610962198145974153609818939841880084892796820949226354126424023144300953584658958900737493704530725894948802258740332090822797815745616247879170037794873059391625680745994045522420168248552864215035136318711240256011217929372430302003068882829637056296413462078222453765071094277727760527662423010417144554652783429899139309180017349156600053882338180319473460877576898373222480215735280046214925463242092830060830764299787309912687294672319845054775281463150375545716818434962456139485501224661520991156961587158843064393883274763714930309353593180897123378717852182761518709151878662808890356934477932099818218743384674756674800089177733447066489275506387382342429495897972218764782517198727316942685748481956118012927027254979181519862451112593068440686462293151078537886822555211870303467014484443432209106264020502334805536091587252238173816637270028678636848763
b = solve_b()
PR.<x> = PolynomialRing(Zmod(n3))
f = e3 * x - int(b)
f = f.monic()
root = int(f.small_roots(X=2 ^ 675, beta=0.75)[0])
p3 = gcd(int(f(root)), n3)
p3 = iroot(p3, 6)[0]
q3 = n3 // p3 ** 7
phi3 = p3 ** 6 * (p3 - 1) * (q3 - 1)
d3 = invert(e3, phi3)
m = pow(c3, d3, n3)
print(long_to_bytes(m))
# qwb{8633ce6d-fece-4cf1-8f0f-f27e5bf6d678}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/PUTAOAO/article/details/126105717

智能推荐

【Docker实战】批量删除指定名称的容器镜像_docker 删除名字中带有某种字符的镜像-程序员宅基地

文章浏览阅读5.8k次,点赞2次,收藏7次。【场景】在学习docker的时候,经常会编译docker镜像,很多都是基于上一个Dockerfile修改编译而来,因此出现了很多REPOSITORY 和 TAG 为 none 的镜像。每次 docker images 查看镜像,都会列出一长串,有的时候一屏还展示不全,所以就想要删除某些镜像。但是一个一个删又很费时,那就只有批量删除了。【实战】使用 grep 函数查找出所有包含 none 的镜..._docker 删除名字中带有某种字符的镜像

融合3大场景,BeyondCMP多云管理平台4.0最新升级_cmp云管理平台-程序员宅基地

文章浏览阅读676次。 云计算解决方案服务商BoCloud博云正式发布了BeyondCMP多云管理平台4.0版本。该版本将资源纳管、运营维护及运营交付三大场景融合,并对每个版块内容进行了新升级,进一步满足用户需求,提升用户体验。 本次BeyondCMP4.0版本更新重点在以下几方面: 1.资源概览云管平台的资源概览功能以多个视角对平台中的所有的资源进行可视化展示,实时查看云环境下的资源保有、..._cmp云管理平台

java开发_模仿百度文库_OpenOffice2PDF_源码下载_office2pdf.openoffice2pdf-程序员宅基地

文章浏览阅读1.6k次。java开发_模仿百度文库_OpenOffice2PDF_源码下载这几天在研究模仿着做类似于百度文库的东西,在这里给大家分享一下我自己做的东西。由于需要做这样的项目,我查阅了很多资料,最后选定一下方案去做:Txt/Word/Excel/PPT=>PDF(OpenOffice+JodConverter)=>SWF(pdf2swf)=>FlexPaper浏览_office2pdf.openoffice2pdf

面部变形+基于特征的图像变形+field warping-Siggraph 1992_基于路径的图像变形算法-程序员宅基地

文章浏览阅读7.8k次,点赞5次,收藏27次。参考资料国立台湾大学-Image Morphing-Homework图像处理(十)基于特征线的图像变形-Siggraph 1992Face Morphing on Animation Producing-ntu-csie2D Image Morphing Algorithms基于特征的图像变形算法,来源于1992年的一篇论文。它是分别在两幅图像中分别选择相应的特征对(特征线段对),然后根据_基于路径的图像变形算法

JavaSE面试题-程序员宅基地

文章浏览阅读135次。1转载于:https://www.cnblogs.com/wj-gu/p/10575946.html_javase面试题

mac vscode 每次修改文件时提示没有权限问题_failed to save 'index.html': insufficient permissi-程序员宅基地

文章浏览阅读9.2k次。问题:Failed to save 'index.jsx': Insufficient permissions. Select 'Retry as Sudo' to retry as superuser.解决方法:sudo chown -R 当前用户需要操作的文件夹路径 我设置了全部文件 懒得找文件夹去设置了..._failed to save 'index.html': insufficient permissions. select 'retry as admi

随便推点

Java位运算_java 30 位运算拆开-程序员宅基地

文章浏览阅读7.4k次,点赞33次,收藏86次。在位运算前,需要先了解二进制码相关知识,详情请见博主的另一篇博文:原码、反码、补码Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节类型(byte)等类型。Java包含了七种位运算符位运算符说明>>右移运算符,符号左侧数值 按位右移 符号右侧数值指定的位数,若为正数则高位补0,若为负数则高..._java 30 位运算拆开

mysql 5.6建立数据库连接时出错_WordPress定期出现“建立数据库连接时出错”问题的解决方案...-程序员宅基地

文章浏览阅读209次。文章目录[隐藏]起因论证解决方案操作步骤先贴阿里云服务器的配置:这是一个困扰我很久的问题,之前不管是搭在CentOS还是Ubuntu上,Wordpress都会定期出现“建立数据库连接时错误”,最近一周更是每天早上网站都无法访问。通过 netstat -tunlp 发现是MySQL的进程被干掉了,service mysqld restart 还重启不了,简单粗暴点就直接reboot。不过每天早上起床..._mysql5.6 wordpress数据库连接

uni-app如何使用Unipush实现消息推送(在线&离线)-程序员宅基地

文章浏览阅读2w次,点赞8次,收藏69次。一、前期准备 在动手之前建议先看下官方文档:https://ask.dcloud.net.cn/article/id-35622__page-5 首先,在App模块配置勾选如下后,点击配置进入DCloud开发者中心 第一次进来的话,可能会要求填写相应的资料,按步骤填写即可,不做详细介绍二、在线推送 在线推送的话比较简单,坑比较少,很快就能实现 在App.vue中onLaunch生命周期中添加如下代码,其中c..._unipush

usb3.0传输速度测试软件,Win10系统如何测试usb3.0设备传输速度-程序员宅基地

文章浏览阅读3.5k次。现在,很多电脑都带有USB3.0接口,usb3.0设备具备了传输速度快的特点。那么,它到底有多快呢?由于每个USB3.0设备都有芯片好坏之分,所以它们之间是有很大区别的。下面,系统城小编给大家分享下Win10系统中测试usb3.0设备速度的方法。步骤:测试前确保USB3.0接口驱动正常可用win8.1 - 14 、按下“WIn+X”组合键呼出系统快捷菜单,点击“设备管理器”;windows7系统之..._usb传输速度测试工具

12-UE4-控件类型_ue4尺寸框-程序员宅基地

文章浏览阅读1.3k次。UE4-控件类型Time: 2020年10月16日19:55:21Author: YblackdUE4-控件类型1、Common2. Extra3. input4.Optimization5.Panel6. Primitive7. Special Effects8. Uncategorized9. User Created10. 参考1、Common选项说明边框(Border)边框是容器控件,可以包含一个子控件,提供使用边框图像和可调节的填补将其包围起来的机会。._ue4尺寸框

推荐文章

热门文章

相关标签