noisy_crt & 题目复现

文章目录

    • 题一([NeepuCtf 2023]loud)
      • 题目描述:
      • 题目分析:
    • 题二([NeepuCtf 2023]loud2)
      • 题目描述:
      • 题目分析:
    • 浅记一下

论文在此 不过吧,内容太多了,我也不想看

题一([NeepuCtf 2023]loud)

题目描述:

from Crypto.Util.number import *
import random
flag = randint(1, 2^4096)
print(flag)
p = [getPrime(256) for _ in range(20)]
c = [[randint(0, p[i] - 1) for __ in range(3)] + [int(flag % p[i])] for i in range(20)]
for c0 in c:
    random.shuffle(c0)
print(p)
print(c)
#p=[66467878562792562224887473415011035371976498729276781135103070806273826602147, 87779827664444719705378632508432527366151596527264599732383282214161710342059, 106478845076259796180788022071614290976203859464583466743581048528447954519879, 96059795988661207615203630115134173796188205316583242342092930969746956840537, 76648433583138097341785050433545276046328401071616329410459071963649387342037, 75363807436621723536569872393312030066473340867618075065014040776064056013377, 84549506983821330145587582824091845683589581353932033068622843538281197238321, 111370876180722361599897961586244954018438484624454058266043059162224754345369, 64482965162169334114246637526347201196498007629645251181883638859700004974179, 115737745133463165088409210929201564518908251675851193212090312153202710950611, 65430568356698229457733164116539029669340192339524852345167889932007830803713, 83005759669335703543538842561745612525242745913149020160169673469294684269349, 86695300569990829413494539259312051326564517598709183416846805385774886176327, 87649503475806433108642579024197030978459906709386640769733298397489631575119, 67546279258240068058305769281370224151667980031696762855998467222703960646549, 109277222890519331704406685175081474974918071159722270158398833428598261621993, 94947541482876422720663520475916415155713415168744242709306335577278248129671, 72169704519430039945520319412623531417839608722431394881643470024106954771823, 67960163975784724339119270210646072354375119081204577840800359343098463410911, 99600976311231076437603674530239237427983536499904250636338541144596856152681]
#c=[[36006797306819385066479875554093947690583427970449583820207929310836800884907, 42421831928852572111305575764455253114855197661030346257979092292334693704638, 12802758082612276306666301210467012086210333405770973816248015272325645518737, 35891119003347284519077367147618128608424314149438118637710340094202006973607], [69221811235046204007409195125183399115207721139473251108686359647136964539528, 68728546052531932227774742525240050245981893208569278338806756195046394386320, 77378932313251132635143406501260917558950175409375255430759788116685665756853, 52610629088183684552705334542273079173241031671071904128690224212767984326814], [84632180774187758644772651231005808936754972376616591239738706882585325508504, 22245885241129428291065279034982203110690225047634487933389806520943556010139, 65058154300579433325392929157176043693547112910255708084394089838078169979653, 26450521689799343844879689401496427283279097300795496218417820952255310453381], [31743210200723432871171527300926464156713378567872351797727553809801223755669, 13585899089974057026763852048073375117825112528263695778864069316682632842469, 61718974141826995988697061776372539645461814294568567001726256109104825647174, 51180314603392071189287058511013567287870020999513958065031674007822278281592], [54972437884087220348657249916515696089000557932808046438758622081654015388431, 60595394189514447466338506137494568375465810079275014516953880523799578017650, 48290106501584587524538351792623115913538457076946109833703750186838567097829, 75809640108047877199495621711957016420204838905577105767711805228492185803198], [2043782039074334576524460230918369530353673853539675192552828729137718721899, 49835004172676327317136633790276532689791891581739516605994211773520862094089, 74150446127124215081973853925119891529594162176613983713739514646864857274598, 3870903633214309884568064156029910145031131868082685800718700340446754642668], [58530922734504496400650172153260509666806593206632885245359170202099163777029, 24679955301703325026039585637067957593890919790442322117013190013849632870045, 47461847478301275711387089619360312020232490159064156700718722079533108310495, 78436661760605062831488783213279281637896003485976271847409520316669048162591], [3960169205004685923298734670827529710258905436583484891133449600679523626998, 56971763036590510871648632641525055519742294555040115044720432874482626152527, 7500941845513450196840656641552395008944195976110947855355515297144549893577, 104364444158131675753431216431697712763613996035708348677723420914206545999308], [21090310989423433113256120275297260716078136824734467530250689161392790805917, 59095240674034520085214866457855433129352762312493710903594522366480317145097, 25950268632849909273587896220763105221984980662119437334003683923010964181793, 22214910913289817220594820237750728594412035322558117144502181839908519483813], [6516207309607110723013310828779534786605721487724433166085213573594060054191, 62491095915002854769743893168840271080994195414466604510886959458801333994425, 43298696119722427147738220942971604096101207270771677319478440633957185506012, 95999300849358990419162309412086189707629278626118528491801630061635930409174], [21901937371736027133484836626793049950863305103635439434565692334061323247459, 22177707944556298482781825594816606678702151909926553218938857302296851101061, 37265517992688571580384548897674161792052985496826940853296718063969030761085, 45803015810935362104176472501216732994877801735307247883040947086374864784522], [22887302429552282917137975404437379689230279867683032429064655381687354309967, 63687512791087585071097169701758075850922324857489524802811455099431146712006, 43241233600118761031756067392063544631958472413548145463886944168747993611755, 78540416079875697330277927812643707908744419489483603613867805715379418188382], [83274701456245595041914535781657541250722792681868330743604458671030342631093, 29265221035131869074958665850197081103720257562467498607821734305785454256445, 19656036104607964818483236621454584533830854692521644548949580232419092579485, 36685991496747026794589417986750583003976651961717444764360736602328859939203], [7197271849934394038490337096465830651019854061628854994110403632096530818658, 13199583400545916173897024693988359528617080325104182927755868559199746329580, 76705903744610047925943025263768006533642196751938988456317343613219129386367, 8284847848213860404087592474405055922947517109038702885136704630947806019241], [40192513898904947184731216279798716826510915071804534174239538082671192078053, 756883344718645808681598066443462390307116757281839378450937721653214302485, 46319296839244788373603804279624137323125709215284595152627739510983625831713, 38066834404440733412548216101182968084184940639461830700714702917736840764910], [52459924240743004858678271074727889512634425322058383892565820049302166247484, 1124830903052334805081369416754962375712146318972731973481260141314675294280, 7048586820754100983732909765398789018269542052380424872274364753361851089050, 46261533803791211860667474793341333491934930635468558951890405299902112599717], [23712997405587065505471765580307890926020635436932008780552027395793174460196, 67696894015776789806885369424535665938702806354704500197616129889160343225036, 22335907790107175161378264382954791596027764567679319454957440806458200559861, 76817272441881586284817699756225532359147752598882508352406898668675942956599], [48442733699161048528383543478196401606393182356208996862954079146924798030016, 33988046942702399144226829264100378601075005547176282333019034404108127701223, 3878811651113775226499837109875057444157158981192358109242560352485567236840, 48096508435450140842190594378561970076075899550630622502080370324305787016204], [4661700708549906139665791533582485338344505441635713456342199101346895847315, 57085434497175712126874334119472545667616658739402471396702109228089918012639, 43291903057149273908186130451801222008858189682043034712173498638683726314620, 43681777323686685006867808938443372833327865869793588659920726812432020143637], [34817244237217626483621974571192315048341502556634007719371004295715069335162, 10855671893795758052388714204250213675262352053079039688785650172729770783108, 55808546957704772545340135312880985328286637622927964296444521648705445287337, 57996505385421171401445757882512186395065784033051493647151141293523405436642]]

题目分析:

p = ( p 1 , p 2 , . . . , p 20 ) , 令 P = p r o d ( p )   c = ( a 1 , 1 a 1 , 2 a 1 , 3 a 1 , 4 a 2 , 1 a 2 , 2 a 2 , 3 a 2 , 4 ⋯ ⋱ ⋯ a 20 , 1 a 20 , 2 a 20 , 3 a 20 , 4 )   运用 c r t , 对每行乘 P i ∗ i n v e r s e ( P i , p i ) ,其中 P i = P / / p i K i = P i ∗ i n v e r s e ( P i , p i ) C = ( K 1 ∗ a 1 , 1 K 1 ∗ a 1 , 2 K 1 ∗ a 1 , 3 K 1 ∗ a 1 , 4 K 2 ∗ a 2 , 1 K 2 ∗ a 2 , 2 K 2 ∗ a 2 , 3 K 2 ∗ a 2 , 4 ⋯ ⋱ ⋯ K 20 ∗ a 20 , 1 K 20 ∗ a 20 , 2 K 20 ∗ a 20 , 3 K 20 ∗ a 20 , 4 ) p = (p_1,p_2,...,p_{20}),令P = prod(p) \\ \ \\ c = \begin{pmatrix} a_{1,1}&a_{1,2}&a_{1,3}&a_{1,4}\\ a_{2,1}&a_{2,2}&a_{2,3}&a_{2,4}\\ &\cdots&\ddots&\cdots\\ a_{20,1}&a_{20,2}&a_{20,3}&a_{20,4} \end{pmatrix}\\ \ \\ 运用crt,对每行乘P_i * inverse(P_i,p_i),其中P_i = P // p_i\\ K_i = P_i * inverse(P_i,p_i)\\ C = \begin{pmatrix} K_1 * a_{1,1}&K_1 * a_{1,2}&K_1 * a_{1,3}&K_1 * a_{1,4}\\ K_2 * a_{2,1}&K_2 * a_{2,2}&K_2 * a_{2,3}&K_2 * a_{2,4}\\ &\cdots&\ddots&\cdots\\ K_{20} * a_{20,1}&K_{20} * a_{20,2}&K_{20} * a_{20,3}&K_{20} * a_{20,4} \end{pmatrix}\\ p=(p1,p2,...,p20),P=prod(p) c= a1,1a2,1a20,1a1,2a2,2a20,2a1,3a2,3a20,3a1,4a2,4a20,4  运用crt,对每行乘Piinverse(Pi,pi),其中Pi=P//piKi=Piinverse(Pi,pi)C= K1a1,1K2a2,1K20a20,1K1a1,2K2a2,2K20a20,2K1a1,3K2a2,3K20a20,3K1a1,4K2a2,4K20a20,4
如果没打乱,直接对C最后一列相加再加 l ∗ P l*P lP即可得到flag
现在对于这种打乱了的情况,只能寻找其他方法,这里想到格
为什么呢
flag是4096bits,P = prod§是256 * 20 = 5120bits,可以看出flag相对于P来说不大,所以会想到用类似knapsack的lattice得到有 ( l 1 , 1 ∗ , l 1 , 2 , . . . , f l a g ) (l_{1,1} * ,l_{1,2},...,flag) (l1,1,l1,2,...,flag)的短向量,其中 l i = 0 或 1 l_i = 0 或 1 li=01
构造如下格
M = ( 1 K 1 ∗ a 1 , 1 1 K 1 ∗ a 1 , 2 ⋱ ⋮ 1 K i ∗ a i , 1 1 K i ∗ a i , 2 ⋱ ⋮ 1 K 20 ∗ a 20 , 4 0 0 … 0 0 … 0 P )   ( l 1 , 1 , l 1 , 2 , . . . , l 20 , 20 , l ) ∗ M = ( l 1 , 1 ∗ , l 1 , 2 , . . . , f l a g ) 其中 l i = 0 或 1 , 若 a i 是 f l a g i 则 l i 为 1 ,否则为 0 因为 f l a g 是 4096 b i t s , 为了规约成功,对角线上除 P 外 ∗ 2 4096 M = \begin{pmatrix} 1&&&&&&&K_1 * a_{1,1}\\ &1&&&&&&K_1 * a_{1,2}\\ &&\ddots&&&&&\vdots\\ &&&1&&&&K_i * a_{i,1}\\ &&&&1&&&K_i * a_{i,2}\\ &&&&&\ddots&&\vdots\\ &&&&&&1&K_{20} * a_{20,4}\\ 0&0&\dots&0&0&\dots&0&P \end{pmatrix}\\ \ \\ (l_{1,1},l_{1,2},...,l_{20,20},l) * M = (l_{1,1} * ,l_{1,2},...,flag)\\其中l_i = 0 或 1,若a_i是flag_i则l_i为1,否则为0\\ 因为flag是4096bits,为了规约成功,对角线上除P外*2^{4096} M= 1010101010K1a1,1K1a1,2Kiai,1Kiai,2K20a20,4P  (l1,1,l1,2,...,l20,20,l)M=(l1,1,l1,2,...,flag)其中li=01,aiflagili1,否则为0因为flag4096bits,为了规约成功,对角线上除P24096
解题代码:

from Crypto.Util.number import *
from tqdm import tqdm
P = prod(p)
pc = []
for i,cc in zip(p,c):
    pp = P // i
    temp = pp * ZZ(inverse(pp,i))
    for j in cc:
        pc.append(j * temp % P)
