0%

“近期的一些比赛”

近期的一些比赛的一些题目,VMCTF2024,SEKAICTF2024,京津冀长城杯2024,ByteCTF-2024

ez_RSA

DASCTF 2024金秋十月

一道简单的RSA

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
from Crypto.Util.number import *
from secret import flag

num1 = getPrime(512)
num2 = getPrime(512)
while num1<num2 :
num2 = getPrime(512)
ring = RealField(1050)
num3 = ring(num1) /ring(num2)
print("num3=",num3)
p = getPrime(512)
q = getPrime(512)
n=p*q
e=65537
m = bytes_to_long(flag)
c=pow(m,e,n)

print("n=",n)
print("c=",c)

n2 = getPrime(512) * getPrime(512)
e1 = randint(1000,2000)
e2 = randint(1000,2000)
c1 = pow(p+num1,e1,n2)
c2 = pow(p+num2,e2,n2)

q1 = getPrime(512)
leak1 = pow(q+q1,2024,n)
leak2 = pow(q1+2024,q,n)


print("n2=",n2)
print("e1=",e1)
print("e2=",e2)
print("c1=",c1)
print("c2=",c2)
print("leak1=",leak1)
print("leak2=",leak2)



"""
num3= 1.36557212221826657073387899060669771982679822943621690677450888408226656788387273887547841291114809989272635809810564202247340711087479554863446719786359395466961253205133910506682801159622545780721946115442033391600881399634390008053822158098121985270501317972263356522400827768601773721146954464269212959784543085
n= 85105083975491693151454182116844944807066048677068373328227644321539783064315677834754866742549592569194223084173286381150626593510265361114796714226058887906219454795525438819082646860141163940340082006344850825956811992304447978369108606993344902286569100146695092703383844402883938506877787042873586279543
c= 8090472119640930864901421058741085326954308673260202542020919764880488559370287585797498390920330336595858609617432370825503480936376306766495089200286004922821787548265246289552343468177624634434613746605553770994437785042510225956023382347023663125411103947669109085411939772215657220674436476279268458980
n2= 101642316595332652021348165259853423287787139517550249986161819826180514401858258316466101056877182367161299111697465439636861942636526396547011727147471566130633614685728563576613692851860684686033186826342178072882901576159305747639645374751566751967096281105148714033096611618024355982220235949274576036321
e1= 1630
e2= 1866
c1= 8857135083997055103287497833179378469532619748945804429057682575070405217145941944821968708809563240261403711644389684947851643865895254406194464015430673347359589677809515117412321862622147634752091324365628790687343748145339949310696116239361890881096088375070083053010564890401663562726144984405628773323
c2= 44531030636557714647477473185500183066851251320453194953972504422367649302810396344051696851757189817391648356459225688318373454949578822468293099948132700460437006478679492801335689493431764882835346904225119630026545592437198370606462285405519745361570058335573353886454277790277663038008240372746639859253
leak1= 82301473255013183706458389946960254392188270550712533886416705365418418731488346328643954589202172816597173052792573628245245948345810581701878535280775967863966009605872386693838526935762655380705962833467046779524956212498594045378770790026387120339093736625186401934354434702063802537686761251873173518029
leak2= 43580171648136008789232340619597144591536098696024883687397347933098380327258730482377138309020375265135558484586783368757872008322883985094403855691297725907800406097129735499961231236473313141257901326737291586051506797429883866846199683028143924054925109557329949641367848264351523500925115860458645738192

"""

第一部分参考维纳攻击:

1
num3 = continued_fraction(Integer(e) / Integer(n))

可以通过判断(素数,大小在512 bit)来筛选出分子,分母,也即num1,num2

第二部分e1,e2,比较小,half gcd 来做

exp:

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
from Crypto.Util.number import *
from tqdm import *
import libnum