pc.append(P)
M = matrix.identity(80)    
v = [0] * 80
M = M.stack(vector(v))
M = M.augment(matrix(ZZ,pc).T)
M[:,:-1] *= 2**4096
print('begin LLL')
M = M.LLL()
print('end LLL')
M[:,:-1] /= 2**4096

for i in tqdm(range(81)):
    L = M.row(i).list()[:-1]
    flag = True
    for m in L:
        if m != 0 and m != 1 and m != -1: # 这里是and,想一下它的否命题就明白了
            flag = False
            break
    if flag:
        print(M[i][-1])
        print(i)

题二([NeepuCtf 2023]loud2)

题目描述:

from Crypto.Util.number import getPrime,long_to_bytes
import random
import hashlib
flag0 = randint(1, 2^4096) 
p = [getPrime(128) for _ in range(256)]
c = [[randint(0, p[i] - 1) for __ in range(3)] + [int(flag0 % p[i])] for i in range(256)]
for c0 in c:
    random.shuffle(c0)
flag='Neepu{'+str(hashlib.md5(long_to_bytes(flag0)).hexdigest())+'}'
print(p)
print(c)
#p=[262936694987601797121049793464622308733, 309997905911961162457215781817387730187, 257395035318380854775057601132411116087, 286147452080807365850159264284388234501, 277035174837154893834828039596691306911, 258512383940723711320851376437133539413, 186397118585773856570258104696335616987, 171693714739008150001705405614864428419, 238083747816293372423865971187230631971, 282316336151097891530064716780251391569, 215573026476616636083793163922337903571, 191937949030515697609508501946001624387, 333988937469961080573735881132937677827, 317025722732636974432186317028511339951, 217409176045939550636396694560687179723, 323829248130937902037354871334410597417, 290633791886285159803332972049642598119, 202797841071162300959708472431342537677, 245149729812549223399881540394215646847, 200387371258900838770670766895594007321, 306716544669916315302394725519563755459, 293035842724416297725379959023474526183, 227895858258458537242672101545454808547, 254094212367427428776672086286708146103, 221115644183739620122217327743305184517, 200894275744219605378208892056303260911, 333768359928612829779161218754524204543, 310166138123201658463207419764801157157, 280680591491526214042535976051113275493, 238753128853273749600427481335776990367, 203745093932675528326203316256781056747, 189983369614045871849654048387351520431, 245829952383269622766910201601332944763, 196898298879221153082315719118853521083, 211198991549431484868266572931541530269, 282638608058816523125522685098951647877, 244685115564771577008377078268985934383, 308385162262044841446419875108714071817, 266735166831162725429883170422891377611, 190460697635426606812499529682186774603, 277218152093651123974142625801331664797, 170706285257706307597940221604237043761, 238890312826281078306694144662035275139, 301412284494387419659599620938428305119, 250927850622318266629025478867436952459, 173370399311838765647601577255503953449, 306181404528504973833565723694846822767, 279105927120745567305400051747872353993, 195454349162604902759751005896979132101, 265726415221830081959069547663426811381, 220172850548170353106674039215740282649, 194854476610060492523113909621496666939, 320414161714112220806657555814838727423, 233654927520125753180229330411360435829, 216995829515718503652346475777729176667, 227448597731217481116239722185517286477, 259054744178265624852944080306440622537, 209499938666554153595882032274239234279, 287815214123410617771124615210648914437, 289800833651511853031431331522719846513, 247619673933496423772602176733888580633, 300437674527684250893165465795138547727, 218736659430370254617337271901687871887, 245803735048461972135505197356496137327, 180195085240908914011593973291144008931, 243306929536527726651752413081941643457, 180705277438873998735224970785020807463, 193178910063899311007109066615951335969, 188651670316430826600215803069381087967, 318618791616475384860239354074811518339, 295082891982962787055952208517313850391, 241856718587425607850889310184614887811, 287386125229095085179646707017373487703, 308735051432424374696423445556308335507, 252087617782808538275728568789133624743, 185120262250543052018516735954461507513, 219725015473792622072845859629743727363, 249566610978671659133923311113408212591, 318142462058875563931341345315737660453, 291164155086823164549445882979044718173, 301548238900154150424518525694279259061, 172801793252009923136417352578033783567, 218700238217543856435267489861629280613, 247169203865768132068540820809720813919, 252358048710092778484929503097227933837, 224497598289972893577953087230245933391, 227290969581850512315561703823574307069, 247215356572539088750411166886265991447, 310711194489203350855635677182151162437, 172299731038918152014941743693179797649, 174569270992749442971122424775099457393, 173948972089406269699463178902485640737, 332873601618043630484147399938277268433, 198115858757631193701515153610837413251, 236197646191166139823437499352682627943, 272754365892875574613680419631085296419, 284534349382510136758622371568141693737, 263531636280381782706257052038334994967, 330946504428743097542141406361619215733, 210082640494012234673960473056078811241, 317494298944351198830602274888138462191, 215255599855994955608240290636670596919, 203953245020051226446278040899583934277, 172032344975793178455537139190374546267, 290626777870627869433567188562380626797, 288000515923007337765256960488481794611, 258361430740200085381933112980085661203, 226051215167946371232344550769039380239, 189090246098690996679879190323514843271, 197458013143874445104149829785961109719, 292091740939242531470911923616104284327, 316413328926115277639172876137981321173, 311406967952178113984308045064796117217, 310001738224631904958232896915745363401, 224928490804966146692146013884682505589, 292180748001213763027919525285057767993, 212573914923852331227431204469281311489, 227620600930742625933721237124124923533, 242883813043974142974420735883348678273, 317841201792050963526527542895008356577, 321237210294070152141672229228732349357, 253764717890193724145224874572321243609, 279854397920636111065641946583981780251, 261392989770297575402121198700605967693, 284239066236026532465489658323767165717, 192798008552341934661555930471571287071, 209076879737919132300613312558554574681, 320366106421126199133788038213238812927, 323287441500434417255302359595317538093, 279758191129097393614509934182381575179, 184644703742226540333031178833883065027, 212911278028770964015401710511655293799, 206843338982212420470989182399821091541, 248454232414556710958469218277300396707, 266350809338605617022520050759173498053, 326857641648212391566537149779376066429, 187484589153580950940867098540997189439, 209176966481763802660789978216286166677, 301343443217618119227426367870504606019, 254942126405123960754710769548032648837, 333483738827979460835161983759173880331, 180566702053477667957576237778905307829, 246736872251397465059029734482699993779, 203106387083763530166782874251175451079, 199376962780795448796480004460828431141, 322573493324357632143221995104754152241, 175814175370937932022459804100052460447, 213634324081453756117305756430344836621, 214827187072577007077853355927909362593, 244655234936799186606970725843782870759, 324804586252174878270637851090353581181, 287359915279824697494190987464256364341, 247269043082878476692697149375947052149, 302338469908298163112256522976008569457, 289434806293499765116932941767541425211, 229057416353239744479802881023111631421, 327991505668778979039768394712338256891, 249082219330502152071434559571983546191, 188655206781090081782304255721397272339, 187983280180474789933439115918668963347, 302810076351072793379568532564379291413, 179983945991868022695731244512353867457, 303408078743600657893002387525244025659, 184759799104960290132730492819766054419, 252544862754450324779293788079546803379, 299515673227108283952173302803583334761, 236118799495228902005701149372818965879, 236590714260682432996480067217612070253, 214819142903124010064577278472991576877, 197133470075886154523993663107288795949, 205045970087544407523647907450239409677, 316373380852158301719733582972879650137, 218928406155927721658582131521152158759, 315882518605987765196718629375355079147, 315097362662627756846174491643870943521, 191714221078719572086970056274214184907, 285936816454379064411007021556389583213, 173575525882554836563266706913328286891, 196651383774394803481630181004004384303, 182514120574454147798189150099542075489, 293064240042642364970944127089704652507, 233605616215173335474792138753824747081, 195552128133853934784779965505929020013, 221461849397671130181426997258867618603, 193210517230984795850227680145958496463, 207600148416322729452581718481316979863, 240145829744607703554019610794202112317, 311450158523987602626695843612855395159, 322937679068882595239813181119111462509, 279610069114059126983625234227313386429, 235040641630891222889048332152657197573, 192033945161519574650714306533432932353, 307877476491666010721342869961141484149, 301416519475855353638894212489549594529, 209457484274072635767240796019046379373, 305823163627573236867351802479481213417, 257219348286045335820106799886754658203, 212145751719873350958928352986515021493, 178752153414941325109609938036063929807, 203763451642530557308940300757366661273, 287444007899138913658550952859071973553, 319960791489167312659991964409042626827, 180829215912992198409180618472507119113, 325369352646280120531765349085536828021, 182222406395356915273442503868953360351, 215038980117967072271036727585889091129, 224940574835414476387174895198533369489, 177283039308792828300533485201129211773, 217034216237553069255808990115124290909, 333697201199940089716421116525018796267, 235831453308309470277295453864079648797, 338139382198711394472013976474680587707, 266994458725307986215524437315425853877, 232729266197616811959625567115276065241, 306873354137582747808224708886371475971, 267795029992524037770750737145672834781, 222484809356454009811932177683176234603, 217658364673427877797680049438167238197, 183789471696265034386795392033914459047, 174360211218068921053866105806128815263, 202441778824215796333648744714204673329, 272459616928555560006485300508758162911, 297742812956633114598717325362212750059, 277893084236559757786585478736093496759, 256069265694109493854343632822785184919, 278044414111594394229563476864148997661, 203967988557681684709750870249576050629, 319512570940518826867377125950169965607, 243873321660182247913265888411231222443, 267806889497007177973187231481118101379, 234171719033259142486705719467399694539, 239932230988783334255055389995133334169, 310643328185056991866261528471966499089, 293896032495273238541349195649721275879, 267225677607629417170835296775579262967, 316826233261079253996829050104109474857, 203049459623390845685413043822201547013, 176964982245050256926987137387441924591, 293773344322904914458548688238399206173, 272890712628238933267874762448093155983, 186963354377038312597607180579500614311, 225360384875170051638197801843041832681, 201449058733944630998327251447687547081, 207607844731969619081962950750388363949, 267764030551432327236903684430315222933, 263482662800635292809887725293800940343, 293297465458055333318023179125681909213, 203695990119137376014042652171970725547, 183761139979279021388454616689964716097, 244168542722612367578557721528675418797, 199877754772242004722718835745466711211, 256126633339494864912582338028837323467, 241256054771958579184601317036459721059, 318757071104722606734951428387131691537, 173268771422658563314031655288220388519, 249367338375063824234119791424085840051]
#c=[[31897532457274501591934358964001593139, 260540534267032420113044951904942386555, 210053675546933906368620431521163462862, 93435879054158692797301738897462145886], [20834128323237806554569521488317122541, 68773824030204947055061059467145109372, 10783886674325500603576683309362224539, 77006535797375425216344141553818214481], [205162247330767895393645043129700901339, 141055706817898443976838412564552462911, 79706146802485197810856400668405959179, 110031372704767985347282864782259992585], [124304868507066116416850883945087138460, 259360942224170972637950881374764845031, 63892793599848674637446689287748563343, 46223899182831627138706642524322017621], [10115188469419262841069186627081915711, 212784515963082935694346890587324698914, 9463736944230340015002593806477699546, 73647686338851665883421248166268109437], [210620269671614771373901657096628382266, 188212631517620151138069382055839262026, 249681257749117341406841180962697204314, 29638764881585538352661307234981807878], [72338479789243322660933121156900719511, 44570200642306503684498683901677508087, 122705229410956778144226775052849493305, 178973139975620402397250128453779080566], [168377511644469086371496183660100031478, 36443314157384893372573420535449899082, 17536466693848696392497407671379484140, 55246158572126186941761123286889182918], [156693912461453914242826332355483137074, 190977497448223609919393318605248393150, 161940999852049754773756231252867354203, 47946117361005988258692020195148001553], [85351470764416181865098752968216046358, 86119336722026219736406315507128459510, 25432967840919706573972138350283338727, 89880775337162533990361318053441189922], [134945265054351517121617964171504146684, 166151826165474748330789894118323256993, 73019696056646063891607896393243716846, 71256775820641335917075761614673324393], [26959330087990683959706054271946933757, 83269009879384174083150239377968189276, 35649359395098977742465304208679198732, 94024149938687669086783227916625564890], [270713263755324509763717498541799119954, 325752395093441826465908782988508854225, 238046221868935344327880595455943517622, 24510959023778272053291507966769213346], [49488537349154035214789311631858034775, 6873401974007141668965612977494142672, 307756875971888174405764296344705592058, 65917479454847747300303876654335901131], [82131315246355204240146459117001543371, 39737864720343649590098014773579062015, 72216593324855901246071024754129406851, 113327775397086435284303984114320756194], [53738772087049441799825537671144672354, 103904973931650393333900484616893136299, 209669509767852305772503573066871814957, 96802447489832157262487776231855546117], [252235108000183661595662157181023165063, 58254338685315383597787238141107635302, 184390689005199408876169467461158081163, 172489682515686446264620902199083908635], [159548316534562399631747874897402590353, 135048958084493059498020304385275761781, 172682962081227052520127672088515057706, 121016232375940873649838462647302622773], [47913454835453370630423597701266297295, 185699303247608137209842790053699113994, 137863580526614299644510703804136480021, 161471540646688855943558524865385728897], [73164436732196787144482926821584056489, 128894817336199012068673663318777186576, 151886610559681849447528603631644682629, 135075125454351478616170561963891848187], [179973018746320671444160030097155768922, 86283859979117297802011584299258410621, 71403791263138248387402940713453865836, 172258497448834530140956613448809749613], [167987226121352566822813107406134452323, 131054923295622763327959786930089966514, 1141280432287873688232846583721706461, 96882007804640775210758929174079998880], [179284968645408480591262447048379487281, 58263496463833587483114802892271391386, 149909492737232095307018683110788804676, 56055297024789587843407371221478220508], [56786067967212111039098546080199123707, 143490616832563830881722110611691716208, 70613729855072185320470096501645859159, 6831648457446986681624079722564614052], [166636059132417127073311915481545308081, 118334938576626118108191884314219265643, 18551748013687454220421582832915261636, 210433811811417991359095882570035284844], [107647952675295160538642351248225303426, 167397055090019954475211256487842946115, 37421514985810822000967985119077438511, 52244401420068594540411287611405656844], [68644004653264861506769329550378577659, 278405989774673012824578604439745456387, 150792549098607989668714254885612355901, 188720437177177099679617324326691565229], [105402727315548825483308779119952064469, 182474354003672399730811512211965938027, 154624986710393624407148783093427341360, 469236551782077806607849962679387008], [201240237289260214903693879427571305765, 84014855140462666856169467105372445292, 89922790797358508724052909801732926140, 83176091370730096460519112633042496902], [11023229341522862314941576973338057643, 167331426958989469158211388378744923901, 182248319757914384375839339939458900100, 118658973245375171666095975907477650822], [15610992428714257799514348158901491940, 89219476279938561096355494718636160815, 76259729609974780371009643256988777764, 124546450520884473865584394485612869925], [46887191371711933744663576986469974200, 188855961076958056769439817993596752135, 20673685879175365206004908813601737646, 144636479009771477619804891603807938971], [176202965085040227827886820257495515777, 133185078430659904306773644832112293730, 119317685826505159812084026466897460228, 19588388115701640888262118027835919460], [74183750256029504230800292092615154486, 141818012677622352835852802873773780202, 58639108749511440026090572734088855150, 152741401044888831794183262344946548280], [141655098117525659031294865489288921978, 150679593743746027797864688024618800518, 83497330748295480763515514060714629621, 156996039434961091630212486534089522827], [225481751310026702530334473398820390103, 149512016985690899973453711753201244839, 237580869716781931909217698580515555822, 232828580827316982593842239566274497411], [191974910785462824826375236295916029746, 90180882560866753058663561480680447870, 62456781674109277785632986962582738982, 207739701856530052927324585501719501986], [245732925293668526436587137502804755127, 77479036777470745374926042252400555330, 196183090784194367461853000474664546287, 105272414697605156609960073196450152024], [238721917819937474466806047300598518539, 14275679873991276389123117622270251674, 263743883043038183632193313705141843440, 164618706200586833745238791945313193808], [41484675382903727874232509656468913379, 158198968054942088850144042039152542202, 24742360306056178864757837571962081210, 83800573544640407112465663718164213541], [44990327654300793191598693823943589510, 48217580036575497150242312380435436594, 162837026575766611888190484039439612034, 164194605787571196590976421773781149677], [104519554729871466257364491962910562293, 26462274614240906929560788845594467700, 91580333702708964892619283680873316379, 32790931906717800116777874589415342319], [120099833951292128999106244575229471700, 96321319919194118097363819251071292538, 28896394451889031891593843617632216354, 88276711189079334996984436333957437560], [174107471769974613006111993261661753448, 266350870399281824248784680488916121385, 254100567666807444239725901772052489895, 79738173699821412242073280352183701606], [108544097770221412382986044105383469538, 116721323602344016405348145781068271539, 110908055577568587983620521665720421131, 46474303369510834196888196691034663936], [81495700514087579755223636551900337734, 52679436541007597229486391480244036326, 35120440067344335993520583179139850169, 48905133395847896291860144606830702269], [21321702712017936275877130704813668233, 227620219626815719820918898214484682492, 283829048135630434529145135977203156692, 167845696880519276024303520617761738964], [101912432526926179201473597305833086094, 159698848966573715009278884819979592968, 84847166050699380250256489252881727410, 196542176828735810264053905199070460963], [126469773610083852371420697914592167484, 178619075422125270257404822597439910820, 78287161544222486949308550653145121039, 50253149043915927965716773042387507730], [97479694087338841850132885735719816519, 84182183151645959317866799120424936707, 24205403984587671987721365276768482993, 196842363452530895152841542411596077721], [190223163387201695220241445943753109179, 47816468489744213288720633538444094829, 80324597354158851165880821921793330208, 89863436615053571847357840017561789473], [20530630500298487445211642473558599627, 132957377111051095314626587407671813080, 171806357363295279345839579537423198795, 43465828154513274257558780523508276387], [87085423545857494411165834646483538580, 265588588061461648945034010475387734877, 142528214662520184504862337846456012244, 114729364722350579174162350842559886320], [152216620527517516840042451587369228924, 207549833148928969197246532033555801363, 121564247889140224048290671608408814427, 98116509968324972107897058601377913958], [106765776623701167072766253911567328, 155443908389156485651537910464916349564, 49594310712078396826829252932624839976, 56801084837695142268834678819116203940], [109841462790897197189881915072467747932, 29021721029870097162690056264048069740, 133619551202133614901368012637035847309, 24877481787628180782804668852207856063], [128230778863202260622470480337042045775, 129070981140790439858908403754970763503, 171392360821568645419016147445740467828, 7577256858179186557734239331944026927], [32424748061513413995019990872590060638, 204060186549773754407025342178423867604, 179391115449129279773347662220862277403, 112840132740656971472073132728695953500], [114943433747687099538398800517713854300, 247185433078957841920443960590302667167, 227948728081539189545610482939180246140, 98534481826078696939037635669538784847], [103638418044873284640718078642499361677, 183747490282652454766583307781873067086, 236939900561404293627194568881148382199, 40075884484073624183833355093417308227], [59077974122479490367066851062507472226, 139104586706538418261861368806237975860, 119840002308337947404232545466633950072, 244605884017710315270171924151509547321], [286371004032881004540161849950078725590, 37824597156953769980465857182619539048, 157322708035813592080189071676718329815, 44030443710848065140261001068269095487], [110215719618428889434442587806304030563, 465757905872871022214874471862165481, 108085711097332241510510004956613294977, 218181708349685105126488846724496935324], [152936131197820041979308733463928859451, 100664250956147174040977998270659119347, 3098025354944606357149341308364346863, 115254543106209030689789768678904256215], [156412861802894894908492324039069112132, 161051290871050048520599512055013711961, 148588429671079513612867916112081538315, 75002646122576491635846635369501991244], [185712081315241603107630338912392395894, 22540700788543135204466339983601334194, 214781140297904722995652552566161495172, 162490590650095228998661147192445016999], [116582917021192705481232842492655966970, 6795396313017179394522749942677633464, 149526907943962666855959112757244502006, 2376378050496964356215921209533483247], [18432872423496295330016260844738116737, 121782716111382112086675767117642472520, 152501318585559847175144825882942716257, 22651896271384238797325993097420198549], [112203549213988053061854450753836167946, 177131605114623964530124289099797612176, 106572608947930566352330683009459651601, 134801702595913501635345652489077397167], [227872871358862245755050868301060598569, 100583463312885151456574322897115652814, 228499226713727653584380238272298588262, 131926695886392418197833682994044719967], [164120139805609209728724123731645785806, 28862074492950348898167605006256962084, 267213779732724807919245284839146009950, 99386091765908709251204249428175646522], [166716873209147556730539769222174645051, 15453318015110028282800033378056569442, 16293587930826747111491854649132874757, 88107588706690257091998720674252867481], [11197873196518825375041137797777817204, 77604597423550278297056815879540947588, 76403273435196741745559175680647779994, 71834507357334257927939137849112525914], [152191264117867259959665051018961257036, 265826611927902063806933794052525008942, 224841202976592345550644385081770421500, 302682848774645056736632312120651514603], [194194061161141157801585562131913092874, 197973184227602104044324492061415287887, 59589012996347295061252564013449102218, 45562774873480897769307702303626600558], [95313519433055074811016396070595843387, 142126918962036291638808594490470749409, 79912537679379033963183309417075373372, 146220611809005737570721403801849184899], [130393397355996822735740898348317166777, 34802332625533653282043210781666169301, 119196128372155970651227078365559349347, 212338223396271385772690193886319383969], [197340148093837205202183413033931598925, 27308099347695453016450935854641458418, 219300073131451723231602364540015943707, 140092627639069658702600054620994135289], [62498686055284186797136189475779623171, 64441704107957134156195455708283666575, 111085652822470553734070393728235163899, 194615883416466198031213757036608049464], [196876418286577221312732898971791908515, 190741022904957240620906511159207681378, 43082249770695864417887483263346316964, 260040300441233799050048501102648273411], [6885703852760573394847708706737085874, 125168509304342180155217366096720916820, 122485580727367221369072489436942090578, 294215988835298845610835231698414565383], [33900951797218430723397816038757682795, 99626800172356933461870635381213813355, 156067854591651189512375266494450209064, 65603822524439010309317211812504240467], [175876453373498774573768307239435355466, 32216955752585474805406139541377629504, 38856947489542884042673770573736527168, 154983109275416579070985742154884177889], [214940210350683186945331670659523709576, 71663513746134767461385950420494725425, 21394480834342498443351260676058303600, 136921570392572815964353447921732889452], [235961999731675063024036425564841775757, 107726980930311474916680320756713997980, 213675136729111083685262155615669789996, 211662543728800887473979764917535959116], [209950006559930729944796155073706535188, 53916329560493091264095601047579003142, 119552959762077386402689014436851576232, 140165341140387547226761462085695807765], [25192128767368484826444318005242106788, 56388430704752178135440754463993710153, 46800961071886890135012943902643585909, 183415646979453140991436463461994700069], [55968071704586306682677213916961904401, 148067352857439969961566326238812093295, 167580632798671202874661852952882183733, 239565605760303511677618536974889128099], [184669834691809767741957039703895212772, 237612102354033013541328008762303516268, 145157534511163287023371430105838282933, 158647071677968212569704915928673152496], [43798705980750507328860760088552035966, 2065737625587940210789057272192792021, 169441022629164071520835169974862151877, 11876474718605574900466919690606261942], [44163565940575068976250168042996451274, 15540938598055324178809719497533247008, 145045684094382802571665311381549396934, 47329389082919191348177640263342172668], [80132867279323561522278952353452058648, 126219019494648273906587888530741387427, 116071471768509697901298524271715181404, 8012817687942374276465133414626147401], [29435653434143743892675687088105778041, 22428873692644338385975832614150557194, 151519820775416032040980693676331377164, 219028246158524803611393015748003824572], [62619359934500108768373138054176734852, 92350758993381782547553859576075035533, 119005938290726485277974291581443650674, 93947566197509965030599752996637516178], [143967753270143104057283664577472570751, 149003552411012966407489630501125173161, 185937144318646004636945296407461968575, 186876983422133160858447363235711444152], [101902343396394560111276559681188381952, 146903308856570846867474159342853868772, 74930040334113349599787303658405995634, 252840038744538889453780646718298783453], [236938575310510027070556761584251551230, 79840537827875239030823120160233501821, 162384399449751041021982001560713274972, 165701933032391701623504365622441841186], [192726368949343670733020412498165549818, 79487274628296787217770728572810802654, 193411822808953950169065053286893174627, 19424885446265082876463276310043181227], [166715926025982298656755015006193768665, 258636227471482655867582205864727487847, 39078544263451108990802015811292108502, 131818529783549526417785446291385386685], [133958778641211261696968490589686675881, 104021919705406994721291643426570952237, 120374650774839945376634528983832775567, 94303460079200567962097731277532843803], [279283911653105230220457852983476968504, 122134654910309253305913748196145758220, 190668382693194757420396968486810334597, 310001453344826744106537794810318637412], [149219377682089859173149756530521396997, 65572270716601480535622969578420956915, 69968417528313914983091001057519110940, 62817967639741588814619392963952408139], [67480270395154105901379694399779152705, 22878050458878490403658394494627686160, 122648837392669422632726726713525350143, 163539664666721308491548111618441615306], [8279143031979371687110849986511945318, 89454287153215931017668099272987712583, 146877486885038838920639689486442985953, 25231528150201155140024121919529449514], [177641384477048202480451960877358537703, 122770279774277115161354385552353646573, 57928028466728338910086060038406570528, 232263665119017755562776375365937299017], [244014008525503690184921030993232520874, 134334765859843162531890380259989625493, 41410636511669605151878128048565793839, 258792138406951873817501739530872711905], [60377989719956732168703552752746666004, 4531322783372309511574419151642915928, 95048014520599696783981793151943106526, 219123828239024966897607811084419576192], [198195197395322101433954012461969518042, 9078094100178892546545843838106080591, 98585510978788115616172632063912623320, 16312648788909107837586694853538661357], [180728041746836086687069292684395503458, 121971288020106371415498690683868538740, 171303583295701996622757348580574503877, 56787219635650668298208027442877897713], [92359437366165702615148907991773687435, 194623404301477691454784201777050417380, 117674530650269070536323579018238473192, 100781904624554079698388229274758660961], [232008744414429410039270578828979648994, 55165845595656675418294275568295103602, 66647859177493672610418441226389631280, 225441197092489813423262519877953853263], [213159341798863839539301213461462949754, 9124545163983318137096036858968245157, 102211609279279649872988133143845387401, 46804597721407443555595882201272537531], [102713356999014122256333452248416798076, 299867859778609161386778546362112513749, 309155751278871631731267080129402187608, 166889064828376714198895167825419843506], [171698030165372305270556433018646505159, 256331831467266196993072783618641290543, 66402730125096520081477554502711208147, 26898256617238316470657284095259417563], [111043786512013409242934450974653226469, 17217316378669453844827658690729553543, 141232785400551327057416017380294236166, 18640014433965118917900872403810654808], [205257350354368697802500640813113483170, 168697220329636622144913505543077319233, 5434999904412442959910019030147279312, 77118181566970472016257096103396082988], [179720168027750956257025692647563515448, 28242634610289624267235325720776803996, 260267562961257310665879588959057955, 42287441798955713032129182326476166628], [137725096420185491291337204842025844881, 131132392771012189967804857438761022984, 177513849731793381523732296199442352478, 31269947606399242795863982072099242728], [105033086484408585024540348017283204042, 215608763962866540664290730729780205813, 55837009755398457664882455133103612475, 144925479903719629135483754028283227720], [270576932069395079529705801532147059718, 140857192924034215840058329296311234993, 255401544126282241422914857981244057609, 43207203952384790972877867168167337506], [298319694395495252252144985199655478627, 250835750535764602027446947775064124142, 61968508811788216082630696470455725117, 208029663919151835114430221951777843777], [176835247291789220374976344037228108436, 220704812126942508903606980648306288057, 178322826824886930580206562086677698252, 110384283866815960758717316037165556435], [57499176692206270608295937546342539259, 155885813903893925936745592610577299753, 261583010981769674083050311801950590647, 91881171800170403399878920559773841985], [96060529450080470600279243297778165947, 88687947861840705216032870411829376127, 55005980769467500623571988253774154506, 224925647280651796777768938199743411236], [125729692316584910177511481042638005759, 78069605397041410449680274964090964514, 203714197653281384011465474424281728604, 282888433450052872915484022868908623300], [56694558331163220125181229120164744559, 141615641384614863771798782597418029439, 101504949319499701638178720632992747871, 178996951514087922888564651494054330251], [64807177235819811396193327820215014382, 29365272231715117516793789160812633115, 106911244238812874955404207985296886306, 84517363873312439934656330328257754253], [223176674284571141772798792007141346623, 316982393514389673066650392518278453820, 30003160500172774483762326937865357510, 285571410827080893055630467776950375686], [179145797703537848509876706019049322904, 119959855975201895593902243415788956134, 97630392955856867279298866069617249728, 249919748403239450702498242497022172769], [255583551293032043864864921582840880193, 23792355273684024369283592552648862421, 155241016613501899608777833486812389780, 198518064609542624300565256518072513685], [120430036127245731949579475365968047790, 87291042533926980309526511520011553332, 103068732227562237967610544225787001173, 43633723162067718536459803677612839414], [93227115117254082594729853937575027050, 162567801820947205245793124409523718084, 83163683200342998627792318227273473506, 47834016137885681708028822604863319213], [76816358989066552202114359614533763038, 115688906980275061126526335350480073168, 9505946473350507903654417228504896710, 157766056673476271629604073399998455428], [193312635015953732303686257292161152994, 70754927397539064153474559949202873140, 156343914621961471109476960175463894551, 10705435796869505992431094138849866278], [230264007080338324146114216067715940453, 106339799819791424081427044413622781152, 83405348090890135769541277073212959855, 96101925969475852475334000530114168712], [295119785986754732277569807652166195052, 128168108366994822989004324931486801935, 152956325207953283609124166267369729332, 128084534577818078660288608736327929986], [9777188594813160963013176136814270562, 85423166815925896758280922862680263392, 176189727313130605987037198961229833726, 163952059386627921956804712423059269438], [208852837457812562027174590511200520774, 192346992364092467029882019495222533285, 26555083545371077199578238370530732095, 64820934264966442983298831712442526022], [98298344177629317117612232174502468254, 232560574630147037015062258888141405156, 84809654838645841951435534653874954636, 1513654401050446351033132356729253130], [181047365429204445781277937154474973752, 160343739157989935623394229684136054920, 204035983988720604231158337553957292203, 194227825667410215944117102912013303616], [146987694069584455797744888715736336857, 137818111056801761011605101582738541425, 199962108049457938412775462633444362798, 324133327940866377428823508818621229736], [143000519246719564991326340429555385920, 44890329404213354760444689740461329408, 178016720685831462131875797645819602983, 142819327759924894440544148041612133340], [239125789394152913905522718808542754298, 85083117651755159245652303485994557800, 34520315580520711086278797281862011278, 217356112019192355282355283892304738269], [128462756224796362585898410831715878391, 21448222962357517726674181504263395398, 65379582248378220380598453634797912694, 159025871357133980609935640613219043761], [67039452454699858046161229310473390397, 54513261154370407670131592053541447713, 131716234846085524663133818770108304793, 13895505114086792542390255816410288808], [203802131562338951277146117671211911492, 133923560921459977006053367078974010006, 305257866328148378282331511810514970975, 257806991339577396549547909497349512586], [134797422064890595103139536412458399236, 166093973112040515716560472117479648800, 110009776329599179322745450256286466672, 72709271612456853710652125065641063169], [173743999133483840428763191154199813335, 117966337103935428654784358022398542105, 170462080793254638237467744491291254540, 160361068763899873792754599674386483757], [74517938191138607001138998101025199309, 134516975785321767204096609955053169452, 132554964936872081263669786004242189941, 143522865570400729977806434934142705527], [199047783436739257162049323029446091676, 53067845489046938563276068537607643941, 154827930240607737114138914752064216834, 42865719152601260934982512860790753036], [18104801435982638412382975677718429466, 198150889382491457952590458566875648711, 205678226913690001809304728597374350136, 198411684489694721781740158338793170009], [19749528038839538597379839771782638911, 98209904178987212053661287328683027451, 183959978234831608533115386735994743756, 260670980463598175702166403260567171819], [188066401740927470350765868092138783120, 10062561581219237831242007983837443988, 66744908744548694566139115810744984881, 29382816195161504200570987348519871905], [198712687134089701185166223120312138569, 189634339265551888740911110314449746567, 143128893746349046436460227240910168224, 78463204902229050955426803458708118281], [51574495798530582800821253841085643620, 192882723656514333606384658087211969426, 54014081163770432010196627872365187365, 243381578931368062193948551739489362636], [211824059560763317921014653644867133252, 6860715825497891582549325698814088699, 189936747716673943915624331951913134987, 83529135630205923629472306671975832760], [254891574245497555814087610529956257659, 48108601173020617522809262539480040797, 255699521374263211465015388641788944314, 28318751702197859729615217127606847774], [60941466681031836230960013372097417803, 73733073110061649791388975471514624118, 199834617039476797327043485469253995156, 151967335971902266786266020343735791642], [168207299684932810699680329101486229393, 131955951039229277341637423816916462078, 4226459288103601880599508201004378251, 180486640023677482181170401819875195430], [4393822752848654477869954066597981541, 63260657722817465847150037460784277166, 123581520609651415810962298951586281133, 175882600246305006811717152775737875380], [47877125916481193190249335133165587663, 76554384250946002228763064000841829401, 40679415271073413212958907642145884489, 282603802372514046856201711909870496177], [88573997164811374159678530542665002884, 141918863410691282699509137455835631659, 90007949875448028989558961444058480762, 132512437074211330240409059787133036185], [100382430663875952370112576914310297202, 57159151185664008758047252971441823559, 129311985906520635683157066472700727712, 47164093138628567833074862109581870101], [175493384537228011026469760324776078361, 137235378375891622999912053314249719308, 144240354961456072085462453449952932161, 45880950916255262179113194258678947776], [220314220560463702111232840558415540957, 98732050430382865458515371457690710765, 56624964662603525169318009897205649959, 116478274856575621352232449145538687036], [38904300508811713116692428657187818402, 119683747080020069623870247768386559291, 256465065498744728455692810215956141431, 201416651608848795751664047948180088792], [234825481185218792369396391715368556181, 134697039295215138419364746647860126968, 120227216494045383392111745511209499583, 76584498465626463015736307676456713095], [225614711185056002130253658371887030783, 140355926673483580795060437472556890563, 102481021027748329796179595961852446665, 4900827765937030607514189613512488772], [196395547712370979649820834395093611828, 101113488813111436160678584392220522467, 130596538304969617387712408584463153172, 35338490641751234023605789368942917066], [130653660884936432442555388947162054923, 36558899367148869352171298596877617231, 14662145669493021049952084980329342025, 156234854241596071425096867491250716374], [10609853575986868181760428517788225397, 152260392404908849315928556709579718198, 23431025020073064931678000319979696623, 58943007108967016163410944931008781474], [70644934521889819403332429342600499923, 177564468884223291777619881700517542420, 134899876150054127119472062903457595866, 1967488057022599632317045974546660804], [125547002059450833786241312289532687481, 142148350737330675297711596438043475796, 10973639451342818395997900663685427755, 67582928198480173956842277234740463610], [266488969782119920540633032669281534616, 66117733522275813849333417854578650518, 141762037285850733451239061530658436602, 76308443302568912908067676684417909809], [86827443153622345202236832496465504683, 99100440212320190716984396119785111166, 154722965921805091158138406155315300385, 147401379911400201567720303208236894994], [36492531490713069706241240828408353834, 4593257872763419878681180264012382895, 31844514481905796089872576345242396046, 167840744338961105507010543290835914746], [253126578278445179144208943210135626649, 210923045553095393516336130464226499270, 163120580167650577670935745694939649274, 122786113438434978744134233707337470615], [55983605043043884315627172889713033874, 23053181146612926190303803910850196569, 172505746041750885753548463625108151054, 125711554555738033265620368680953771881], [26187448881484568117989567258874466441, 33575849311599579613521432882935919983, 120423950661894925229129002400494356589, 79613739272603817477937533799616545081], [159430095020735085206701571240219138526, 71471208774860432450836818335813307467, 49293268309909604630799683912644044667, 99506108463397124507125781075251596154], [170393635965899223198319031469312846801, 63067321154245242665814953178790015421, 245958467738172983804007349596864223848, 102458335480243769589930083315217985604], [137449788067606776979818484827731362927, 60267896519481425755904758656419947722, 46387368506554736893604586504211563529, 199513905309402816720863608213061061192], [97100573900717867128802050336512465605, 153846644521089016899159837173845651709, 3181090004081996890886681786431657748, 189146854188541470825586599766355772419], [125257559569663001760247149834724414541, 156784768484860353817100076453854829362, 157606698210719760675988721352238636378, 219419030266733603901603226259968623274], [40336779846457561366722379216774670539, 68625874836737453314179194629520114414, 90270435228178562127777550562827787670, 93092119932827181459165700665411937549], [10384527644205220890923681712335300682, 116090708130959652765564067354050952059, 68086537559167312664321678771480133746, 30803099580253438487972984114058035733], [97495081489902930876107862416265921888, 4347124474278607409270283747312760022, 174710015959534371807166601676378387013, 69413541746521358763432128377274785286], [192650194014574171013257953787769704325, 56042581603580651499701796053616999838, 251333586114869877480690684937543615649, 191454564023061332448687687236252349513], [169230268720110350729992056559264687555, 209817029886838348841792805270298494505, 139969644037944447566066318320430080966, 68243124570859630661449483866498908476], [175302552374705837720467475269579578333, 34079358790763230870981356986611646282, 122352520290484867079165126569307871703, 246205819136363260969902064564228360392], [153917776256583890420357539031903904682, 69934970139538901807092647204185026875, 35267824356186459862236324136288995229, 35889850508510704638020458025996381301], [191111330006905408922211244218689967286, 103967866292927788053702079881410218951, 27953079743224067396448772253162486041, 106729358380294060600139237907651506042], [280253596135062347984986508617659441731, 307487827917038788548839273991439824561, 36894428628732151408043072223121590365, 76420543758154510081595316427622695195], [114681455830903256868461496567228454543, 259580757890921331422275218383449827416, 144296827350577668511150646598925166478, 7812613557717682246105027202466243086], [24046670660179233524656655114208638021, 162658743113403421198755229358375570953, 110884497157911025013721294489306169100, 93866799161798837965666714405069388354], [149840280794716101298007531949344254750, 120076726599553619261139665380532106450, 262176953651249097999793313718741344993, 44904424560653493661680666680215598411], [4688871796216616080105215431881746450, 170451121315330123411655945190941328429, 72222141254270208332153892040260212841, 165617162490604250009116549706169344823], [11597777778994864686161778877144021093, 203022894113387657039155443269599829026, 208907846095688820516464557354004252160, 132062942310162283565370990597453671981], [41073909076200760465362160649251450092, 23727600228727219264630085792353145837, 71034297091393432635296182734041407924, 77444641722000464027601097873038268978], [108765902505582520034485131403541233728, 164872367161747570524607102879341437838, 37935665682628465679108932559946500579, 20910522552049838646870946691922169971], [165422231426632740574403566806109321717, 78811426401516249344439238013196686575, 53905513853611537424614798185944033938, 35098288194316966656976921799299174349], [226121221947315113851312366628030373200, 207981612010258910574303979621948725987, 121931814513467629622339694230795183220, 99991068080483988015226769581306267588], [106151240747813083947144592666206469110, 54497864831436441809375608839561551267, 69418088681840099284404538825832393369, 101829998463229867819500690594044063774], [266303888310584340591690271087313022799, 304907429328736369501865246910839592797, 159099547452886359255873818709663053981, 80209860080729195853557772751535335340], [74298777915003578922337096025923207281, 5191471709700349053291668021754266675, 19494292259443141214142204148296718118, 69293084770448593065504570684868134253], [205038495954790150472122402476160596421, 396811295930185828326567369212407256, 67724642690131836214727752767622540074, 16948736934513870953451424466347261863], [167822991754817407976867686713451228613, 77415375218269381319958439137508521812, 222519208120020634338440669370537076580, 6937776184675400419495028215829354304], [175401888340414322984080648687819751705, 25795066437375525513746874209023621555, 93948305492794486095550580171559196998, 122171028498716765479586391450190378441], [173080273803226023556047527691499520552, 167015379533416052001559305585894763175, 25834729150284425620721098783096817464, 125823421518752449791514312812853703178], [241832912338733874848465800747138313671, 225217149432340654610560613615824334324, 67247358619506799183153017869102027915, 251857884773958194236222358346500245133], [128655153235018571667130463073005935194, 181515889433725147309018021180761357819, 160305365438594950590166073018840110739, 230318921969131912559993979435685954766], [253222561121322854521883054260318764123, 279319985143688824736589010774078687212, 299326237631431876410741943095874186463, 313664230905206897829529779461738158486], [58864501817261071084509901786436063534, 21621266588007927870884208988127070051, 136223011690283291186523095459208553772, 138738891151872372222653886727138279013], [22587536947941977848069471140678692225, 206890834379200499548117083929793587477, 45146183695910686841052850805793125252, 90020102105806551479111193844823628368], [260510437153561050650261107907616745212, 306795555860485658202308198898958209858, 253409965894611821242550921688335367075, 204193264660612222529494185149333296599], [214781886323002343125130596411911873603, 188828117468300122408709091982694361599, 49347192541543988427356014856499698735, 87240193732109052572611443879746811519], [31986480139898866442821997878970993217, 595536776165408829000244529314059196, 121637232813314248866900070405446179979, 24586509094042626862328680843834368285], [87430081026766412540055190073895532458, 90141514480360900567677227335862616364, 9117781317677423814101258805296075188, 173684689766887691510362351894795514261], [6399285297479902080394326139761180931, 164167774484975295380593978914731111801, 167247318450826586986286320243664532381, 67531588807698123563712769004565744177], [63116198539915858795979965217305455235, 136836837937795641644765059137709479659, 170261551285504188251278814153024409513, 163474762098674572441100094657192771916], [118728657569954857519265998725382047309, 97285636682564986778444811022192588398, 105273567015655504010562253071906116999, 29041444335645521444595164610440141462], [98718765403146296313053155381264035563, 46648602894216204431864025377563314110, 52053079921873669276472899711052911165, 156110322353299321405695831673959251577], [179179357530220115023126874124542793576, 213232403728554457916200216239329937971, 295252310855858236992395683639931595615, 36629614886703386316441308813097048431], [122112494958252678577174423405128851574, 78056945836677707437832712798300425209, 79430817172650872865566207702101753659, 231293540401332076787599606075298574387], [245192646035624987923115205410501771132, 195401166700413610155708494084887585222, 49029593950976043717695607572099838671, 167129174009098693361798538252898717984], [229798655292417846853991963047436287188, 166269037264509671388404392583268202717, 215761133842311628231621098934774667774, 28654633485278560719998009405980979026], [17003031897865761309610908543119945911, 117072405545263761574889451784339521455, 131893482601428765940898498442651157907, 10628699647249119854732083748470431143], [119407047220408683308235083192472908642, 194018906527835865777634005101275756790, 275573755060341117193864282698809771054, 290236316596134697947452313468264847357], [26850761006925669274660884341778546699, 157931094413042826883370036833361286033, 193847934054560732878649166143447044039, 13922183004661828810006812984375982109], [14445558522874703677220685084436688762, 251673482351051707737854970928726443384, 81565914126171078380576464957062679949, 259157541725205628919251362997474535738], [43782492393612320417440631398521113184, 174980147107248619820371960465360019055, 224621717853513719349239542617943086043, 167311836592698550149108043196104676046], [164451085486448622705745260481300288337, 84752447720097251462574995003441492768, 139184189717295461790550547383051566405, 170573522324894600358820686443777740485], [140814546149127604666979181709459444295, 6588930470017954392155194646843124173, 188071649827369256639574171611772520613, 116914562968158223902476306582709511890], [276606777137177081423579892384989661458, 164090526530019091786482113891081727145, 256926537736349855182703089421545629989, 142557697836940902518360345029782549324], [243715507272563099011844808025114378989, 250403708928498619786512596024018798736, 250343559585529514740768314160596805374, 111539379040045574280290205097439134607], [24216293486551032932606584620426101684, 167582668241922266777381452876288612950, 31520770066749828567977870625519947768, 218716982619938320860801600633479197551], [128163049836136693876915186668460172588, 96602317122770990141729558218302300828, 36333383838536718586166190558815385076, 131355791823763697096926175636528640496], [100937306664526323695168417977411678300, 92725022122520943777991695880384979965, 156840278421314960568295515883851165585, 11079372989948743797152632737746836892], [156329748680824138999262246948426433316, 69983215317143167876389244424217741808, 44320996723351191720920826893246004119, 8222383271710864774176957904720403667], [202186441543519554618069430384991439205, 80055265264806341497024649989263605422, 134145405384515017720800289341669067211, 210796433739216979816958617886781497954], [116761926044431348918229036036731406744, 122813152529328449548775630393303716699, 15935044091943168967335564175378705271, 150160966914923522815939193160260468058], [168679971056356668440505996938402885184, 163107575351362127939535422256908071969, 55854539114658564014744626872086315735, 59746527433071692428154558281636539420], [106943910662821198816419811825707037658, 69840314901853354586313616138648079209, 99833568664994240438000584039194455570, 162851112306340122350856685689621667741], [111359412282511916404905226369260206298, 191354878874214098793799204215160978004, 52050297274678538005310230851531460934, 180604247092547306072279135092733662290], [14597177161661573416054188572757459752, 81208874742411402694769975189929088751, 173444496445837089902328211302939658278, 209856798814153649810083732631301541538], [20546245091765322526573077446189790105, 112027525949770323620483536698255112648, 135150813410184821452427717671951933698, 226092966816637839105163593590640601022], [263357690182656029021986792905229127366, 274327607499019075347802766507234288638, 277273683596238549189881120964907143156, 104308458624271967952863922321874861216], [114706729644949694633256188167499251662, 134642010658733456604603507320493925185, 126954115145478440165752640245927118828, 42624407194497755256959615620635422861], [156816997769706665304101553970544414312, 108562034374436140540003701778520957758, 14872429674404935647995229232041147546, 159824299238605425836643298920642585172], [217146339859782897813024491491371170158, 75380687565442223739517441964273341606, 118135262733800414212462666437741208919, 101296928843795367039926359011478642844], [196361360154605955946455182968656122482, 95383532800985793925844112594442938271, 23655443933065812510309005764535351133, 138426774784657955515614727525628908034], [111786147417599981645718198497182401092, 150631414948944134714812843565681555511, 234673324986555550719465334236110593518, 161918577635114590687972379880609700538], [91820937069441264995937685097677887405, 103189747416873965024317155818315647277, 40209332792847429562618610027159497126, 175702398390725493790533335885414284937], [233199703240784711467346053782312622391, 81029033344702244057961256821752539080, 63908498942159851061462484693789736726, 251033929600782697048194772018899770914], [123458679229885716534039961513365982976, 29127319178088371702693295356164761921, 97505093046900219990471764856012186667, 94452108757090188571669849401102704877], [63603083491210857746147261563093140494, 208379648602702641013413317674500233107, 171182872362521824053785285788842308153, 213759424841848441035967456508001062269]]

题目分析:

与题一一样,只不过 p i p_i pi缩小成了128bits
上题256bits取20组数据能求到flag,那么128bits取40组数据也不难想吧,只不过此处40组确实是小了一点点,得不到结果,那再多取一组,41组数据足够了,解题过程和上题一样
解题代码:

p = 
c = 
p = p[:41]
c = c[:41]
P = prod(p)
pc = []
for i,cc in zip(p,c):
    pp = P // i
    temp = pp * ZZ(inverse(pp,i))
    for j in cc:
        pc.append(j * temp % P)
pc.append(P)
M = matrix.identity(164)    
v = [0] * 164
M = M.stack(vector(v))
M = M.augment(matrix(ZZ,pc).T)
M[:,:-1] *= 2**4096
print('begin LLL')
M = M.LLL()
print('end LLL')
M[:,:-1] /= 2**4096
# print(M[0][-1])
for i in tqdm(range(165)):
    L = M.row(i).list()[:-1]
    flag = True
    for m in L:
        if m != 0 and m != 1 and m != -1:
            flag = False
            break
    if flag:
        print(M[i][-1])
        print(i)

附加题
(PS:上两题由此题改编,同一种题型,所以分析过程会粗糙一点,算是一笔带过吧)
题三([D^3 CTF 2023]d3noisy)
题目描述