def HGCD(a, b):
if 2 * b.degree() <= a.degree() or a.degree() == 1:
return 1, 0, 0, 1
m = a.degree() // 2
a_top, a_bot = a.quo_rem(x^m)
b_top, b_bot = b.quo_rem(x^m)
R00, R01, R10, R11 = HGCD(a_top, b_top)
c = R00 * a + R01 * b
d = R10 * a + R11 * b
q, e = c.quo_rem(d)
d_top, d_bot = d.quo_rem(x^(m // 2))
e_top, e_bot = e.quo_rem(x^(m // 2))
S00, S01, S10, S11 = HGCD(d_top, e_top)
RET00 = S01 * R00 + (S00 - q * S01) * R10
RET01 = S01 * R01 + (S00 - q * S01) * R11
RET10 = S11 * R00 + (S10 - q * S11) * R10
RET11 = S11 * R01 + (S10 - q * S11) * R11
return RET00, RET01, RET10, RET11

def GCD(a, b):
q, r = a.quo_rem(b)
if r == 0:
return b
R00, R01, R10, R11 = HGCD(a, b)
c = R00 * a + R01 * b
d = R10 * a + R11 * b
if d == 0:
return c.monic()
q, r = c.quo_rem(d)
if r == 0:
return d
return GCD(d, r)


num3= 1.36557212221826657073387899060669771982679822943621690677450888408226656788387273887547841291114809989272635809810564202247340711087479554863446719786359395466961253205133910506682801159622545780721946115442033391600881399634390008053822158098121985270501317972263356522400827768601773721146954464269212959784543085
n= 85105083975491693151454182116844944807066048677068373328227644321539783064315677834754866742549592569194223084173286381150626593510265361114796714226058887906219454795525438819082646860141163940340082006344850825956811992304447978369108606993344902286569100146695092703383844402883938506877787042873586279543
c= 8090472119640930864901421058741085326954308673260202542020919764880488559370287585797498390920330336595858609617432370825503480936376306766495089200286004922821787548265246289552343468177624634434613746605553770994437785042510225956023382347023663125411103947669109085411939772215657220674436476279268458980
n2= 101642316595332652021348165259853423287787139517550249986161819826180514401858258316466101056877182367161299111697465439636861942636526396547011727147471566130633614685728563576613692851860684686033186826342178072882901576159305747639645374751566751967096281105148714033096611618024355982220235949274576036321
e1= 1630
e2= 1866
e=65537
c1= 8857135083997055103287497833179378469532619748945804429057682575070405217145941944821968708809563240261403711644389684947851643865895254406194464015430673347359589677809515117412321862622147634752091324365628790687343748145339949310696116239361890881096088375070083053010564890401663562726144984405628773323
c2= 44531030636557714647477473185500183066851251320453194953972504422367649302810396344051696851757189817391648356459225688318373454949578822468293099948132700460437006478679492801335689493431764882835346904225119630026545592437198370606462285405519745361570058335573353886454277790277663038008240372746639859253
leak1= 82301473255013183706458389946960254392188270550712533886416705365418418731488346328643954589202172816597173052792573628245245948345810581701878535280775967863966009605872386693838526935762655380705962833467046779524956212498594045378770790026387120339093736625186401934354434702063802537686761251873173518029
leak2= 43580171648136008789232340619597144591536098696024883687397347933098380327258730482377138309020375265135558484586783368757872008322883985094403855691297725907800406097129735499961231236473313141257901326737291586051506797429883866846199683028143924054925109557329949641367848264351523500925115860458645738192

t = continued_fraction(num3)
# print((t))
for i in trange(1000):
num1 = t.numerator(i)
if(isPrime(num1) and num1.bit_length() == 512):
num2 = t.denominator(i)
print(num1)
print(num2)
break


PR.<x> = PolynomialRing(Zmod(n2))
g1 = (x + num1)^e1 - c1
g2 = (x + num2)^e2 - c2
res = GCD(g1,g2)
p = -res.monic().coefficients()[0]

phi = (p-1)
d = libnum.invmod(e,int(phi))
m = pow(c,d,p)
print(libnum.n2s(int(m)))

# DASCTF{c0ngr4tu1ati0n$_0n_$ucccc3$$1ng_1n!}

2024VMCTF

RSA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from Crypto.Util.number import *
from secrets import flag
m = bytes_to_long(flag)
p = getPrime(1024)
q = getPrime(1024)
n = p * q
e = 0x10001

M = matrix(Zmod(n), [
[m, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, m, 2*q-m, m+2*p],
[m+2*p, m-2*q, m, -m-p-q],
[m-2*q, -m-2*p, m+p+q, m]
])

enc = M**e

print(f"n = {n}")
print(f"e = {e}")
print(list(enc))
n=13228298199631335610499409465400552275305629934024756614227830931136508640681372951453757994834844498763877490566164031828108583453919741685657210448857955666192855872103622943922893572765718705893238315297600050789804418329650168680719372191579207505092037294294875908952803670819999025123209403251314588474192758376162806705064430837428828805477906627599506069017651159117664246131790529354533675662936081996490294431369820750274303028529977278828959613343997326534446148884333619071935180484450320323844737055406889458275298296950269660857078186043669204168045730995355857013530919638304423700701901063780318208789
e=65537
enc=[(1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 4956025543963860548224153175168493318238985854531591968596322951867101383038318092494673400475554880419342014784571362229741642826660412082585292197764604908450405263330703286845800303018092222139976907126517882830745820723998293430203137128739850924103620078289772876248014239067659155995114953314111131752812515097213052728067061893768763077056914111566820414025280534046400995356712414837449121046062079911435309295464490263283769221830037029108374974495201782045992874653920211537537724643230986981824349266978767367402293999209162694369772760075107747609491264902786041130826876918123202134703658442941891830242, 7710011511933273600956066580006667228795766247206337007278271463871915295714373557766306241838812677910529618690854981247073325175370147283360553440166198511565970962496527743224575526922830794861623489204146092991883999208502150565496732100104360091815826333424313805145648110936043125983239009895903602879010609096750963186952687545255588633288528372363096307287365891027749166227382683937570696463897150461450791183251190323380329123556440876127657763835466077899344290052877228945633508945118354870143193111572860186690380517929737934424809644493802524411423150714171313957036859668776471063633076408076909640002, 11534398990341303260469847611439061098979668999994719829731530111550470410818410249398161750557290507614569764189238005873703309686837109506327355518339608092717603460229057410906842405901627607535605010996612762231101162949308540690378638599362997229992351236008016988744038581908756449465377928987817065146363195497304246692426541055618255515479438494976345916998240594200316617809496338857712977577830501882906692816143225556486899297950715922558009978599642835535619697869607264637171021550028689009097951803276399427016025503188133689654404551377724037837852806988185689913776323215325531565269517783734339408476), (8272272655667475062275256290232058957066644079493164645631507979269407257643054858959084594359289618344535475781592669598366940627259329603071918251093350757742450608772919657077093269747626483753261408171082167959058597605651875250516235062839356580988417216005103032704789431752339869128094449937203456721380243278949753976997368943660065728420992516032685654992370625071263250775078114517084554616874002085054985135905330486990533806699940249720584638848795544488453274230413407534397455841219333342020387788428122090873004297741106966487305425968561456558554466092569815882704042720181221565998242620838426378547, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 11534398990341303260469847611439061098979668999994719829731530111550470410818410249398161750557290507614569764189238005873703309686837109506327355518339608092717603460229057410906842405901627607535605010996612762231101162949308540690378638599362997229992351236008016988744038581908756449465377928987817065146363195497304246692426541055618255515479438494976345916998240594200316617809496338857712977577830501882906692816143225556486899297950715922558009978599642835535619697869607264637171021550028689009097951803276399427016025503188133689654404551377724037837852806988185689913776323215325531565269517783734339408476, 5518286687698062009543342885393885046509863686818419606949559467264593344966999393687451752996031820853347871875309050581035258278549594402296657008691757154626884909607095200698318045842887911031614826093453957797920419121148018115222640091474847413276210960870562103807155559883955899139970393355410985595182149279411843518111743292173240172189378255236409761730285268089915079904407845416962979199038931535039503248118630426893973904973536402701301849508531248635101858831456390126301671539331965453701543943834029271584917779020531726432268541549866679756622580281184543056494059969527952637068824655703408568787), (5518286687698062009543342885393885046509863686818419606949559467264593344966999393687451752996031820853347871875309050581035258278549594402296657008691757154626884909607095200698318045842887911031614826093453957797920419121148018115222640091474847413276210960870562103807155559883955899139970393355410985595182149279411843518111743292173240172189378255236409761730285268089915079904407845416962979199038931535039503248118630426893973904973536402701301849508531248635101858831456390126301671539331965453701543943834029271584917779020531726432268541549866679756622580281184543056494059969527952637068824655703408568787, 1693899209290032350029561853961491176325960934030036784496300819586038229862962702055596244277553991149307726376926025954405273767082632179329854930518347573475252411874565533016051166864091098357633304300987288558703255380341627990340733592216210275099686058286858920208765088911242575657831474263497523327829562878858560012637889781810573289998468132623160152019410564917347628322294190496820698085105580113583601615226595193787403730579261356270949634744354490998826451014726354434764158934421631314746785252130490031259272793762135971202673634665945166330192924007170167099754596422978892135432383280045978800313, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 4956025543963860548224153175168493318238985854531591968596322951867101383038318092494673400475554880419342014784571362229741642826660412082585292197764604908450405263330703286845800303018092222139976907126517882830745820723998293430203137128739850924103620078289772876248014239067659155995114953314111131752812515097213052728067061893768763077056914111566820414025280534046400995356712414837449121046062079911435309295464490263283769221830037029108374974495201782045992874653920211537537724643230986981824349266978767367402293999209162694369772760075107747609491264902786041130826876918123202134703658442941891830242), (1693899209290032350029561853961491176325960934030036784496300819586038229862962702055596244277553991149307726376926025954405273767082632179329854930518347573475252411874565533016051166864091098357633304300987288558703255380341627990340733592216210275099686058286858920208765088911242575657831474263497523327829562878858560012637889781810573289998468132623160152019410564917347628322294190496820698085105580113583601615226595193787403730579261356270949634744354490998826451014726354434764158934421631314746785252130490031259272793762135971202673634665945166330192924007170167099754596422978892135432383280045978800313, 7710011511933273600956066580006667228795766247206337007278271463871915295714373557766306241838812677910529618690854981247073325175370147283360553440166198511565970962496527743224575526922830794861623489204146092991883999208502150565496732100104360091815826333424313805145648110936043125983239009895903602879010609096750963186952687545255588633288528372363096307287365891027749166227382683937570696463897150461450791183251190323380329123556440876127657763835466077899344290052877228945633508945118354870143193111572860186690380517929737934424809644493802524411423150714171313957036859668776471063633076408076909640002, 8272272655667475062275256290232058957066644079493164645631507979269407257643054858959084594359289618344535475781592669598366940627259329603071918251093350757742450608772919657077093269747626483753261408171082167959058597605651875250516235062839356580988417216005103032704789431752339869128094449937203456721380243278949753976997368943660065728420992516032685654992370625071263250775078114517084554616874002085054985135905330486990533806699940249720584638848795544488453274230413407534397455841219333342020387788428122090873004297741106966487305425968561456558554466092569815882704042720181221565998242620838426378547, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061)]

分析

enc = M**e,矩阵的e次方

这类题目之前见过

多维矩阵下的线性群阶

查:GL(n,Fp)群阶的研究 | Tover’s Blog

正常做法:

1
2
3
4
5
6
7
8
C = Matrix(Zmod(n),c)

order_p = p*(p-1)*(p+1)*(p^2+p+1)
order_q = q*(q-1)*(q+1)*(q^2+q+1)
order = order_p * order_q

d = gmpy2.invert(e,order)
M = C ** d

这里我们并不能分解n,所以并不能这样解


1
2
3
4
5
6
M = matrix(Zmod(n), [
[m, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, m, 2*q-m, m+2*p],
[m+2*p, m-2*q, m, -m-p-q],
[m-2*q, -m-2*p, m+p+q, m]
])

将矩阵M拆成一个反对称矩阵和单位矩阵的和形式:

M = A+mE

1
2
3
4
5
6
A = matrix([
[0, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, 0, 2*q-m, m+2*p],
[m+2*p, m-2*q, 0, -m-p-q],
[m-2*q, -m-2*p, m+p+q, 0]
])

就有 $C=M^e=(A+mE)^e$

按二项式定理展开:

测试发现 A的偶次幂是个对角矩阵,所以说C的非对角线元素都是A的奇次幂贡献的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PR.<m,p,q> = PolynomialRing(ZZ)
M = matrix([
[m, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, m, 2*q-m, m+2*p],
[m+2*p, m-2*q, m, -m-p-q],
[m-2*q, -m-2*p, m+p+q, m]
])

A = matrix([
[0, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, 0, 2*q-m, m+2*p],
[m+2*p, m-2*q, 0, -m-p-q],
[m-2*q, -m-2*p, m+p+q, 0]
])

E = Matrix(ZZ, identity_matrix(4)) # 对角矩阵

print(A^2)
[-3*m^2 - 6*m*p - 5*p^2 + 2*m*q - 2*p*q - 5*q^2 0 0 0]
[ 0 -3*m^2 - 6*m*p - 5*p^2 + 2*m*q - 2*p*q - 5*q^2 0 0]
[ 0 0 -3*m^2 - 6*m*p - 5*p^2 + 2*m*q - 2*p*q - 5*q^2 0]
[ 0 0 0 -3*m^2 - 6*m*p - 5*p^2 + 2*m*q - 2*p*q - 5*q^2]

用A的小数次幂去factor一下非对角线元素的因子,会发现这些和式均有共同因子:

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
PR.<m,p,q> = PolynomialRing(ZZ)
M = matrix([
[m, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, m, 2*q-m, m+2*p],
[m+2*p, m-2*q, m, -m-p-q],
[m-2*q, -m-2*p, m+p+q, m]
])

A = matrix([
[0, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, 0, 2*q-m, m+2*p],
[m+2*p, m-2*q, 0, -m-p-q],
[m-2*q, -m-2*p, m+p+q, 0]
])

E = Matrix(ZZ, identity_matrix(4))

print(factor((A^1)[1,0]))
print(factor((A^3)[1,0]))
print(factor((A^5)[1,0]))
print(factor((A^7)[1,0]))
m + p + q
(-1) * (m + p + q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)
(m + p + q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)^2
(-1) * (m + p + q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)^3

我们再看非对角线元素其他位置上的关系:

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
PR.<m,p,q> = PolynomialRing(ZZ)
M = matrix([
[m, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, m, 2*q-m, m+2*p],
[m+2*p, m-2*q, m, -m-p-q],
[m-2*q, -m-2*p, m+p+q, m]
])

A = matrix([
[0, -m-p-q, -m-2*p, 2*q-m],
[m+p+q, 0, 2*q-m, m+2*p],
[m+2*p, m-2*q, 0, -m-p-q],
[m-2*q, -m-2*p, m+p+q, 0]
])

E = Matrix(ZZ, identity_matrix(4))


print(factor((A^3)[1,0]))
print(factor((A^3)[2,0]))
print(factor((A^3)[3,0]))
print()
print(factor((A^5)[1,0]))
print(factor((A^5)[2,0]))
print(factor((A^5)[3,0]))

# (-1) * (m + p + q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)
# (-1) * (m + 2*p) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)
# (-1) * (m - 2*q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)

# (m + p + q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)^2
# (m + 2*p) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)^2
# (m - 2*q) * (3*m^2 + 6*m*p + 5*p^2 - 2*m*q + 2*p*q + 5*q^2)^2

所以可以从中提取几组代数关系求解:

1
2
3
(m + 2*p)*enc[1,0] == (m + p + q)*enc[2,0]
(m - 2*q)*enc[1,0] == (m + p + q)*enc[3,0]
p*q == n

模n下用 Groebner解方程

exp:

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
from Crypto.Util.number import *

n = 13228298199631335610499409465400552275305629934024756614227830931136508640681372951453757994834844498763877490566164031828108583453919741685657210448857955666192855872103622943922893572765718705893238315297600050789804418329650168680719372191579207505092037294294875908952803670819999025123209403251314588474192758376162806705064430837428828805477906627599506069017651159117664246131790529354533675662936081996490294431369820750274303028529977278828959613343997326534446148884333619071935180484450320323844737055406889458275298296950269660857078186043669204168045730995355857013530919638304423700701901063780318208789
e = 65537
enc = [(1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 4956025543963860548224153175168493318238985854531591968596322951867101383038318092494673400475554880419342014784571362229741642826660412082585292197764604908450405263330703286845800303018092222139976907126517882830745820723998293430203137128739850924103620078289772876248014239067659155995114953314111131752812515097213052728067061893768763077056914111566820414025280534046400995356712414837449121046062079911435309295464490263283769221830037029108374974495201782045992874653920211537537724643230986981824349266978767367402293999209162694369772760075107747609491264902786041130826876918123202134703658442941891830242, 7710011511933273600956066580006667228795766247206337007278271463871915295714373557766306241838812677910529618690854981247073325175370147283360553440166198511565970962496527743224575526922830794861623489204146092991883999208502150565496732100104360091815826333424313805145648110936043125983239009895903602879010609096750963186952687545255588633288528372363096307287365891027749166227382683937570696463897150461450791183251190323380329123556440876127657763835466077899344290052877228945633508945118354870143193111572860186690380517929737934424809644493802524411423150714171313957036859668776471063633076408076909640002, 11534398990341303260469847611439061098979668999994719829731530111550470410818410249398161750557290507614569764189238005873703309686837109506327355518339608092717603460229057410906842405901627607535605010996612762231101162949308540690378638599362997229992351236008016988744038581908756449465377928987817065146363195497304246692426541055618255515479438494976345916998240594200316617809496338857712977577830501882906692816143225556486899297950715922558009978599642835535619697869607264637171021550028689009097951803276399427016025503188133689654404551377724037837852806988185689913776323215325531565269517783734339408476), (8272272655667475062275256290232058957066644079493164645631507979269407257643054858959084594359289618344535475781592669598366940627259329603071918251093350757742450608772919657077093269747626483753261408171082167959058597605651875250516235062839356580988417216005103032704789431752339869128094449937203456721380243278949753976997368943660065728420992516032685654992370625071263250775078114517084554616874002085054985135905330486990533806699940249720584638848795544488453274230413407534397455841219333342020387788428122090873004297741106966487305425968561456558554466092569815882704042720181221565998242620838426378547, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 11534398990341303260469847611439061098979668999994719829731530111550470410818410249398161750557290507614569764189238005873703309686837109506327355518339608092717603460229057410906842405901627607535605010996612762231101162949308540690378638599362997229992351236008016988744038581908756449465377928987817065146363195497304246692426541055618255515479438494976345916998240594200316617809496338857712977577830501882906692816143225556486899297950715922558009978599642835535619697869607264637171021550028689009097951803276399427016025503188133689654404551377724037837852806988185689913776323215325531565269517783734339408476, 5518286687698062009543342885393885046509863686818419606949559467264593344966999393687451752996031820853347871875309050581035258278549594402296657008691757154626884909607095200698318045842887911031614826093453957797920419121148018115222640091474847413276210960870562103807155559883955899139970393355410985595182149279411843518111743292173240172189378255236409761730285268089915079904407845416962979199038931535039503248118630426893973904973536402701301849508531248635101858831456390126301671539331965453701543943834029271584917779020531726432268541549866679756622580281184543056494059969527952637068824655703408568787), (5518286687698062009543342885393885046509863686818419606949559467264593344966999393687451752996031820853347871875309050581035258278549594402296657008691757154626884909607095200698318045842887911031614826093453957797920419121148018115222640091474847413276210960870562103807155559883955899139970393355410985595182149279411843518111743292173240172189378255236409761730285268089915079904407845416962979199038931535039503248118630426893973904973536402701301849508531248635101858831456390126301671539331965453701543943834029271584917779020531726432268541549866679756622580281184543056494059969527952637068824655703408568787, 1693899209290032350029561853961491176325960934030036784496300819586038229862962702055596244277553991149307726376926025954405273767082632179329854930518347573475252411874565533016051166864091098357633304300987288558703255380341627990340733592216210275099686058286858920208765088911242575657831474263497523327829562878858560012637889781810573289998468132623160152019410564917347628322294190496820698085105580113583601615226595193787403730579261356270949634744354490998826451014726354434764158934421631314746785252130490031259272793762135971202673634665945166330192924007170167099754596422978892135432383280045978800313, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061, 4956025543963860548224153175168493318238985854531591968596322951867101383038318092494673400475554880419342014784571362229741642826660412082585292197764604908450405263330703286845800303018092222139976907126517882830745820723998293430203137128739850924103620078289772876248014239067659155995114953314111131752812515097213052728067061893768763077056914111566820414025280534046400995356712414837449121046062079911435309295464490263283769221830037029108374974495201782045992874653920211537537724643230986981824349266978767367402293999209162694369772760075107747609491264902786041130826876918123202134703658442941891830242), (1693899209290032350029561853961491176325960934030036784496300819586038229862962702055596244277553991149307726376926025954405273767082632179329854930518347573475252411874565533016051166864091098357633304300987288558703255380341627990340733592216210275099686058286858920208765088911242575657831474263497523327829562878858560012637889781810573289998468132623160152019410564917347628322294190496820698085105580113583601615226595193787403730579261356270949634744354490998826451014726354434764158934421631314746785252130490031259272793762135971202673634665945166330192924007170167099754596422978892135432383280045978800313, 7710011511933273600956066580006667228795766247206337007278271463871915295714373557766306241838812677910529618690854981247073325175370147283360553440166198511565970962496527743224575526922830794861623489204146092991883999208502150565496732100104360091815826333424313805145648110936043125983239009895903602879010609096750963186952687545255588633288528372363096307287365891027749166227382683937570696463897150461450791183251190323380329123556440876127657763835466077899344290052877228945633508945118354870143193111572860186690380517929737934424809644493802524411423150714171313957036859668776471063633076408076909640002, 8272272655667475062275256290232058957066644079493164645631507979269407257643054858959084594359289618344535475781592669598366940627259329603071918251093350757742450608772919657077093269747626483753261408171082167959058597605651875250516235062839356580988417216005103032704789431752339869128094449937203456721380243278949753976997368943660065728420992516032685654992370625071263250775078114517084554616874002085054985135905330486990533806699940249720584638848795544488453274230413407534397455841219333342020387788428122090873004297741106966487305425968561456558554466092569815882704042720181221565998242620838426378547, 1491873293560323909465836471682585391496137454962536255211620436893391549603126009345148985699013899435764986980919290827837440218992944453711597495517127038406936254470963878149611067609857046502282994346483454884781103538081677117421537728730737422899739818406539050745938770868537148564365984825217449546939297237128543198112642950063626687602582556615437626388875069902892432216468378684299365817407995725759407957747215159745600867120912008194130121350313833434901083388223410629737737418961006112893999319596217781130922876695397872007871395908185274519733474161410964601075476672137735633842608230612826681061)]
enc = Matrix(Zmod(n), enc)

# Groebner
PR.<m,p,q> = PolynomialRing(Zmod(n))
f1 = (m + 2 * p) - (inverse(enc[1,0],n)*enc[2,0])*(m + p + q)
f2 = (m - 2 * q) - (inverse(enc[1,0],n)*enc[3,0])*(m + p + q)
f3 = p*q
res = Ideal([f1,f2,f3]).groebner_basis()
for i in res:
print(i)
# test
q = 98199204383444167136509999317652307746300154257439691314026803510437035509888229764173492052858804263577571331383214859652229706329210472593337809065208882042178413249493877596701444929209070708258353144837330382092255133776768117120874000890494449018234172972678168219613884207547781528635959091301251971281
p = n // q
assert p*q == n

PR.<m> = PolynomialRing(Zmod(n))
f = (m + 2 * p) - (inverse(enc[1,0],n)*enc[2,0])*(m + p + q)
# print(f) ##记录一下
a = 3297056809289327500256202079127136134187438944961708132751779704042134248345975436322191479293257096389543469387818190390952261259850867719244868774056284786555129809594382750795637970645528822198427409878547718771238431341613753773735778866319889665322786887273473714741059398430312523411707495791556075878244637630480194633873896328931631465317325085583101546945701547571540285337915330695525854299979138422312974757786532911019780366620715999126086808046470039825598115253747158220517041862628277627457873544852999345612018379688444091864667014856637790925604130983328623143861756949881991846056060324187971651968
b = 1498891588977545370451304005269054204989297955532246655702497171972634294190353786886109979315712227670838063747138944971165078237866699516737057265958406033545290094866918511445027202221306581865115556251808822409761737528633460237914954126481851519653767357154958076960906373574059921391655491951867500826108554012342761055413189807372591262833424798009944360120455674246600349563624996782442874590028504156102295527090123626799675614654662807183634567377812300847810842883813710868799454486184658344859843573551816770639242317817513006458632518373823719039586807296528828652532914106040726579904539566401034957917

flag = inverse(a,n) * (-b) %n
print(long_to_bytes(int(flag)))

#WMCTF{QU4t3rni0n_4nd_Matr1x_4r3_4un}

K-Cessation

描述:

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
K-Cessation
ChllengeInfo
misc/crypto 进入无界之界
## 背景:
K-Cessation 密码是一种使用 K 位轮从明文位中挑选下一个密文位的古典密码。
当加密开始时,从轮子的最后一位开始。
当轮子到达终点时,它会从头开始循环。
对于每个明文位,轮子会旋转到轮子中与明文位匹配的下一个位,并将旋转的距离附加到密文中。

因此,如果不知道轮子,就不可能解密密文。
是这样吗?


## 例子:
要使用轮子 1100011011100011100110100011110110010110010100001011111011111010 将“youtu.be/dQw4w9WgXcQ”编码为 64-Cessation:
1. 将明文转换为比特: 01111001 01101111 01110101 01110100 01110101 00101110 01100010 01100101 00101111 01100100 01010001 01110111 0011 0100 01110111 00111001 01010111 01100111 01011000 01100011 01010001
2.从wheel[-1]到轮子中的下一个“0”位,距离为3,当前轮位置为wheel[2]
3.从wheel[2]到轮子中的下一个“1”位,距离为3,当前轮子位置为wheel[5]
4. 重复步骤直到所有位都被编码
5.结果为3312121232111411211311221152515233123332223411313221112161142123243321244111111311111112111131113211132412111212112112321122115251142114213312132313311222111112


## 挑战:
一个野生Flag使用 64-Cessation 密码进行编码。
轮子内容是未知的,它是 64 位长。
密文在 ciphertext.txt 中给出。
该Flag已知是长度超过 64 个字符的 ASCII 字符串。
除此之外,该Flag的任何部分都是未知的,这意味着该Flag不是 WMCTF{} 或 FLAG{} 格式。
提交时,请将Flag改为WMCTF{}格式。
请注意,每个ASCII字节的最高有效位被随机翻转。
您需要从密文中提取Flag并提交。
为了您的方便,flag_hash.txt 中给出了该Flag的盐焗 SHA-256 哈希值。

ChllengeInfo-EN
misc/crypto Enter the realm of no realm
## Background:
K-Cessation cipher is a cipher that uses a K bit wheel to pick the next cipher bit from plaintext bit.
When encryption starts, the wheel starts at the last bit of the wheel.
The wheel loops around when it reaches the end.
For every plaintext bit, the wheel is rotated to the next bit in the wheel that matches the plaintext bit, and the distance rotated is appended to the ciphertext.

Therefore, if the wheel is not known, it is not possible to decrypt the ciphertext.
Or is it?


## Example:
To encode "youtu.be/dQw4w9WgXcQ" in 64-Cessation with the wheel 1100011011100011100110100011110110010110010100001011111011111010:
1. convert the plaintext to bits: 01111001 01101111 01110101 01110100 01110101 00101110 01100010 01100101 00101111 01100100 01010001 01110111 00110100 01110111 00111001 01010111 01100111 01011000 01100011 01010001
2. from wheel[-1] to the next "0" bit in the wheel, distance is 3, the current wheel position is wheel[2]
3. from wheel[2] to the next "1" bit in the wheel, distance is 3, the current wheel position is wheel[5]
4. repeat the steps until all bits is encoded
5. the result is 3312121232111411211311221152515233123332223411313221112161142123243321244111111311111112111131113211132412111212112112321122115251142114213312132313311222111112


## Challenge:
A flag is encoded with 64-Cessation cipher.
The wheel is not known except that it is 64 bits long.
The ciphertext is given in ciphertext.txt.
The flag is only known to be an ASCII string that is longer than 64 characters.
No part of the flag is known, which means the flag is NOT in WMCTF{} or FLAG{} format.
When submitting, please make the flag in WMCTF{} format.
Note that, The most significant bit of each ASCII byte is flipped with a random bit.
You need to extract the flag from the ciphertext and submit it.
For your convenience, a salted sha256 hash of the flag is given in flag_hash.txt.

附件

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
from typing import List,Union,Literal
from Crypto.Util.number import long_to_bytes
import secrets
import random,string,re

class K_Cessation:
'''
## Background:
K-Cessation cipher is a cipher that uses a K bit wheel to pick the next cipher bit from plaintext bit.
When encryption starts, the wheel starts at the last bit of the wheel.
The wheel loops around when it reaches the end.
For every plaintext bit, the wheel is rotated to the next bit in the wheel that matches the plaintext bit, and the distance rotated is appended to the ciphertext.

Therefore, if the wheel is not known, it is not possible to decrypt the ciphertext.
Or is it?


## Example:
To encode "youtu.be/dQw4w9WgXcQ" in 64-Cessation with the wheel 1100011011100011100110100011110110010110010100001011111011111010:
1. convert the plaintext to bits: 01111001 01101111 01110101 01110100 01110101 00101110 01100010 01100101 00101111 01100100 01010001 01110111 00110100 01110111 00111001 01010111 01100111 01011000 01100011 01010001
2. from wheel[-1] to the next "0" bit in the wheel, distance is 3, the current wheel position is wheel[2]
3. from wheel[2] to the next "1" bit in the wheel, distance is 3, the current wheel position is wheel[5]
4. repeat the steps until all bits is encoded
5. the result is 3312121232111411211311221152515233123332223411313221112161142123243321244111111311111112111131113211132412111212112112321122115251142114213312132313311222111112


## Challenge:
A flag is encoded with 64-Cessation cipher.
The wheel is not known.
The ciphertext is given in ciphertext.txt.
The flag is only known to be an ascii string that is longer than 64 characters.
No part of the flag is known, which means the flag is NOT in WMCTF{} or FLAG{} format.
When submitting, please make the flag in WMCTF{} format.
The most significant bit of each byte is flipped with a random bit.
You need to extract the flag from the ciphertext and submit it.
For your convenience, a salted sha256 hash of the flag is given in flag_hash.txt.

'''

def __is_valid_wheel(self):
hasZero = False
hasOne = False
for i in self.wheel:
if not isinstance(i,int):
raise ValueError("Wheel must be a list of int")
if i == 0:
hasZero = True
elif i == 1:
hasOne = True
if i > 1 or i < 0:
raise ValueError("Wheel must be a list of 0s and 1s")
if not hasZero or not hasOne:
raise ValueError("Wheel must contain at least one 0 and one 1")

def __init__(self,wheel:List[int]):
self.wheel = wheel
self.__is_valid_wheel()
self.state = -1
self.finalized = False
def __find_next_in_wheel(self,target:Literal[1,0]) -> List[int]:
result = 1
while True:
ptr = self.state + result
ptr = ptr % len(self.wheel)
v = self.wheel[ptr]
if v == target:
self.state = ptr
return [result]
result+=1
def __iter_bits(self,data:bytes):
for b in data:
for i in range(7,-1,-1):
yield (b >> i) & 1
def __check_finalized(self):
if self.finalized:
raise ValueError("This instance has already been finalized")
self.finalized = True
def encrypt(self,data:Union[str,bytes]) -> List[int]:
self.__check_finalized()
if isinstance(data,str):
data = data.encode()
out = []
for bit in self.__iter_bits(data):
rs = self.__find_next_in_wheel(bit)
# print(f"bit={bit},rs={rs},state={self.state}")
out.extend(rs)
return out

def decrypt(self,data:List[int]) -> bytes:
self.__check_finalized()
out = []
for i in data:
assert type(i) == int
self.state = self.state + i
self.state %= len(self.wheel)
out.append(self.wheel[self.state])
long = "".join(map(str,out))
return long_to_bytes(int(long,2))

# generate a random wheel with k bits.
def random_wheel(k=64) -> List[int]:
return [secrets.randbelow(2) for _ in range(k)]

# the most significant bit of each byte is flipped with a random bit.
def encode_ascii_with_random_msb(data:bytes) -> bytes:
out = bytearray()
for b in data:
assert b < 128, "not ascii"
b = b ^ (0b10000000 * secrets.randbelow(2))
out.append(b)
return bytes(out)

# for your convenience, here is the decoding function.
def decode_ascii_with_random_msb(data:bytes) -> bytes:
out = bytearray()
for b in data:
b = b & 0b01111111
out.append(b)
return bytes(out)


if __name__ == "__main__":
try:
from flag import flag
from flag import wheel
except ImportError:
print("flag.py not found, using test flag")
flag = "THIS_IS_TEST_FLAG_WHEN_YOU_HEAR_THE_BUZZER_LOOK_AT_THE_FLAG_BEEEP"
wheel = random_wheel(64)

# wheel is wheel and 64 bits
assert type(wheel) == list and len(wheel) == 64 and all((i in [0,1] for i in wheel))
# flag is flag and string
assert type(flag) == str
# flag is ascii
assert all((ord(c) < 128 for c in flag))
# flag is long
assert len(flag) > 64
# flag does not start with wmctf{ nor does it end with }
assert not flag.lower().startswith("wmctf{") and not flag.endswith("}")
# flag also does not start with flag{
assert not flag.lower().startswith("flag{")

# the most significant bit of each byte is flipped with a random bit.
plaintext = encode_ascii_with_random_msb(flag.encode())

c = K_Cessation(wheel)
ct = c.encrypt(plaintext)
with open("ciphertext.txt","w") as f:
f.write(str(ct))

import hashlib
# for you can verify the correctness of your decryption.
# or you can brute force the flag hash, it is just a >64 length string :)
with open("flag_hash.txt","w") as f:
salt = secrets.token_bytes(16).hex()
h = hashlib.sha256((salt + flag).encode()).hexdigest()
f.write(h + ":" + salt)

# demostration that decryption works
c = K_Cessation(wheel)
pt = c.decrypt(ct)
pt = decode_ascii_with_random_msb(pt)
print(pt)
assert flag.encode() in pt

# d650078ae91d82ebd1d586110960a789c1a15e2cbc053b9daf8d8a4905950720:b840089ce93581869e9c02a7b5aefa7b
# [2, 1, 1, 3, 1, 1, 3, 2, 1, 4, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 3, 1, 6, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 3, 3, 2, 1, 1, 3, 1, 1, 1, 3, 4, 1, 3, 1, 2, 2, 4, 2, 5, 1, 1, 1, 3, 2, 1, 4, 2, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 1, 3, 4, 1, 2, 2, 4, 2, 5, 1, 2, 1, 2, 2, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 4, 3, 1, 2, 1, 3, 1, 3, 3, 2, 1, 3, 1, 6, 2, 1, 1, 2, 1, 2, 1, 3, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 1, 1, 4, 1, 3, 1, 1, 1, 2, 1, 1, 2, 4, 1, 1, 5, 2, 4, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 5, 1, 1, 1, 3, 1, 1, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 1, 2, 1, 1, 4, 3, 1, 3, 4, 1, 1, 1, 2, 1, 3, 1, 6, 1, 2, 1, 1, 3, 2, 3, 1, 2, 2, 1, 3, 2, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 4, 1, 1, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 2, 1, 2, 1, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 1, 4, 2, 4, 2, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 2, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 2, 1, 3, 1, 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 3, 1, 2, 3, 4, 4, 3, 2, 4, 2, 1, 4, 2, 4, 1, 2, 1, 3, 1, 2, 1, 1, 1, 3, 2, 1, 2, 2, 2, 3, 3, 1, 2, 1, 3, 1, 1, 1, 2, 1, 3, 4, 2, 1, 4, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 4, 2, 1, 4, 1, 1, 1, 1, 2, 4, 4, 3, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 3, 1, 1, 1, 2, 1, 3, 1, 4, 1, 2, 4, 1, 2, 3, 4, 1, 3, 1, 1, 1, 2, 4, 1, 1, 1, 4, 1, 1, 4, 2, 1, 4, 2, 2, 1, 1, 1, 1, 1, 2, 3, 2, 1, 4, 3, 3, 4, 4, 3, 2, 4, 2, 1, 1, 3, 2, 4, 1, 1, 2, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1, 1, 1, 4, 3, 3, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 4, 3, 1, 1, 1, 1, 3, 4, 3, 1, 1, 4, 1, 6, 2, 1, 1, 1, 3, 1, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 3, 1, 1, 5, 4, 1, 2, 2, 4, 1, 6, 1, 2, 1, 1, 3, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 4, 2, 2, 3, 1, 2, 3, 1, 3, 4, 1, 1, 3, 4, 2, 5, 1, 1, 1, 3, 2, 2, 3, 2, 1, 2, 2, 2, 2, 3, 1, 2, 1, 3, 3, 3, 1, 1, 2, 1, 3, 3, 1, 1, 4, 2, 5, 2, 4, 1, 2, 4, 1, 2, 1, 2, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 4, 4, 1, 1, 2, 3, 2, 4, 2, 5, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 1, 2, 1, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 1, 1, 1, 2, 4, 2, 1, 1, 3, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 3, 1, 2, 3, 1, 6, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 1, 1, 2, 1]

加密的原理我们并不难理解,但需要我们找到细节规律

密文第一个是3,说明wheel里面1,2是相同的,且与3相反,密文第二个是5,说明wheel里面 4,5,6,7是相同的,且与8相反,不是0就是1,我们只需足够多的密文来确定足够多的相同的位置,就能确定wheel

exp:

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
ct = [2, 1, 1, 3, 1, 1, 3, 2, 1, 4, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 3, 1, 6, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 3, 3, 2, 1, 1, 3, 1, 1, 1, 3, 4, 1, 3, 1, 2, 2, 4, 2, 5, 1, 1, 1, 3, 2, 1, 4, 2, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 1, 3, 4, 1, 2, 2, 4, 2, 5, 1, 2, 1, 2, 2, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 4, 3, 1, 2, 1, 3, 1, 3, 3, 2, 1, 3, 1, 6, 2, 1, 1, 2, 1, 2, 1, 3, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 1, 1, 4, 1, 3, 1, 1, 1, 2, 1, 1, 2, 4, 1, 1, 5, 2, 4, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 5, 1, 1, 1, 3, 1, 1, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 1, 2, 1, 1, 4, 3, 1, 3, 4, 1, 1, 1, 2, 1, 3, 1, 6, 1, 2, 1, 1, 3, 2, 3, 1, 2, 2, 1, 3, 2, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 4, 1, 1, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 2, 1, 2, 1, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 1, 4, 2, 4, 2, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 2, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 2, 1, 3, 1, 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 3, 1, 2, 3, 4, 4, 3, 2, 4, 2, 1, 4, 2, 4, 1, 2, 1, 3, 1, 2, 1, 1, 1, 3, 2, 1, 2, 2, 2, 3, 3, 1, 2, 1, 3, 1, 1, 1, 2, 1, 3, 4, 2, 1, 4, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 4, 2, 1, 4, 1, 1, 1, 1, 2, 4, 4, 3, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 3, 1, 1, 1, 2, 1, 3, 1, 4, 1, 2, 4, 1, 2, 3, 4, 1, 3, 1, 1, 1, 2, 4, 1, 1, 1, 4, 1, 1, 4, 2, 1, 4, 2, 2, 1, 1, 1, 1, 1, 2, 3, 2, 1, 4, 3, 3, 4, 4, 3, 2, 4, 2, 1, 1, 3, 2, 4, 1, 1, 2, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1, 1, 1, 4, 3, 3, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 4, 3, 1, 1, 1, 1, 3, 4, 3, 1, 1, 4, 1, 6, 2, 1, 1, 1, 3, 1, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 3, 1, 1, 5, 4, 1, 2, 2, 4, 1, 6, 1, 2, 1, 1, 3, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 4, 2, 2, 3, 1, 2, 3, 1, 3, 4, 1, 1, 3, 4, 2, 5, 1, 1, 1, 3, 2, 2, 3, 2, 1, 2, 2, 2, 2, 3, 1, 2, 1, 3, 3, 3, 1, 1, 2, 1, 3, 3, 1, 1, 4, 2, 5, 2, 4, 1, 2, 4, 1, 2, 1, 2, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 4, 4, 1, 1, 2, 3, 2, 4, 2, 5, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 1, 2, 1, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 1, 1, 1, 2, 4, 2, 1, 1, 3, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 3, 1, 2, 3, 1, 6, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 1, 1, 2, 1]
X_64 = BooleanPolynomialRing(64, [f"x{i}" for i in range(64)]) #设64个布尔值的未知数
Xs = list(X_64.gens())
eqs = []
begin = 0
for i in ct:
for j in range(i - 1):
if j == i-2: # 判断相邻两个是否相同
eq = Xs[(begin + j) % 64] + Xs[(begin + j + 1) % 64] + 1
eqs.append(eq)
else:
eq = Xs[(begin + j) % 64] + Xs[(begin + j + 1) % 64]
eqs.append(eq)
begin += i

m = []
B = []
for i in eqs:
s = []
for x in range(len(Xs)):
if Xs[x] in i:
s.append(1)
else:
s.append(0)
if "+ 1" in str(i):
B.append(1)
else:
B.append(0)
m.append(s)
m = matrix(GF(2), m) # 矩阵
B = vector(GF(2), B) # 系数

wheel = m.solve_right(B)

print(wheel)
# [(1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0)]

佩服,转换成了一个多项式矩阵解

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
from typing import List,Union,Literal
from Crypto.Util.number import long_to_bytes
import secrets
import random,string,re

class K_Cessation:
'''
## Background:
K-Cessation cipher is a cipher that uses a K bit wheel to pick the next cipher bit from plaintext bit.
When encryption starts, the wheel starts at the last bit of the wheel.
The wheel loops around when it reaches the end.
For every plaintext bit, the wheel is rotated to the next bit in the wheel that matches the plaintext bit, and the distance rotated is appended to the ciphertext.

Therefore, if the wheel is not known, it is not possible to decrypt the ciphertext.
Or is it?


## Example:
To encode "youtu.be/dQw4w9WgXcQ" in 64-Cessation with the wheel 1100011011100011100110100011110110010110010100001011111011111010:
1. convert the plaintext to bits: 01111001 01101111 01110101 01110100 01110101 00101110 01100010 01100101 00101111 01100100 01010001 01110111 00110100 01110111 00111001 01010111 01100111 01011000 01100011 01010001
2. from wheel[-1] to the next "0" bit in the wheel, distance is 3, the current wheel position is wheel[2]
3. from wheel[2] to the next "1" bit in the wheel, distance is 3, the current wheel position is wheel[5]
4. repeat the steps until all bits is encoded
5. the result is 3312121232111411211311221152515233123332223411313221112161142123243321244111111311111112111131113211132412111212112112321122115251142114213312132313311222111112


## Challenge:
A flag is encoded with 64-Cessation cipher.
The wheel is not known.
The ciphertext is given in ciphertext.txt.
The flag is only known to be an ascii string that is longer than 64 characters.
No part of the flag is known, which means the flag is NOT in WMCTF{} or FLAG{} format.
When submitting, please make the flag in WMCTF{} format.
The most significant bit of each byte is flipped with a random bit.
You need to extract the flag from the ciphertext and submit it.
For your convenience, a salted sha256 hash of the flag is given in flag_hash.txt.

'''

def __is_valid_wheel(self):
hasZero = False
hasOne = False
for i in self.wheel:
if not isinstance(i,int):
raise ValueError("Wheel must be a list of int")
if i == 0:
hasZero = True
elif i == 1:
hasOne = True
if i > 1 or i < 0:
raise ValueError("Wheel must be a list of 0s and 1s")
if not hasZero or not hasOne:
raise ValueError("Wheel must contain at least one 0 and one 1")

def __init__(self,wheel:List[int]):
self.wheel = wheel
self.__is_valid_wheel()
self.state = -1
self.finalized = False
def __find_next_in_wheel(self,target:Literal[1,0]) -> List[int]:
result = 1
while True:
ptr = self.state + result
ptr = ptr % len(self.wheel)
v = self.wheel[ptr]
if v == target:
self.state = ptr
return [result]
result+=1
def __iter_bits(self,data:bytes):
for b in data:
for i in range(7,-1,-1):
yield (b >> i) & 1
def __check_finalized(self):
if self.finalized:
raise ValueError("This instance has already been finalized")
self.finalized = True
def encrypt(self,data:Union[str,bytes]) -> List[int]:
self.__check_finalized()
if isinstance(data,str):
data = data.encode()
out = []
for bit in self.__iter_bits(data):
rs = self.__find_next_in_wheel(bit)
# print(f"bit={bit},rs={rs},state={self.state}")
out.extend(rs)
return out

def decrypt(self,data:List[int]) -> bytes:
self.__check_finalized()
out = []
for i in data:
assert type(i) == int
self.state = self.state + i
self.state %= len(self.wheel)
out.append(self.wheel[self.state])
long = "".join(map(str,out))
return long_to_bytes(int(long,2))

# generate a random wheel with k bits.
def random_wheel(k=64) -> List[int]:
return [secrets.randbelow(2) for _ in range(k)]

# the most significant bit of each byte is flipped with a random bit.
def encode_ascii_with_random_msb(data:bytes) -> bytes:
out = bytearray()
for b in data:
assert b < 128, "not ascii"
b = b ^ (0b10000000 * secrets.randbelow(2))
out.append(b)
return bytes(out)

# for your convenience, here is the decoding function.
def decode_ascii_with_random_msb(data:bytes) -> bytes:
out = bytearray()
for b in data:
b = b & 0b01111111
out.append(b)
return bytes(out)

ct = [2, 1, 1, 3, 1, 1, 3, 2, 1, 4, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 3, 1, 6, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 3, 3, 2, 1, 1, 3, 1, 1, 1, 3, 4, 1, 3, 1, 2, 2, 4, 2, 5, 1, 1, 1, 3, 2, 1, 4, 2, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 1, 3, 4, 1, 2, 2, 4, 2, 5, 1, 2, 1, 2, 2, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 4, 3, 1, 2, 1, 3, 1, 3, 3, 2, 1, 3, 1, 6, 2, 1, 1, 2, 1, 2, 1, 3, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 3, 1, 1, 4, 1, 3, 1, 1, 1, 2, 1, 1, 2, 4, 1, 1, 5, 2, 4, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 5, 1, 1, 1, 3, 1, 1, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 1, 2, 1, 1, 4, 3, 1, 3, 4, 1, 1, 1, 2, 1, 3, 1, 6, 1, 2, 1, 1, 3, 2, 3, 1, 2, 2, 1, 3, 2, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 4, 1, 1, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 2, 1, 2, 1, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 1, 4, 2, 4, 2, 2, 3, 1, 2, 2, 2, 1, 3, 3, 1, 2, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 2, 1, 3, 1, 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 3, 1, 2, 3, 4, 4, 3, 2, 4, 2, 1, 4, 2, 4, 1, 2, 1, 3, 1, 2, 1, 1, 1, 3, 2, 1, 2, 2, 2, 3, 3, 1, 2, 1, 3, 1, 1, 1, 2, 1, 3, 4, 2, 1, 4, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 4, 2, 1, 4, 1, 1, 1, 1, 2, 4, 4, 3, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 3, 1, 1, 1, 2, 1, 3, 1, 4, 1, 2, 4, 1, 2, 3, 4, 1, 3, 1, 1, 1, 2, 4, 1, 1, 1, 4, 1, 1, 4, 2, 1, 4, 2, 2, 1, 1, 1, 1, 1, 2, 3, 2, 1, 4, 3, 3, 4, 4, 3, 2, 4, 2, 1, 1, 3, 2, 4, 1, 1, 2, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 1, 1, 1, 4, 3, 3, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 4, 2, 5, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 4, 3, 1, 1, 1, 1, 3, 4, 3, 1, 1, 4, 1, 6, 2, 1, 1, 1, 3, 1, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 3, 1, 1, 5, 4, 1, 2, 2, 4, 1, 6, 1, 2, 1, 1, 3, 1, 4, 1, 2, 1, 2, 1, 1, 1, 1, 4, 2, 2, 3, 1, 2, 3, 1, 3, 4, 1, 1, 3, 4, 2, 5, 1, 1, 1, 3, 2, 2, 3, 2, 1, 2, 2, 2, 2, 3, 1, 2, 1, 3, 3, 3, 1, 1, 2, 1, 3, 3, 1, 1, 4, 2, 5, 2, 4, 1, 2, 4, 1, 2, 1, 2, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 4, 4, 1, 1, 2, 3, 2, 4, 2, 5, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 1, 2, 1, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 1, 1, 1, 2, 4, 2, 1, 1, 3, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1, 2, 1, 2, 3, 1, 1, 1, 3, 4, 1, 1, 2, 3, 1, 2, 3, 1, 6, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 4, 2, 1, 4, 1, 2, 3, 1, 1, 2, 1]
wheels = [(1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0)]

for wheel in wheels:
c = K_Cessation(wheel)
pt = c.decrypt(ct)
pt = decode_ascii_with_random_msb(pt)
print(pt)

# b'DoubleUmCtF[S33K1NG_tru7h-7h3_w1s3-f1nd_1n57e4d-17s_pr0f0und-4b5ence_n0w-g0_s0lv3-th3_3y3s-1n_N0ita]'

reference:

2024-WMCTF-wp-crypto | 糖醋小鸡块的blog (tangcuxiaojikuai.xyz)

2024WMCTF | DexterJie’Blog

京津冀长城杯2024

RandomRSA

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
import gmpy2
import random
from secret import flag
from Crypto.Util.number import *

class LCG:
def __init__(self,p,a,b):
self.p=p
self.a=a
self.b=b
self.x=random.randint(0,p-1)
print(self.p,self.a,self.b)

def next(self):
self.x=(self.a*self.x+self.b)%self.p
return self.x

def getPrimes(bits,k):
p=getPrime(bits)
a=random.randint(0,p-1)
b=random.randint(0,p-1)
l=LCG(p,a,b)
return [gmpy2.next_prime(l.next()) for _ in range(k)]

p,q=getPrimes(1024,2)
n=p*q
e=65537
m=bytes_to_long(flag)
c=pow(m,e,n)
print(n,c)
'''
170302223332374952785269454020752010235000449292324018706323228421794605831609342383813680059406887437726391567716617403068082252456126724116360291722050578106527815908837796377811535800753042840119867579793401648981916062128752925574017615120362457848369672169913701701169754804744410516724429370808383640129 95647398016998994323232737206171888899957187357027939982909965407086383339418183844601496450055752805846840966207033179756334909869395071918100649183599056695688702272113280126999439574017728476367307673524762493771576155949866442317616306832252931038932232342396406623324967479959770751756551238647385191314 122891504335833588148026640678812283515533067572514249355105863367413556242876686249628488512479399795117688641973272470884323873621143234628351006002398994272892177228185516130875243250912554684234982558913267007466946601210297176541861279902930860851219732696973412096603548467720104727887907369470758901838
5593134172275186875590245131682192688778392004699750710462210806902340747682378400226605648011816039948262008066066650657006955703136928662067931212033472838067050429624395919771757949640517085036958623280188133965150285410609475158882527926240531113060812228408346482328419754802280082212250908375099979058307437751229421708615341486221424596128137575042934928922615832987202762651904056934292682021963290271144473446994958975487980146329697970484311863524622696562094720833240915154181032649358743041246023013296745195478603299127094103448698060367648192905729866897074234681844252549934531893172709301411995941527 2185680728108057860427602387168654320024588536620246138642042133525937248576850574716324994222027251548743663286125769988360677327713281974075574656905916643746842819251899233266706138267250441832133068661277187507427787343897863339824140927640373352305007520681800240743854093190786046280731148485148774188448658663250731076739737801267702682463265663725900621375689684459894544169879873344003810307496162858318574830487480360419897453892053456993436452783099460908947258094434884954726862549670168954554640433833484822078996925040310316609425805351183165668893199137911145057639657709936762866208635582348932189646
'''

next_prime ,两个数相差不大,可以采取爆破

拆开后是一个一元二次方程 (通过爆破k1,k2)

借助一下dexter师傅写的脚本,自己写的要跑两三个小时,借助多线程也要跑半个多小时🥲🥲

(多进程学习一手)

不用多线程跑全程也才10分钟,flag不到四分钟就出了,借助多线程更是秒出

exp:

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
from tqdm import *
from Crypto.Util.number import *
import gmpy2
from concurrent.futures import ProcessPoolExecutor,as_completed

mod = 170302223332374952785269454020752010235000449292324018706323228421794605831609342383813680059406887437726391567716617403068082252456126724116360291722050578106527815908837796377811535800753042840119867579793401648981916062128752925574017615120362457848369672169913701701169754804744410516724429370808383640129
a = 95647398016998994323232737206171888899957187357027939982909965407086383339418183844601496450055752805846840966207033179756334909869395071918100649183599056695688702272113280126999439574017728476367307673524762493771576155949866442317616306832252931038932232342396406623324967479959770751756551238647385191314
b = 122891504335833588148026640678812283515533067572514249355105863367413556242876686249628488512479399795117688641973272470884323873621143234628351006002398994272892177228185516130875243250912554684234982558913267007466946601210297176541861279902930860851219732696973412096603548467720104727887907369470758901838
n = 5593134172275186875590245131682192688778392004699750710462210806902340747682378400226605648011816039948262008066066650657006955703136928662067931212033472838067050429624395919771757949640517085036958623280188133965150285410609475158882527926240531113060812228408346482328419754802280082212250908375099979058307437751229421708615341486221424596128137575042934928922615832987202762651904056934292682021963290271144473446994958975487980146329697970484311863524622696562094720833240915154181032649358743041246023013296745195478603299127094103448698060367648192905729866897074234681844252549934531893172709301411995941527
c = 2185680728108057860427602387168654320024588536620246138642042133525937248576850574716324994222027251548743663286125769988360677327713281974075574656905916643746842819251899233266706138267250441832133068661277187507427787343897863339824140927640373352305007520681800240743854093190786046280731148485148774188448658663250731076739737801267702682463265663725900621375689684459894544169879873344003810307496162858318574830487480360419897453892053456993436452783099460908947258094434884954726862549670168954554640433833484822078996925040310316609425805351183165668893199137911145057639657709936762866208635582348932189646

def get_flag(start,end):
for k1 in trange(start,end):
for k2 in range(1000):
A = a
B = (a*k1 + b + k2)
C = (b*k1 + k1*k2 - n)
delta = B^2 - 4 * A * C
check = Zmod(mod)(delta).is_square()
if check == False:
continue
roots = Zmod(mod)(delta).sqrt(all=True)
for root in roots:
root = gmpy2.mpz(root)
x1 = (-B + root) * gmpy2.invert(2 * A,mod) % mod
x2 = (-B - root) * gmpy2.invert(2 * A,mod) % mod
p1 = x1 + k1
p2 = x2 + k2
if n % p1 == 0:
print(p1)
p = p1
q = n // p
d = inverse(65537,(p-1)*(q-1))
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)
return flag
if n % p2 == 0:
print(p2)
p = p2
q = n // p
d = inverse(65537,(p-1)*(q-1))
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)
return flag

num_threads = 5
with ProcessPoolExecutor(max_workers=num_threads) as executor:
ranges = [(0,200),(200,400),(400,600),(600,800),(800,1000)]
futures = [executor.submit(get_flag,start,end) for start, end in ranges]
for future in as_completed(futures):
result = future.result()
if result:
break

# flag{j1st_e_s1mp1e_b3ute}

Matrix

matrix.sage

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
import random
import base64

from sage.stats.distributions.discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler
from sage.combinat.subset import Subsets


def parameters(n):
m = 5*n
p = random.choice(list(primes(n^2, 2*n^2)))
D = DiscreteGaussianDistributionIntegerSampler(sigma=0.5)
return n, m, p, D

def keygen(n, m, p, D):
s = vector(Zmod(p), [random.randint(0, p-1) for _ in range(n)])

e = vector(Zmod(p), [D() for _ in range(m)])
A = matrix(Zmod(p), [
vector(Zmod(p), [random.randint(0, p-1) for _ in range(n)])
for _ in range(m)
])
b = A * s + e

return (s, (A, b))

def encrypt(msg_bit, A, b, p):
assert msg_bit in (0, 1)

m = len(b)
S = Subsets(m).random_element()

cipher_a = sum(A[i-1] for i in S)
cipher_b = (sum(b[i-1] for i in S) + msg_bit * p//2) % p
return (cipher_a, cipher_b)

def decrypt(cipher_a, cipher_b, s, p):
tmp = int((cipher_b - cipher_a*s) % p)
if tmp > p//2:
tmp -= p
if p//2 < 2*abs(tmp):
return 1
else:
return 0

def main():
n, m, p, D = parameters(10)

sk, (A, b) = keygen(n, m, p, D)

flag2 = open("flag2.txt", "r").readline().strip()
msg = int.from_bytes(flag2.encode(), 'big')

ciphers = []
while msg:
bit = msg & 1
msg >>= 1
ciphers.append(encrypt(bit, A, b, p))

with open("flag2.enc", "w") as f:
f.write(f"n = {n}\nm = {m}\np = {p}\nD = {D}\n\n")
f.write(f"pubkey key A: \n{base64.b64encode(dumps(A)).decode()}\n\n")
f.write(f"pubkey key b: \n{base64.b64encode(dumps(b)).decode()}\n\n")
f.write(f"cipher: \n{base64.b64encode(dumps(ciphers)).decode()}\n")


if __name__ == "__main__":
main()

flag2.enc

1
2
3
4
5
6
7
8
9
10
11
12
13
n = 10
m = 50
p = 193
D = Discrete Gaussian sampler over the Integers with sigma = 0.500000 and c = 0.000000

pubkey key A:
eJx1UwtT1FYU3kVQCIgURKkgD5F2QVhFHhWR8lQWEB9hKFuKxpAENmU34STZBXFA2mVdHbFVqmMtFcUHKmOpj3FaEXHm+2W9y65ThtHJTHLv+R7n3JNzJ+MkUxxUnD7RMtTR2OcA59eGVWnIq3Bkc3yCIPh0WRNkRTMVYcCrixbX+Zk42aNy0zL8kuU3FKdfU8mvCIYybCimolmipeoaS2gosl9iCT9VkGAOiwyLJulaW9Mmx0bnAVGydOM8N6hoiqFKQmwv/H+Y+M9qvLo+5B8WBr16v+jlKMGdarPZ2jRLGVSMTl3mVW2QNodoC0+JHVyH/RIlRZ0MBphONUrkfOKQInzcEOeOYybV5ZQcohSeto5TqjuRRSSREVhS2hY7qmpKTkn0ernIS/AplkeXOUrzbHxirYnpVcVk7Rn0iaYgarIgyrJqqQFFiMZYsyKfRk1ujAHRAEdfFI9TepgyeNruTmblCCOq5RHEUVX3UaY7hUVaVNYgtd8fUdGOMO3kKcuT6c5g0EezRtPUJVVcY3wZpl08ZW9gNOs+n9+KMnLCtJunXMZIXcfo1lRL9FJemPJ5KmBgpJr1xnvCVMjTXoZsWydr0wKKYSpUFKavePqaoZsZGjNzhKmYpxIWTFw7SEA12XjRvjCV8lQWy7G+NGeY9vN0wLSonKeDHQc7uCseu0UV41QZpiqeqq+M0zcOd2bkv+lev08TRF+/yuY2Mut+r0KHPPEOT4KbY4RjhqJ0RqM1ITrMU60nyeFhpldOWHRknOos+panenc64xr6yEanhohTTMJFJI3j1GRRM08t/g77ZUmQdFmRTE7RIguOjrrvsAHDcj1+QbAU13D7cAFu4WHphWpXH5ZaWvEewRQlcKoaj0+4LmK+BMHTLsb7F79ixYXZVsI/WxE040tH9zYi1CTjBmZbTndjFR+yyvMbMIO/8SDLVlUVL+BZVfd5p5ST3otZV+oApojDHG6MWIHdP3AVuIqbba4JXMf0DkzaLTwv3VSWi9DBPCxhplQus2MmDjeTsXAAU5VYTvKVj+yqkDrTEKrGYkDdywzuSFjW4vHQdQZ/ZKbgpf37CWbQWOjwYSXtDN714r7hSHfiYRtb4enIaOUA78Gy7eSWU3iKWSzibt1xLJkDPZhvwCOs9GIpR08Y6ak/eRGPT+L9Yaz0jOFFJpblItwa3YkFowxTrbjdNNh9qFjG9eJRD2Zq8VdVAu5nIZSAN0OY7sJqRaGnwZeHV7a6IizGFXNJ6fIQ5vacw+sUvIjPxAesnsK97edrEvJzENw3jtlqXMaUPIpgRhxu5OSx+q5hakzb48VMPZ40d3+37QJTzZk7RFyqteciXLtJPbczEUF8kJqrDnn7EvC6rqCtL9fW3v9jJ97W4XL1afyOeTwM7K/En1jAOzwvaUKwwtPXhkkTb7KzJ47sK+7FdHYt7mIa02c3H8XVZJb4WUbu2XbM+Xn/cCerZKoHvwkyXuFnzGfj0RHcQwhvcasL8/vT8ABTeIInQz7MF+BdanfRVmOsZqSmvSvgOJqf2aWxmVgYq0BIL8JkYRUWqWcCkxp+wmpLSQ9mLyKY1o0VvCyso2NrF9PL7plWTq2XyMVTW5jaOziLOng67vwPLYuHEA==

pubkey key b:
eJx1kgd0E0cQhm0Dxhxgeu/dNIErkO5ASIhjkkxCohRyOUtr3WHp5H/vJCCJE1IWQXrvvffeO+m999577z1Z7dp3B+/l6b3Vm/2+mZ2b3TVlCc9KsVgmm8ylmRfLs4Sf5aYMXTPJXI8ZObfdSbSlmZmvNlBSpXXP57mEn+Ms1moVE1YbKeYy7iTMztjsSjNQ+r856Wy2LdduptLZFittoCxulJSULOaMNatu0E2gO6FHk9FUuhblVXZplV0Wr5TOEtdnKcalRo6bQk+BCkIvu1wfxOWeF3O0Y2SsNmZ2BTDiZTK/oRq9BfoQ+nagMl4hdxKWFGRP6Nc5D8dLxBJWOm0UFzPDfDubNNDf3uS36aflXAc5ZnLWzpnHXN/ynawrZ8hZMpeQwxigEzqPc+TEM1YqY3mm5SZNK5l0fCfPTL1nNKu/RjfZ2An0hoGB0zswqIDBhCHx3rJ7c6Xj26a1yslmMDTeR+4scmRPTkuumIVhBQwnjLCHxgdJ1FWs0fOyCcdSxsgCRhFGb2IszGYyOV8bYwoYSxgnjcqIscx1fCuN8QVMIEyUsNhNtPCkAiYTpkjSL5K2xM0z7jFMLWAaoUrSckk7i00vYAZhptysUB+Sdzw5Q8wqYDYh1nlGtLU5BcwlVHs+agi1TTXrl/qo60C9jwbCvOWYXxV9F62OPEbeUPSRFN+70Vy84AW2fiF1rdhMYHPCFnbwZLYU2IqwtV1bwDaERjtw67GtwELCIlvB7QiLA1gNbC+wA2GJhjsSmgJY42MngWbCUg13JuwSwNokdhUgwm4a7k5YFpZdgD0E9iTENdyLsHeYCewjsC9huYb7EUwFS4vdYn8Bi9CiWYKQDBNbwARaCSkNbYITHulhhUAbIa1hhuAGVW1kBdoJ0IwTvDAxA18gR8hruJKwKhxeHVYLHEA4UMODCB1hPxYOFjiEsEbDQwmHhWV9HC5wBEFouJZQCGD9PKwTWE84UsOjCEeHZ67AMQLHEo7T8HjCCeGdVONEgZMIJ2t4CuHUENo4TeB0whkankk4K5p5tsA5hHM1PI9wfjCgJC4QuJBwkWYXEy4J+wEuFbiMcLmGVxCuDBLbcZXA1YRrNLuWcF2YmMf1AjcQbtTwJsLNQeJc3CJwK+E2zW4n3BEmpnGnwF2EuzW8h3Bv+B1tuE/gfsIGDR8gPBheSQoPCTxMeETDRwmPhWUdPC7wBOFJDZ8iPB1mNuAZgWcJz2n4POGF6JkvCrxEeFnDVwivhjedxWsCrxPe0PBNwlthpou3Bd4hvKvhe4T3wzMdfCDwIeEjDT8mfBK+EYZPBT4jfK7hF4QvwzPT+Erga8I3Gn5L+C76nd8L/ED4UcOfCD+HmfPxi8CvhN80/J3wR9htA/4U+Ivwt4b/EP4NM9t5ibw5wUvlSrxMrsri3VTcvRh33e4C3kOp5Qr1DNQKFffqUtUQarmh3N6K9QncviqujLr1Od5Puf0VGxC4A1U8KOrWtfPByh2i2NDAHabi4Ru5DXyEckcqNipwR6t4TPTTavlYpY5TaHygTlDxxGjZmhSfpNzJik0J3KkqnhYt6/EqpU5XaEagzlTxrI2mUMdnKzem2JzAnavi6o2m6/Ea5dYqVhe49SpukCtrqmnasM7n89TOfLnG/gOGSvDo

cipher:
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

LWE,这段时间出现过很多次了

看着代码复杂,但该有的条件一个不缺,decrypt 也是直接给了

注意一下 dumps 和 loads

1
2
3
4
5
dumps 函数:
功能:将 SageMath 对象转换为字符串(序列化),通常是二进制字符串,便于存储或传输。

loads 函数:
功能:将一个通过 dumps 序列化后的字符串(或文件中的序列化内容)重新转化为原来的 SageMath 对象。

exp:

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
from Crypto.Util.number import *
import base64
from sage.stats.distributions.discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler
from sage.combinat.subset import Subsets

n = 10
m = 50
p = 193
D = DiscreteGaussianDistributionIntegerSampler(sigma=0.5)

A=b'eJx1UwtT1FYU3kVQCIgURKkgD5F2QVhFHhWR8lQWEB9hKFuKxpAENmU34STZBXFA2mVdHbFVqmMtFcUHKmOpj3FaEXHm+2W9y65ThtHJTHLv+R7n3JNzJ+MkUxxUnD7RMtTR2OcA59eGVWnIq3Bkc3yCIPh0WRNkRTMVYcCrixbX+Zk42aNy0zL8kuU3FKdfU8mvCIYybCimolmipeoaS2gosl9iCT9VkGAOiwyLJulaW9Mmx0bnAVGydOM8N6hoiqFKQmwv/H+Y+M9qvLo+5B8WBr16v+jlKMGdarPZ2jRLGVSMTl3mVW2QNodoC0+JHVyH/RIlRZ0MBphONUrkfOKQInzcEOeOYybV5ZQcohSeto5TqjuRRSSREVhS2hY7qmpKTkn0ernIS/AplkeXOUrzbHxirYnpVcVk7Rn0iaYgarIgyrJqqQFFiMZYsyKfRk1ujAHRAEdfFI9TepgyeNruTmblCCOq5RHEUVX3UaY7hUVaVNYgtd8fUdGOMO3kKcuT6c5g0EezRtPUJVVcY3wZpl08ZW9gNOs+n9+KMnLCtJunXMZIXcfo1lRL9FJemPJ5KmBgpJr1xnvCVMjTXoZsWydr0wKKYSpUFKavePqaoZsZGjNzhKmYpxIWTFw7SEA12XjRvjCV8lQWy7G+NGeY9vN0wLSonKeDHQc7uCseu0UV41QZpiqeqq+M0zcOd2bkv+lev08TRF+/yuY2Mut+r0KHPPEOT4KbY4RjhqJ0RqM1ITrMU60nyeFhpldOWHRknOos+panenc64xr6yEanhohTTMJFJI3j1GRRM08t/g77ZUmQdFmRTE7RIguOjrrvsAHDcj1+QbAU13D7cAFu4WHphWpXH5ZaWvEewRQlcKoaj0+4LmK+BMHTLsb7F79ixYXZVsI/WxE040tH9zYi1CTjBmZbTndjFR+yyvMbMIO/8SDLVlUVL+BZVfd5p5ST3otZV+oApojDHG6MWIHdP3AVuIqbba4JXMf0DkzaLTwv3VSWi9DBPCxhplQus2MmDjeTsXAAU5VYTvKVj+yqkDrTEKrGYkDdywzuSFjW4vHQdQZ/ZKbgpf37CWbQWOjwYSXtDN714r7hSHfiYRtb4enIaOUA78Gy7eSWU3iKWSzibt1xLJkDPZhvwCOs9GIpR08Y6ak/eRGPT+L9Yaz0jOFFJpblItwa3YkFowxTrbjdNNh9qFjG9eJRD2Zq8VdVAu5nIZSAN0OY7sJqRaGnwZeHV7a6IizGFXNJ6fIQ5vacw+sUvIjPxAesnsK97edrEvJzENw3jtlqXMaUPIpgRhxu5OSx+q5hakzb48VMPZ40d3+37QJTzZk7RFyqteciXLtJPbczEUF8kJqrDnn7EvC6rqCtL9fW3v9jJ97W4XL1afyOeTwM7K/En1jAOzwvaUKwwtPXhkkTb7KzJ47sK+7FdHYt7mIa02c3H8XVZJb4WUbu2XbM+Xn/cCerZKoHvwkyXuFnzGfj0RHcQwhvcasL8/vT8ABTeIInQz7MF+BdanfRVmOsZqSmvSvgOJqf2aWxmVgYq0BIL8JkYRUWqWcCkxp+wmpLSQ9mLyKY1o0VvCyso2NrF9PL7plWTq2XyMVTW5jaOziLOng67vwPLYuHEA=='
b=b'eJx1kgd0E0cQhm0Dxhxgeu/dNIErkO5ASIhjkkxCohRyOUtr3WHp5H/vJCCJE1IWQXrvvffeO+m999577z1Z7dp3B+/l6b3Vm/2+mZ2b3TVlCc9KsVgmm8ylmRfLs4Sf5aYMXTPJXI8ZObfdSbSlmZmvNlBSpXXP57mEn+Ms1moVE1YbKeYy7iTMztjsSjNQ+r856Wy2LdduptLZFittoCxulJSULOaMNatu0E2gO6FHk9FUuhblVXZplV0Wr5TOEtdnKcalRo6bQk+BCkIvu1wfxOWeF3O0Y2SsNmZ2BTDiZTK/oRq9BfoQ+nagMl4hdxKWFGRP6Nc5D8dLxBJWOm0UFzPDfDubNNDf3uS36aflXAc5ZnLWzpnHXN/ynawrZ8hZMpeQwxigEzqPc+TEM1YqY3mm5SZNK5l0fCfPTL1nNKu/RjfZ2An0hoGB0zswqIDBhCHx3rJ7c6Xj26a1yslmMDTeR+4scmRPTkuumIVhBQwnjLCHxgdJ1FWs0fOyCcdSxsgCRhFGb2IszGYyOV8bYwoYSxgnjcqIscx1fCuN8QVMIEyUsNhNtPCkAiYTpkjSL5K2xM0z7jFMLWAaoUrSckk7i00vYAZhptysUB+Sdzw5Q8wqYDYh1nlGtLU5BcwlVHs+agi1TTXrl/qo60C9jwbCvOWYXxV9F62OPEbeUPSRFN+70Vy84AW2fiF1rdhMYHPCFnbwZLYU2IqwtV1bwDaERjtw67GtwELCIlvB7QiLA1gNbC+wA2GJhjsSmgJY42MngWbCUg13JuwSwNokdhUgwm4a7k5YFpZdgD0E9iTENdyLsHeYCewjsC9huYb7EUwFS4vdYn8Bi9CiWYKQDBNbwARaCSkNbYITHulhhUAbIa1hhuAGVW1kBdoJ0IwTvDAxA18gR8hruJKwKhxeHVYLHEA4UMODCB1hPxYOFjiEsEbDQwmHhWV9HC5wBEFouJZQCGD9PKwTWE84UsOjCEeHZ67AMQLHEo7T8HjCCeGdVONEgZMIJ2t4CuHUENo4TeB0whkankk4K5p5tsA5hHM1PI9wfjCgJC4QuJBwkWYXEy4J+wEuFbiMcLmGVxCuDBLbcZXA1YRrNLuWcF2YmMf1AjcQbtTwJsLNQeJc3CJwK+E2zW4n3BEmpnGnwF2EuzW8h3Bv+B1tuE/gfsIGDR8gPBheSQoPCTxMeETDRwmPhWUdPC7wBOFJDZ8iPB1mNuAZgWcJz2n4POGF6JkvCrxEeFnDVwivhjedxWsCrxPe0PBNwlthpou3Bd4hvKvhe4T3wzMdfCDwIeEjDT8mfBK+EYZPBT4jfK7hF4QvwzPT+Erga8I3Gn5L+C76nd8L/ED4UcOfCD+HmfPxi8CvhN80/J3wR9htA/4U+Ivwt4b/EP4NM9t5ibw5wUvlSrxMrsri3VTcvRh33e4C3kOp5Qr1DNQKFffqUtUQarmh3N6K9QncviqujLr1Od5Puf0VGxC4A1U8KOrWtfPByh2i2NDAHabi4Ru5DXyEckcqNipwR6t4TPTTavlYpY5TaHygTlDxxGjZmhSfpNzJik0J3KkqnhYt6/EqpU5XaEagzlTxrI2mUMdnKzem2JzAnavi6o2m6/Ea5dYqVhe49SpukCtrqmnasM7n89TOfLnG/gOGSvDo'
cipher=b'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'
A=loads(base64.b64decode(A))
b=loads(base64.b64decode(b))
cipher=loads(base64.b64decode(cipher))

# print(A)

def primal_attack2(A,b,m,n,p,esz):
L = block_matrix(
[
[matrix(Zmod(p), A).T.echelon_form().change_ring(ZZ), 0],
[matrix.zero(m - n, n).augment(matrix.identity(m - n) * p), 0],
[matrix(ZZ, b), 1],
]
)
#print(L.dimensions())
Q = diagonal_matrix([1]*m + [esz])
L *= Q
L = L.LLL()
L /= Q
res = L[0]
if(res[-1] == 1):
e = vector(GF(p), res[:m])
elif(res[-1] == -1):
e = -vector(GF(p), res[:m])
s = matrix(Zmod(p), A).solve_right((vector(Zmod(p), b)-e))
return s

s = primal_attack2(A,b,m,n,p,1)

def decrypt(cipher_a, cipher_b, s, p):
tmp = int((cipher_b - cipher_a*s) % p)
if tmp > p//2:
tmp -= p
if p//2 < 2*abs(tmp):
return 1
else:
return 0

msg = ""
for cipher_a,cipher_b in cipher:
m = decrypt(cipher_a,cipher_b,s,p)
msg += str(m)
flag = long_to_bytes(int(msg[::-1],2))
print(flag)

# flag{03fe4298-7509-4e41-8225-77d0cccc0c15}


以下两道后面有机会再继续看,最近有点忙,先鸽了



SEKAICTF2024

*Some Trick

Bob and Alice found a futuristic version of opunssl and replaced all their needs for doofy wellmen.
Author: deut-erium

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
import random
from secrets import randbelow, randbits
from flag import FLAG

CIPHER_SUITE = randbelow(2**256)
print(f"oPUN_SASS_SASS_l version 4.0.{CIPHER_SUITE}")
random.seed(CIPHER_SUITE)

GSIZE = 8209
GNUM = 79

LIM = GSIZE**GNUM


def gen(n):
p, i = [0] * n, 0
for j in random.sample(range(1, n), n - 1):
p[i], i = j, j
return tuple(p)


def gexp(g, e):
res = tuple(g)
while e:
if e & 1:
res = tuple(res[i] for i in g)
e >>= 1
g = tuple(g[i] for i in g)
return res


def enc(k, m, G):
if not G:
return m
mod = len(G[0])
return gexp(G[0], k % mod)[m % mod] + enc(k // mod, m // mod, G[1:]) * mod


def inverse(perm):
res = list(perm)
for i, v in enumerate(perm):
res[v] = i
return res


G = [gen(GSIZE) for i in range(GNUM)]


FLAG = int.from_bytes(FLAG, 'big')
left_pad = randbits(randbelow(LIM.bit_length() - FLAG.bit_length()))
FLAG = (FLAG << left_pad.bit_length()) + left_pad
FLAG = (randbits(randbelow(LIM.bit_length() - FLAG.bit_length()))
<< FLAG.bit_length()) + FLAG

bob_key = randbelow(LIM)
bob_encr = enc(FLAG, bob_key, G)
print("bob says", bob_encr)
alice_key = randbelow(LIM)
alice_encr = enc(bob_encr, alice_key, G)
print("alice says", alice_encr)
bob_decr = enc(alice_encr, bob_key, [inverse(i) for i in G])
print("bob says", bob_decr)

ByteCTF-2024

*magic_lfsr

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
from Crypto.Cipher import AES
from Crypto.Util.number import *
from Crypto.Util.Padding import pad
from hashlib import sha512
from secret import flag

mask1 = 211151158277430590850506190902325379931
mask2 = 314024231732616562506949148198103849397
mask3 = 175840838278158851471916948124781906887
mask4 = 270726596087586267913580004170375666103


def lfsr(R, mask):
R_bin = [int(b) for b in bin(R)[2:].zfill(128)]
mask_bin = [int(b) for b in bin(mask)[2:].zfill(128)]
s = sum([R_bin[i] * mask_bin[i] for i in range(128)]) & 1
R_bin = [s] + R_bin[:-1]
return (int("".join(map(str, R_bin)), 2), s)


def ff(x0, x1, x2, x3):
return (int(sha512(long_to_bytes(x0 * x2 + x0 + x1**4 + x3**5 + x0 * x1 * x2 * x3 + (x1 * x3) ** 4)).hexdigest(), 16) & 1)


def round(R, R1_mask, R2_mask, R3_mask, R4_mask):
out = 0
R1_NEW, _ = lfsr(R, R1_mask)
R2_NEW, _ = lfsr(R, R2_mask)
R3_NEW, _ = lfsr(R, R3_mask)
R4_NEW, _ = lfsr(R, R4_mask)
for _ in range(270):
R1_NEW, x1 = lfsr(R1_NEW, R1_mask)
R2_NEW, x2 = lfsr(R2_NEW, R2_mask)
R3_NEW, x3 = lfsr(R3_NEW, R3_mask)
R4_NEW, x4 = lfsr(R4_NEW, R4_mask)
out = (out << 1) + ff(x1, x2, x3, x4)
return out


key = getRandomNBitInteger(128)
out = round(key, mask1, mask2, mask3, mask4)
cipher = AES.new(long_to_bytes(key), mode=AES.MODE_ECB)
print(f"out = {out}")
print(f"enc = {cipher.encrypt(pad(flag, 16))}")
# out = 1024311481407054984168503188572082106228007820628496173132204098971130766468510095
# enc = b'\r\x9du\xa15q\xd2\x81\x0b\xceq2\x8d)*\xe9\xf0;a\xad\xbe?\xa2\xb2\x1f\x88O\x8c\xa2[\xcb\x9a\xa9\x8d\xac\x0b\x85\xb4j@]\x0e}EF{\xb1\x91'

-------------    本文结束  感谢阅读    -------------