from Crypto.Util.number import *
from random import shuffle
from sympy import nextprime

def getKey():
    p = getPrime(1024)
    q = getPrime(1024)
    n = p * q
    N = [getRandomNBitInteger(3211) for _ in range(15)]
    d = 0
    for _ in N:
        d = d ^ _
    d = nextprime(d)
    e = inverse(d,(p-1)*(q-1))
    return N, n, e

def leak(N):
    p,S = [],[]
    for i in range(15):
        p.append(getPrime(321))
        r = [N[_]%p[i] for _ in range(15)]
        shuffle(r)
        S.append(r)
    return p, S

m = bytes_to_long(flag)
N,n,e = getKey()
p,S = leak(N)
c = pow(m,e,n)

print(f"n = {n}")
print(f"p = {p}")
print(f"S = {S}")
print(f"c = {c}")

# n = 17136970798040781900380375320476125807482883272963342140376724300643370817126646662261456510027577187134127341373224181850553347975472491357107520470423036067354366041044010874920188924485643331069987165729822970245920771166883276489837179524171278367684802474479344985680373657424382929956973166298009915340031018416838956857065231992318860392114540455374501132708897332628475900003289326210913382726888454142835953864292886007743638694465001230475376665522999286023061393196173854321716583018043935891333605579885238394375504267990446711334793303484106539552298846772661498940487284182833753415825031456336994552397
# p = [2420457170519435877909427851891548981312199863785865323422668385663251156579124554694807012123083, 3860002084813312153738576185709893035602651058189937262317601297131146460849957043436256710279617, 2553124134371778280168985485792031156555668651723335954354333352794831196108331370591304313818483, 3267322838930334678676143962629082512530189492521095928086637175372280409817195404360172511820309, 2889513486033565991908148278670214695707318833966449339471298458930490058782510196974343872264179, 3488146054686432526927294239758648889407917269045610208623883104087863853173156307314133700662649, 3279101234480727179809728273604258162716892677104629117916043342878463079313970241646161419553061, 3135131632193298881018435611540523248129328592319775354225027927453897901991089207319573808837153, 3843667539602097638947336180293415292811946371330335687036041420900157978190067463468619344666227, 3749897351309425497962158903707097319410509776278824396941601300164526799923562948634717530995307, 3079828432159767529471681839206509818543685334273301775861843019404079941716358889397385717060567, 4166920988420912396870292477052540213985485691526923695700106360334408943149917339536729693349697, 2996316359456839910249959570013389549410021070752168754879492505407489083631826197842513077648041, 2332715971515467494446028482438825412981391407569204925720962693962477821257579445879607680888763, 3082495025269572844635382253976484110057175591101322353055095243554051087373358145498478168941239]
# S = [[331042452092049921422258013636244306513583959462240161102766012482207957027836664017898062632181, 1858506649959141587714982583245129584751711014024776962714773275339991861252108920618440738275295, 548501805897943552311551278548257929215135653747808119240558642818105414698890026521412821928675, 1458867979223155034706278827324716796136199938076127453978449127876214183186150692969177766416236, 165411058452336164350653656107802514354320259286871081698687597844142335162379585468711442527279, 2309587580727844564685390983247247204205730120332696427460705071469872098611215021964637865381491, 1799221475320236847240337704579694284023854579679229095970469468620942708520796002037972458612530, 1660905452261853046273869205211808467249617448909366677057452282589279526907181666887219432415651, 2393381234725679043009138367988361001481421735883823008606191996039034444905357449703026361830999, 303630883416457339395158425658812318446624609468440156040228276927601858309511452769257557109389, 1609603345608680694564504359685033595941901436140651438813494172057795882504898311222155863460031, 1339393682699510208908990890527350313312998407270587810410811640760764350784031546553045112801971, 469578448657311370588372185003381501578164290041394674857838835443671048788100862244796157296200, 2117108186648884151132632486452331360976789525758914224594057955192646546829598130548858998318411, 2364304778030783380092614381444792049348660237496704589986354126554578749394723496509310616801384], [2770104770687667976082983686620232713311444094243617664976244403335979541423912605874661629182516, 3490755348093038314652037602579594688137860388492641596467065059190416557710089610991244684922074, 2518896727613820405070265559788751088160023605913399282062362151719499654355236616365059730151161, 1532190511475721346646913703939712598818198428562357175087309849376667161818821222111502104917894, 62848043883350045799161582755284440092941353460459005345944376169924934135069553228123225084324, 834964860768900550095833270799501895836613160046453602711368419943288668283947226185983246021023, 601431969033146034904809802182005547517016457214559357200160551358584728966150130697611480369568, 2058056563321079019804606047765620377280049882211465966072723487045925445708555572484502472981982, 2138836558521217044421608952052139636963546321465527031912586033939936059491513335235691668074065, 314227956490663077358715280320203180330125641412242534266627935140428042196306911212708872813345, 564832409839796056622209592765295071946873056698058453333503122421618128222568527782728649811651, 1814723849253778773739461125464941971401994222997741461456748606585267971277713693949141531016946, 3572906798594547553471913271910836575489084685728509300205803752546610691546971738778464941164322, 50786443307142563955052892499554796615937422310729915366365505466079180637354722911258058745408, 3583198599375649149439579010041551482563791836303253857389353980974324109762530390180724739922226], [1280888211951498574378987294718272582531026039840576164398227323664105963360448694164891220821537, 1662871605848340695067706729175275677265050436956852645998556869248962563374481801810917266756273, 616881780525536582969157163137273605090313433035243189261163131876279057256325574445730156187502, 22635910874584580567452473725237913042626731592340221136556607397774837438849837719133006216045, 1914890507805412789912579297294322830654879431758684294672656604294822512473372929241305543772265, 800139077294106040197058790133521160963710719149960993688740456697983270722409126444199308467189, 841211804929646236784031660082229635178548312177822530572427811435263815115059966246277880521763, 517177076566210904099527772860937812095279119050861561475855588134995490760446120410147727280740, 1626653324705103649873428625696765947125509848359596441181049697205445909551395302867551109821536, 2541909106479905164806647673881904044237649988045794104457373717896911950336066866258345829984965, 209451454393537796966975712132194395672972279292001416113250642023689104979747566441197575411648, 410047899222296525554172177507946344639553593964476774747923261692250655851688587870337444593320, 1265398569128174476531813438023872865864794016519895297364118665384176865484549420168342062428465, 2326172729719214060978659945060726320878588259872710182929055975711354521625435473692770122955624, 814144544632134071583031536820997302581538127104471635779993002996872038564689968767598627290680], [1585507866788006698118860665173669410708519984019915365011687299064781256866767359133777341812103, 3098575346409381039085466840923714150538091879544984428196255237516732665273211755798171157916953, 754823211853475011789499305905967342724288523996943657138203300333559423273387611749380579316920, 1763432611304177812730762589902409437677158191674039900554232042343244570326085369550959268415578, 1975057169053154447123846562225061283061376581708553945338321367787203295325607689363711587013856, 1198164326883731094598799025575971271448006774877970731582703701418729156838109789268008535012283, 1835176710216441598398681082674709454475027383434155277599527729116227410031170143087772451108457, 1023626828298264607565070248671565806631186499770964216971794020398089918479394401797673021854449, 1854413324603699372173656695750163518268284502359599252818956768042508876948108170523687114515655, 2849501341010343196034276467847613766283627456217074761048510893788424319619384902755976617119830, 2247400063109682117637299931038180060341925176329422744660747732672905613943846310263025475342792, 970986540168604049287762432394539383559681033493545342327190413846380484488553152432529230763854, 2944277712494106001992683150115983742208000726629828588874435974561017019904227618139752589924988, 1628477563686946657477629849770492607994140788868776633882784565624333846789118515664357055874171, 1956891185899147223409101860729653066209033338306864271535267141204559769778944532788838843136439], [1339165796856494070123396355415710943335472382125027675176482852714144035730554934899179434599592, 558467191792518514611461058123607831925254403988170937460544857323756696449420556940495875851277, 708232457725448153542801212674222700415617124166704487481633600834238411782192023956649506219056, 1675895154040020196045407928913026461032541591219789694242246082927472981690900774175129406043232, 2826815730526131702733515879343326592758800204745372075152633028057767128229317661308132843880504, 2163454456290247120178025134898940445290622887002009808674805393517306373124801693431621431315925, 571552718662269255188948379207026575067384406097949681145713239366331591433964694774471863008247, 584102795205494568597587548234431557238181822085739232602158896880798817824031804244181156189990, 2777659890552404856363553169306034052820896061201479553775838946948487707577131441704188739796890, 260923918165616546079196580126942368593545021065356924055811986254455986495208787818839932118669, 109089461163217582043858722666400940457269373693575804066491453815472294577698709396829544599257, 2426256218584951510836003426405570295020778250950982936414684240149922033729314661500663876774825, 2216016947761284019217489212996574692580649687855787940989252237070479109429890643144872589409079, 458914510703881557296021083925889646360994790679630651498347144571368001266496557153808152351210, 967264552902813079381707875598465007291674811062077416880402993888639055521013969985690986980420], [770439640079371782165041648965050252700825187886893633398706647541756307344143457752914450396490, 1560271763536646206762998136289865166560423758560817033362179430484947035569973847366038297505494, 2125072778435932300332136790988516271973085119104637682504383393723772573960558675946130729917329, 2126929843531152101412636914270012260938875644682438104223070143327841035778979144461772076241391, 2040749623367688312574183376921567468455971675891342868799049295591245240233526803885603759769979, 272961560462530188453745112017696680630894493684292541852152536045288069288333248265753885132611, 662699176318795921219608945431564091783054703664234450907215333081625426485669457522504003492689, 135120810507892874420435808770049091648735876198622008153395360515520853267387822224624037669097, 2887535279340489866970713592477476848482383887240491938848889301735928382635940337404941764528284, 3120227416448385785225257636868177950097006811270604903528810882025476183344701731686198199324741, 1810859929481953384135545095186365744556288440716824700310722404365917836804793593968465161070803, 2024974045305946021146915175926453514882900905434018489641293733089483157090094248678593451533913, 3373475209020899676999806090624863470330354993545191235855541098078231171316339913110725537575468, 2588671466053746720036893865015984955421758909422915121298041894984945267068473536341829936957688, 3016652836472256001435439583652732353568992906849681649824246750940176932541165785200640808784248], [12530833367286976821711287512514218981141647073473993748203373367692320617486412934412754005208, 2869555851201789665863530024715523514069218930077626293527071868924110609919873276302833261199669, 1103480988303578708124393807234756465474560130098084209025151405710328494777334789007698326524291, 3224706102957854499969692546888249666739036342368250433851207838655950879274755388141527166350770, 927778654123275434461179408307471600554307387029587910861846154328517152502390277918848107311813, 3220946769893433115305116242497527165618530718910711012718177205551758616682566522331915819139160, 598712771795686325157489843234352627937099087764465974814351713179337298565564124726768969996505, 1272539399500500475067243101649836139697820795654116538679884216944596954267847180828392415756880, 2950899330334733674251955545957884716632508897346856422159640684025659890709201754709535437778863, 908619094933977542329669102151604198386226078966677182873318949620868543547318760932239663824901, 3194670357885819786720275438144342244110746024869735625781811134785665060688284277627836366311533, 3193419862019257016591585204542290175902647673812509926662298965117651379842571582643998882723049, 1651929913504932774509770753214550550411939148344677532682907783602091236602169589935980128875704, 1222065276046809101894374234867392611158843307798111608203673552458319212201778895360193372358592, 520543046280155417873978908266036714648770092359937591665478090254026753201915208255294801236587], [3101411612126687339507152279984040728019115382715488314925455907495504578146946917227234996304577, 1844346414014150287802539674869870244764733964212910516290685866651153468647866998072745528557239, 835931517236040155484082729066492751565759163777645760742656518190298341145820837727464918924864, 1150264461462776360982469347835889356332554552684964246983352762998631939578126584627429246579835, 920663478431079808860183917991750461094023234248304085656755039437916339600025501425065231560706, 704792931346807135987989052040400538560568619962164720689857061987312816034576068499154535772906, 1484027898076513267636254222540594776707968215050620266939037913098525995455973048103186491302881, 855411649215344479168458571035606530074148390230447757296749544107716961137839541955814458338367, 1555122745869428635148560052326947394079930354115158605055622209172853286583826341374101702350132, 2398881923694172041036974180835334865180878155560532644617520621283594336371444619309760151745891, 485804013684347843568444233485037045666173956437976494271774638340239415938615141473344402738473, 1529345771812724239708224506558906518721675842146338345231750270420680979223002847315402440680704, 380582193093080687073283179129924536461861521219822115133469273104957822882203426361700261471300, 492741957930596671094752298356481690097273318241482970755088096876355374661491045351616141904843, 2294649116586157053576297099084657332442844182205706114424993641042819633462935518200048587654997], [2136581234146914350460104321986310706054041924438024470417317174120827071053226674955229555921749, 1044437094465873717781144557735541650454953030929164887292126095932851075674408331847881565919225, 2826970843083670578520022707750169854289326570487248425823629321127403756096172319574913601937193, 302326207425190057590284856378525240809420221659757281892364532289725874683821179430376192558430, 1343109652405152455711907457745507500792263363488962825022826828237018401083498120448539299514980, 3715272836721538547994268851962123663992592545718709493247511103618598037149870638468505878902088, 1106355315640864187425505734859155697557287018065701155265708275127469822328760530073815521293290, 3041620652120499789890043218837243717796178578102591552666268672018305961303550566423670062489021, 3589427659849101063443156457365535370562920543031033423162702046863302833891806403947777003934526, 2671708765535625491370373062246550074790581958258998440769476196583498861982677339423806426026466, 2663276850053948612272127325497145115979493951352490159524722295607248816396101091255038682974320, 3823500018851778011116182515572255758990635820369941354291853800222045221877158219055680329831867, 3392429765317350202336299860988054684161468980424975091818800111027602216658591235299298052708253, 1139831973137064643233764715839702335999937463681724300746432944468412842466299827253197539327245, 940392072321776698529196282370808429580377439712408888695044477411300934932103070025379701290231], [753377841123559528152780933935873495036363540481098141648964448214718349903589300977194174918880, 794017889399650513509437847485501931457130945724145199082400471467694258897649653737052812174371, 3011309212159718804082492854282693609066922250898558673567925576270637657980258864361076092616500, 1589221700306998317190590811426201350404460111999212649862828246867949208224896086120471680022583, 2548967858154748287760190177933619903759236948375433818818663765941569612645862940027045330529956, 2794898930968444770670128815336917712588156445780374943331437219245482439361794552370456279849674, 1219744320159655255309018387486224618298000554864524889265673445502059487325667775800609927729522, 747358924217656938144149056220406576187259314151724029172719151263300446614767332502720700161950, 1605921365148730225536498677431842162388171124146876122616530123242019590956792812167412686980227, 472233559384533779623330941853154196925343629264753986019618067018801170839635469263982471855271, 3059368265035754077124342626783415636890397283706198396392933083592342019081069647650644228199424, 3259041006189233530358314973730691979484226285639009675628110717087345484276152188332859010259476, 2673954776252976431865237217978020776584293140021217010102376047872907509322775727735318947556831, 1259739982284601433139393763308475319010268850424637672854817743249734579399389119176609761321976, 2263325243575616489346729860894947907967884171938899856183044841005672417235242270586149128983993], [1396653912912582336421316809463552191918630650530722163338845326419398679124372239974927435044381, 1179470587386603023767915936949672072995583721532570896651055269593791174512011489402582179868603, 2393286168806579957379529135399927045481293680557422947593582128684423643548430333355160968061283, 653109097521073061059001939013408102189115498118096859066573398503229966449788717925633078799507, 123774691292092105904571667877382700927863395908489706834724920464143553873944422961955452667149, 2895026625596401166326997514137071965758618312264176648673902322507411489582664594748604713830173, 944376406911812749332452993251764190932370252770522373023173112843142827941694986311075912941693, 2804593687822989291087216402022766139382589288079144141502183696391437196848838648824799880875799, 2651744794607543994450011246482555779018253404162844270880377345538125324747623045273697858388384, 2135779898392792381245063215254283208697877522357532595486484287309929411398170351810611657959326, 3060407010909815742739024135895604136884933170263399683228759601131498279251846317022992546942989, 2744219748216891210901106177619742749338427335424138597506586289231736961870853051850596683303121, 1940418708382527461619753534999047735341078326985901043926304444569134304775211151966985272922372, 2331132562130593497668964788435330911196398769411427709067852668451461204227519184390308096128039, 2000363733247626054540368837555819106541384957994352791908657229935150208878641005107140111912762], [3439307188920492956186070994862713304947291454611178181083886996283437676035333714750497836721826, 2081062589572996610993887078652890152544171210180247439156990431939381222216880432458766720959684, 1690488010812386484378655720403551130013393818014125669947607661634990026408165375211028754701701, 1442119885803276300876390303388837480384780967535880858576402478128968283078040381825821853618690, 1042729801171494845572173103257442677522640625481870928335545858042804789996978569222155371063896, 1276309024419793775667812734321929998581476612975815157593911518037672207152219010210350457950552, 334009760344624391874123075086659903906874936161759447452722779330303216818230798056359378567187, 4120741047575598359711639237576017864424293105150303770064264642444161175002829887248363978794130, 2247321063016648512298615293089897791137993422150398477708834015050756430075163197221937085840617, 1117733868849176335544409474941756870481846144471302430486701199556957007937914483280631808180743, 17545246338181033951953053047467797390056104840879155885515208973147805944137767033882461363511, 3002658958425326477392651109555326675757032085493333011908980275432312089662768379780127893361446, 396247624298411307289518247100566294872505269319480473803735262385084288656159415942375896365580, 1018837361001126350016602117822829344113317589894822033213624485977005594625826315048009733577746, 1517079955500533219891422783472534974908524168491270232443712449003631060657900259942834770846322], [1118914335078455852403010113360928780865704343848455460125289746054053905478961706342742387568096, 29640321239635174564883543381604308091921281616175696983153833224272973343043599987732435579079, 208764712348927022732108151867505516528923565458337539953403207279583125768373911402675395985892, 340887405956926309667913731565136187452146969350899462157089965116982648561668642465483775333536, 408197648404875530339534980612864029669457992875420589174789564917276781570288930064613555738161, 695514671406147088879003737144456542809243765468492715424492234997064015660545699823180656572677, 2478275806201242811416335903447865715011048371011933483973502381347201809547978332185369029092588, 1697386332193553659436615811433843584308377059753122813070321137576936362790605188088858721339468, 960058118986821942083810006673975777747189165156160290911101938776524825835490690755002231367063, 2695403795494577579014063117733112408073405782002881607976012450095544297524228845831565003972027, 240533327570553163464547081270174079249519263541039816616135707897802399391019631056436140136775, 2243287063379830806080733524865444424385870546538451569316003317332955963692125281077267220780358, 2462029173017702702300526651644427714611221777961885537825267626362369468606108132642700769818854, 1176820134529605851507099465505494103407084190953041079128824733213492821731003984232001209718109, 1777473761488510001065720913792351279855139325825958895117377696049554702273356449440736549221587], [996001003107510523155662401592891471349023874831783309439019863409733431660852496494924110674760, 1566530237900892654093687008349414176915283737826278301033279233756992534183832518715549557800613, 1816779072544263380576353443541023344209557842011755434615829968410807742340524439431862341215477, 691823416329846567210654459767090795464858576800988792313764601215840728220032636713659910270631, 1453195235770942300961472013551887408657578375483311731206074151790624743129084234675015304798798, 1980395867551174095956345242158594842485719810824679636931202783118352395371776427582912244711204, 1101610489564715910733210664351985520242741052628795454089026005754797239027206740438143063710656, 439366043698914892129894076368746591915605336518988883906736096898940812112076757676751597305127, 289373248929015378938683317756533212491908660525546492562609635383780057048386045605957961878223, 283314003887557068947523505891739667842160736334515782852542968196585970104225998480305604131800, 2234372478949975446916388823353991297962013187448002833694642890490746188466719828634347325986593, 1409854633039361732459891183879413651725457790340013343750389402070466352534060669121518434717232, 880897876537215988867175788744222429715298067564967991554207795806977363402852922727629386427101, 2014482114681406159322316091311588689688010674086018545209820972673378919162613069272759782994212, 2329708995613271723547052359294111967684920421451670674060094750323011643287866406889138453322553], [312803255618264649303742917487028502267007306658584034091630898876068498652144431191722150583352, 2582336729860563762528822256267671592067542186231106164353632956123615595119690125994874901165179, 2977067230653702382681203177782544459146269315114034748604803981309770672453143628682842434750515, 707365647589961770703440230703637560167049290356096351573548008341488624130481501050085182544181, 1050766239062537711369688820732082141539736399045331051396460515407020342688926502389208368578134, 2235152602185250769464104990994050296130163929385908136121384292071669556034743948234740688633383, 2290716375508207153616186575318542751766593475584471979810701839335382888250851592259478367613085, 133318767095286373256947277282898650954806501690368791007495539718236638750813754609280641581624, 1522903010204944720850704943029233565457783485968476025329812583824359935161914469001602157420373, 1453980123889207980332287686214059978769046632563156248885344603722125112207690256088945064693760, 2262068024925699282736588504042391567896891557371246232304878290558813724521350034571865214735841, 2495854988942722344032905442398120894267122743709337065347388671301028345868440377479195454305159, 1466413187166955304829381185237532098982797427791519780688745375639517267313448473505849895116917, 1034014412160254311859420677456189125579153501831163814675032410850652247449152651132697918770651, 1989445396795013961812647703384081132308803021493563646837976235406945847471607402437931550526605]]
# c = 5204095034256392244620730965414131212962064601100192794270520058529348596775345346492571689704071908385423580236903522881909406793023240448735306951534779828618614758757155841904580284571310735852122270474692855415239630844719870991950559593159810805080797874331767998120801163485246482230047575093674233772322184608031430369761050182252579930868034829960358867604106331770800869112868361896305831763245622446782396414764059335178119233390542485966805484526994118693406073347067160595081159867933942824571465515233799482738104367999072355042334669578092617136490669197812514738653157754541883873148717220054535443075

题目分析
d  是 nextPrime ( ⨁ i = 0 14 N i ) d\text{ 是 nextPrime}(\bigoplus_{i=0}^{14}N_i) d  nextPrime(i=014Ni),此题e未知,只能从d入手,d出来了flag也就出来了
要求出d,便要求出 N i N_i Ni
巧了, N i N_i Ni的求法和题一求flag一样
(P bits = 15 * 321 = 4815 比 N bits = 3211大得多,所以会想到要用LLL)
LLL之后,最后一列向量正好能得到了15个不同的N,怎么发现的呢,看前面的元素是否都∈{0,1,-1}
(PS:运行过程中发现-1还是要有的,毕竟LLL得到的结果我们都看成正负没差,最终都是要转正的)
构建矩阵
( N 1 m o d    p 1 N 2 m o d    p 1 … N m m o d    p 1 N 1 m o d    p 2 N 2 m o d    p 2 … N m m o d    p 2 ⋮ ⋮ ⋱ ⋮ N 1 m o d    p m N 2 m o d    p m … N m m o d    p m ) \begin{pmatrix}N_1\mod p_1&N_2\mod p_1&\ldots&N_{m}\mod p_1\\N_1\mod p_2&N_2\mod p_2&\ldots&N_{m}\mod p_2\\\vdots&\vdots&\ddots&\vdots\\N_1\mod p_{m}&N_2\mod p_{m}&\ldots&N_{m}\mod p_{m}\end{pmatrix} N1modp1N1modp2N1modpmN2modp1N2modp2N2modpmNmmodp1Nmmodp2Nmmodpm
其中每行内321个元素进行打乱,设其中元素为 s i j s_{ij} sij
构建格
其中 P i ∗ P i − 1 ≡ 1 m o d    p i   ( l 1 l 2 … l ) ( 1 0 … s 11 P 1 P 1 − 1 0 1 … s 12 P 1 P 1 − 1 ⋮ ⋮ ⋱ ⋮ 0 0 … s 1 m P 1 P 1 − 1 0 0 … s 21 P 2 P 2 − 1 ⋮ ⋮ ⋱ ⋮ 0 0 … s m m P m P m − 1 0 0 … P ) = ( l 1 l 2 … N i ) 其中P_i * P_i^{-1} \equiv 1 \mod p_i\\ \ \\ \begin{pmatrix} l_1&l_2&\ldots&l \end{pmatrix} \begin{pmatrix} 1&0&\ldots&s_{11}P_1P_1^{-1}\\ 0&1&\ldots&s_{12}P_1P_1^{-1}\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\ldots&s_{1m}P_1P_1^{-1}\\ 0&0&\ldots&s_{21}P_2P_2^{-1}\\ \vdots&\vdots&\ddots&\vdots\\0&0&\ldots&s_{mm}P_mP_m^{-1}\\0&0&\ldots&P \end{pmatrix}= \begin{pmatrix} l_1&l_2&\ldots&N_i \end{pmatrix} 其中PiPi11modpi (l1l2l) 100000010000s11P1P11s12P1P11s1mP1P11s21P2P21smmPmPm1P =(l1l2Ni)
对角线上除P外 ∗ 2 3211 *2^{3211} 23211平衡规约出来的向量
N全部求出后,d也便出来了,最后flag也就出来了
exp

from Crypto.Util.number import * 
from sympy import nextprime

with open('out.txt') as f:
    exec(f.read())
P = prod(p)
pc = []
for i,s in zip(p,S):
    pp = P // i
    temp = pp * ZZ(inverse(pp,i))
    for j in s:
        pc.append(j * temp % P)
pc.append(P)

M = matrix.identity(15 * 15)    
v = [0] * 15 * 15
M = M.stack(vector(v))
M = M.augment(matrix(ZZ,pc).T)

M[:,:-1] *= 2**3211

print('begin LLL')
M = M.LLL()
print('end LLL')

M[:,:-1] /= 2**3211

N = []
for i in tqdm(range(15 * 15 + 1)):
    L = M.row(i).list()[:-1]
    flag = True
    for m in L:
        if m != 0 and m != 1 and m != -1:
            flag = False
            break
    if flag:
        print(M[i][-1])
        print(i)
        N.append(M[i][-1])
        # print(N)

c = 5204095034256392244620730965414131212962064601100192794270520058529348596775345346492571689704071908385423580236903522881909406793023240448735306951534779828618614758757155841904580284571310735852122270474692855415239630844719870991950559593159810805080797874331767998120801163485246482230047575093674233772322184608031430369761050182252579930868034829960358867604106331770800869112868361896305831763245622446782396414764059335178119233390542485966805484526994118693406073347067160595081159867933942824571465515233799482738104367999072355042334669578092617136490669197812514738653157754541883873148717220054535443075
n = 17136970798040781900380375320476125807482883272963342140376724300643370817126646662261456510027577187134127341373224181850553347975472491357107520470423036067354366041044010874920188924485643331069987165729822970245920771166883276489837179524171278367684802474479344985680373657424382929956973166298009915340031018416838956857065231992318860392114540455374501132708897332628475900003289326210913382726888454142835953864292886007743638694465001230475376665522999286023061393196173854321716583018043935891333605579885238394375504267990446711334793303484106539552298846772661498940487284182833753415825031456336994552397
N = [2053836159414848562208726173342115377363593763877572426235533077769218079738027862749472218997728538428434574283290702821226104514709407788865472857399026364214480648064129239952405700902294641298045948341406088066557003643652007263846972898918838639192660258171972025474566605846534496031483806989620966064542865107880582007742791940029369564073000837111461820405870046268803430322928310013154434808128917758456138461075648083535814457750591378063417511874647666264774093226507919907373501098166884524313684506470195705774518766620212855491374593619522215406779176346648372790701950477276630353596647849857332866643716605119482565807733511802699161605681126522307538884151902546475834854447380653282410100411958143813656061993364231800595744734343902889971135717752932240947719885276783912832227048158601002359539069895690956500871402077031279373069997565199511081074048910211816889361004056323526736991243285146964765434309309855745000008458170407897854774312163152, 2161250163098431165646496362824777723643526787237115247665941240656129238963936675031975545358901404231369333191724013458607878797585979866298003039992819442476167078581974428013660848123886488735890690038985585222802780252673593994067399326697162985715149376656653053404406129332940709732438565323972917900621408889784098113434152716473296464590443364171504531019841036284385257821531288525284629154278834314642398575995032317370546365467333570531801863881701682808009103841378531816718078024960189856919544981241003275142211126392591379745273022998524521057082876170809651710579144575557672311663719855552365603908011331191665825761210043479960238154398498612191730115126690472838677216285320010044027764168277677746215424571140333722294209355338625157413929167968782081397829034147682612155434720985298584774369483743092427884729941294433037051670052535405483649103169398673488766203006542348237838086081913228737424967313475021030124009093084341560597941704339312, 3254821386098686322379827398046042034463541016870183715756802149038727667022173190186373163755836972497946693911607138328774262705276168866795389243560210098424355322763195145992303936315508842392236516599881129402471677625905171997632687950763954824862561479600290486190993023209188015807280884342977011682334550937921972474100420626121572456003266009856650322007004443458383684186327770427321819345622554180897493315274844146992179648208145086854143537206445518298539287860385170483768748538900101928726167276722488635108667083065606387344534841175151140430274144209219587344322307717830885401118082065089920556178824544343302294479763563701636100952007164671142857602437606316606465726530988358336066549211146548760288019826679381160342583249787939807304631570215246845959410388625115738889054878825339586990334288582570438039012062913696492970408223005061169855866966570363473178496043112872641226625611109364151802455608901854682212004425347616940924677474847607, 2904365329559232016141024104233415704466007755878593743678745240538918968323495121305139553245432750533939498756984628164429239362619578849376330332781503273051915339527727748744773978159241064414758650603947869670745471863446772755295967522841554372711031898932129196706786566594471376559782521413305793431129928891582213212463989085920989586000708036390790887085961344805222978645391761491959214856062359486115858940241422267369895400784215933754956791806436882770122651869906177664124331249078085863556050166025712099656837085533357283133131071968241487125871252276470685159388313337220246973462353437720838527990757075350250937296882564626537194923713175910566222573866249829053218876780025133174130592513150410248474989461093612586980236244817056913177381557356871849537358584107684663372640353083725576933788407180185847306474602903523411060950484079526544169083935097176733711142231224306770856444295721693299697810283388491761271031993932365681009744351291279, 2635191688643350107124139877750954989177203094203766498320546794195424791947205891246116098206945596987209252718646078601650945099573884941191940701203815172683458237010922511364641521396458411864079676976481875118964899433016595049183845597408053844662882012104808325796554475096795745528758907979741264403216021171277485074268938574063821751289253049593590957023570069872726803301996395108123201019067928601587000074190316795318713559100663230331420960176841135552331413517618607125195681221296056045590935603849125518165360586275593399099304016779587596197016366802125556207534220215974860358246744939694430143703733270328432723465892898326761938822738951510532347060359346435312587879668552527592633413350494265199457017088599539585221435414957677971976621864615459846791685321457747719829259689804938395949138075700300150922222625792558995868414051228780090921156335650879080592282669539146025209488368295350120433991257611372750389352070157156572671926592300930, 3410146045478726641656211803531154057304464372412814972474740153795683786322699531922925466175326955179490339576293193713534521382053065086532185858452149462509258249562106847117138841791545333001691585304691436340476445109351296357756500795422416746227812736151481097782109450009472172180210480709219039734236626506692936890667899311406982853368105973821045918364651117866421852112350114236366933060145734233463058640616979216646573721552831794348920692418911811816297425627668310791031857014031627710767246499609368376003997866557012219787379578480886307049308358426839784604039299846362781187517214855559404817819389349703253265651686432105841683413707320365597853811367633370850745162711177720877143087973086910072551283032023854682265134937672029722808554055150958281386650344980638386429263223733986909526455482720758124545123870717182241881746054755403085209521272384534440202705080028813880072051964254768950904483279345180661586199472886746029509192874254227, -3300878366908949981707913346169423250274303301249488976409543166654692488534550876867035149324089848265143761115862805689457617469435602055330212060120086823907442829687558614244621310242513410580157998942101350147921321162217324507948530148816001970549999695689652981162877514331944665167776090286954265192337629583560112325571828852236628414492808596975442094446211267728661708353543524441257886318845831196175638222404053575841482055785313423182506865769731999400209834189004474778374617582612372021651663202361561306902372892372386934997619761025275253916560830634848683314263628036630266447754665438937628750823010135006140396305495879620920418195695047303053313419650718936660126590512538442494983855823939522892963007025228333231690140794199128419727777326282302759775132939632729370416789824357820925593618570926654590496258464423589233431915224069026423094487565662433291509342839702564816920194439561067177290753630075755162248010227140055678787887686766934, 3198030196948310813234736381769120534775871311248754300087574485064280230418056976239609313355423962368724699367744651384120473081421608162094137864627051481441139655145320796663006425307507884991632079726200343329358191218053803506129637197861496632466409157910831580664510802648406100109538776726942792110509584016261848433355686074867954885309842321210310397839190846082997467855730834600135480338273353640920401251577752694688715449457188867512201840151785676259328705026115587292384028306441041866089260695339665515118937355341689237430772922969851249808738760460988121199634177744679080365284558900184472779351837458453375939589710043587401944271133550517859472748761697706657423243760056668946989373080934325697589220131911048967122186396523710564958230752595699358229155189324181142697509387133550477693121490465131870513090436104105955065044026078861694606301529696345744983378229687222666743011760366791569838624965490707504746308805623341146976740195467999, -2912397891422167718485325806593266343519170896978572380143052909676458775916713776179661992512799274020582575810115585797319902879104119682416855402373894569042944858081250361374969655997800224520124145280164506889012607067091693112216308104763528420979063042421798346057690697055735880306901888845019169155026538613843027654943530583223498557696707203412737418698818544335267871800103552632111593626730478043097306047138466362994159558163762155143621219662242953098435275777883754667474192198369750146825148292810447787863917309678090833819521594322306876307760710551718956740650925943420589802765379541842625999095269629581712620650190569837515887791290071418682731746380888770418955339084197816406447717105184236176916363922512110224652815809693326206646861054936578816880593996269031272419290431790397225280879215083044582808462964316864272877164664110155996595459624845755581266689009476923972333565520250118366807399999768971840322602002931448801261157445986868, 2355644936055529434799344546442551636111768923854988264690569502295442934110192702877513344350609695849168009317032768028895051661857594429606184322795163953196299143616282786315973417095870141609016776569693592525613242361978070215646666087284893002565622339726353582162321555830146536405777706446207303595224630182616442580559883479294637754397232264060464796414935171795622924191236682757948334984989263255669947285788897709106975208515334205695259984257653090358982484326514419583098318965416796243809584895717861084622111809097185069518073353730400814216893627789037841880638346931913133429060221303742759632503577964815029743934502735198211052897977957705540910485452166067801564369752153808348582864567331206844043473389390715153066951860167182227617397296769609245592335334694175278705276825547626262595663720887650624243556828497199071310163196705798282438480299356245256042234448455593509541351014103518795063740784076385952177947174180618455046021549590038, 2799296311834669493354804106923691626007272788429251346572221791403463078635660311898526079836031634796561836594204671105147253359084551045664533191858885070934408392466722063629011310390829518825072780224396352209928895816443009505062217274824879328261804781351440650115957197785234141920780229236918029326800450304179610869665519969049720815685204675062414367800053475993957134688907513503366645228616647076094429026407621262397484708208581821890939507857923083283709516295323281843182770437710195693993211866885610103882276050537730518409342365162316388205154772508129384408256995516039644255985717701752904887311223789907047122973240673538754281096153809763677261366263717917622341108235924196129985449307152497165428168896998688976381157956332646046305474949839964559296415650989696220311317556301115771418485166972350412054830273729790935926692113351291385360355599890726750199360505828077549305118053398057880006485932968258632637935631199744002140644023790035, 3509898171355992390630003254703494082907178392768089647785408828308774876807826831302618886366854890462938863488571293156956197206070399204200343839144191015441012502727631565396481205137469007464958739334360224967436202801008065793676951978133536198919129893025121691707425895373378887274534843145671498812591528171893428145038318447646687718112306550796047685896972047642683726386436726477465063421257658863931668678661170117773216083795306673697339147967467881994632698289175134288753788466220090257844737637822464755527222601434657228660376561305202870668090028682790982237869725696022997791051742566303403965070089374305113533788026080628715034457451758922180799071465062752721166273596175360455965912901760297652171495148951089733294792459708731005706611026840502480592544137387513296155246560833488864253664273485157247502983757330814033630055570858452442595064365372264289285575355300194267684358831868796506654346853025819837540420771579909407290037788015470, 3970904091101852306377541289081243481211059522761920779353198306479819043588849523865132495286269936709792338083690129258374450751357013626071153290841991169839371184466656805186519500528673364464877946949012089491136180210497905839796401718395631833274547527372550900183499976302517677686582049712758595310507542211220725664461774029609967710098094092264852256226323448338717040188430446619355592859812764883170115105251267528222395274861021995803166993802057235039942087178033595035032217405112809719832733180404435737342219982628398829036256570750024010427831703844213970163193027146166804118874334250125125086711951920644624370246114222850716274804152491520853134613925776009889755932725120207850747940653029965373294038210716754161765485065231176450271512841949152404123172284760967425482964551547867628775803578550011357882938163143745445854889728991413088391435729934154939215275982512621454706602681369218666228849014455147071466051325898093586332688158060271, -3533345337249126472109726826791975881510190026171082731149287206065585748706152219455393244534654747641905973203156130612126385450954129842744930707838603469582105958944341694088163904346588087407265114748593682141107170881523236179364429876532445477479072802800023002808622930776805879818926380491859812896386321820156764624783298842857915776471694680697215163015845190992412561747392899724527430080128852474609554221751734271061751256004553022475950478265588534378262784926727724019681641476837423118188891523916728825022130747935706092229612908886885123578271056862362360743989835603473731473841841483537526258314134893854554414685838540074512097675340545696719941056189020078074217677530220151453519479333416943484517731308104484060612116750540924521248376569301482895993875140811137687161333305883748806631493337708867831045115728727302866504957813488250854848565033408401931442484960627137378553289286915278792877766734914826544428477517083976739519346438674646, 3764729925073685259981322757280164012018981725827746739926184921670391165669161559284886917846758398307121124032350576284628279355850599065498915094447398556155335512889352330672210690686842728693276681777002138220890330311641702480105294108288975399486650976243238807963838323471843116798840112873263532606278572551038094227805747294944335045879764204335390539773734863255183553209689152485852885904923188591921776812856831062149893077527786983986624217908145584812242913882600674450657786496918423308354907358690567818073469676002078445163755882174883741576163184157390209011051793939478558380124246012140803720191733117259470745883311967151896262260932460048756069160274821227302635413522985706399231064637608725399883939799911874262165684765828588143340808875171385518981566023942949324550991646208991448086816983958877834230528344902091556299509507095700388732298473809384548712332537338722317710159499183262696365064054779627627851445191840673288166710345957492]
d = 0
for i in N:
    d = d ^^ abs(i)
d = nextprime(d)
print(long_to_bytes(int(pow(c,d,n))))
# antd3ctf{0c85f77e-bfee-da57-78f2-e961ffd4ca45}

noisy_crt & 题目复现_第1张图片

浅记一下

结果很好,正好前15行向量就是我们要的15个目标向量
前两题也是,第一行向量就是我们要的目标向量
所以一般这种题,结果就在前面了,此后遇到这种题也不需遍历了,如果开头没有找到目标向量,那很大概率是格构造出问题了,此时便要再思考思考到底该如何构造。比如题二选40个构造,40个构造不出,那便一个个往上加喽,有题一打板,还怕不出结果。
和背包密码构造格挺像的

你可能感兴趣的:(格密码,赛事复现,密码学,安全,ctf,格)