做题杂记666

2024-05-12 01:36
文章标签 杂记 666

本文主要是介绍做题杂记666,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[XYCTF2024] 铜匠

题目描述:

from Crypto.Util.number import *
from secrets import flagm = bytes_to_long(flag)
m1 = getRandomRange(1, m)
m2 = getRandomRange(1, m)
m3 = m - m1 - m2def task1():e = 149p = getPrime(512)q = getPrime(512)n = p * qd = inverse(e,(p-1)*(q-1))return (pow(m1, e, n), d >> 222 << 222, n)def task2():e = 65537p = getPrime(1024)q = getPrime(1024)n = p * qreturn (pow(m2, e, n), (p + q) & ((1 << 624) - 1), n)def task3():e = 65537p = getPrime(512)q = getPrime(512)n = p * qreturn (pow(m3, e, n), (p ^ q) >> 200, n)c1, leak1, n1 = task1()
c2, leak2, n2 = task2()
c3, leak3, n3 = task3()
print(c1, leak1, n1)
print(c2, leak2, n2)
print(c3, leak3, n3)
# (89623543982221289730635223555830551523170205418976759060541832483843039074358160566735322009158596405712449020903311144480669706226166537602750967447480664875090686428406188847601970724994074417752345460791736191511081890913041143570455636020205647345764692062144226011846336769477026234106683791286490222089, 138474880017294332349992670187778287774153347391371789199005713563195654993662610111557185709277805165708109047494971468100563949333712521647405765501704478862377527360106399421209690341743821320754482338590671565510629203215009008479290995785318405211007685664887994061938667418220613430135743123498167435264, 146331610798417415036517077006943013321623040860385791423062775325646472298267580898028515394910588437521335092742913111680737790430660749825981979147191282007208147041227246620008377726207734522466015971515317594545750944838673018946440525615131606652748549901880641896940968837669894325535750125282351577689)
# (5473961166821344576614003060897848014482672788904094340704447882490091115468180944569409159343222459801235179587721232166576530621751748850763430788036935832653535110975154800191323351333883661451331971042214143454441651165718504131976920077768864850035471790911190772583977173388975105970866592974077361193822302653046511418190410043729876062517148438923211673300268277037622337403526399584759202097925983596261279676101079771530118525540842499517622478819211528345668513680064744443628779623340175578509413636950545134641050948185944279029949957748464529075830770617236599864271566534714755373562527112224962839980,62964793504732923650344975634773688108135580826064134090114181449607062497690184718845295432644650580930430061411603385577783897575232298084007041511817031640186953023971498914096209984730,20748652069632848434897928314437138341436264859802586939154590237186029244907936870477844563166827587536149170710720365760129683024401957095447466056746469055173897234659911291443605912459271248059341147358511860537769587963189092648473894868209838600346115919726589891777340166174017389513260737891557712152871714337946675533597049874155202056200170954033849176655928144354665553271709442011723088448485570394208728775665739819536229908847043007472178803394055783543378990699834066614262050119443421709878598533329555838915158259138297060574425019923291353077080236769586821808150397875920110335669136563171420068201)
# (34640310217688693418173336791306022698488916505988760907493665070072623574363578354500529023855888624978101429772253437880445815006839767802433777006836665709335479076676231470534690281412388704665083311568028710188940132495410474044569100181764053297307413009214044407982980600917158732129850605715306726034, 3763587651775261955566046684899146246387485307521708557610018711932791630073528010801142052497, 94848869174430082173244966077736519396702141299429965725051314270443078621842166791082354594193554380275167898342497998871366256044865879909218309960595691008663632410356093966762639308253848450178310347612630814852054763933063313537694449475061227647475480417779126252294793767003555255527593551612032661749)

题目分析:
part1:
d高位攻击
在这里插入图片描述

exp:

from tqdm import *
from Crypto.Util.number import *
def get_full_p(p_high, n,d_high,bits):PR.<x> = PolynomialRing(Zmod(n))    f = x + p_highf = f.monic()roots = f.small_roots(X=2^(bits + 4), beta=0.4)  if roots:x0 = roots[0]p = gcd(x0 + p_high, n)return ZZ(p)def find_p_high(d_high, e, n,bits):PR.<X> = PolynomialRing(RealField(1000))for k in tqdm(range(1, e+1)):f=e * d_high * X - (k*n*X + k*X + X-k*X**2 - k*n)results = f.roots()if results:for x in results:p_high = int(x[0]) >> 4 << 4p = get_full_p(p_high, n,d_high,bits)if p and p != 1:return pc1 = 89623543982221289730635223555830551523170205418976759060541832483843039074358160566735322009158596405712449020903311144480669706226166537602750967447480664875090686428406188847601970724994074417752345460791736191511081890913041143570455636020205647345764692062144226011846336769477026234106683791286490222089
leak1 = 138474880017294332349992670187778287774153347391371789199005713563195654993662610111557185709277805165708109047494971468100563949333712521647405765501704478862377527360106399421209690341743821320754482338590671565510629203215009008479290995785318405211007685664887994061938667418220613430135743123498167435264
n1 = 146331610798417415036517077006943013321623040860385791423062775325646472298267580898028515394910588437521335092742913111680737790430660749825981979147191282007208147041227246620008377726207734522466015971515317594545750944838673018946440525615131606652748549901880641896940968837669894325535750125282351577689
e1 = 149
p1 = find_p_high(leak1, e1, n1,222)
q1 = n1 // p1
d1 = inverse(e1,(p1 - 1) * (p1 - 1))
m1 = pow(c1,int(d1),n1)
# m1 = 11775517453863996563134035490381223284801389447022348837092806629482902301042769151917156039535676274713308069533584211081526392912472011090033981642998869

part2:
已知 ( p + q ) 低 624 位 又知道 n = p ∗ q 那么联立 l e a k 2 和 n 2 % 2 624 即可得到 p 或 q 的低位 之后 c o p p e r 一下即可得到完整的 p 或 q 已知(p + q)低624位\\ 又知道n = p * q\\ 那么联立leak2和n2 \% 2^{624}即可得到p或q的低位\\ 之后copper一下即可得到完整的p或q 已知(p+q)624又知道n=pq那么联立leak2n2%2624即可得到pq的低位之后copper一下即可得到完整的pq
思路和d低位攻击差不多
exp:

from Crypto.Util.number import *def get_full_p(p_low, n):PR.<x> = PolynomialRing(Zmod(n))nbits = n.nbits()p_lowbits = p_low.nbits()f = 2^p_lowbits*x + p_lowf = f.monic()roots = f.small_roots(X=2^(nbits//2-p_lowbits), beta=0.4)  if roots:x0 = roots[0]p = gcd(2^p_lowbits*x0 + p_low, n)return ZZ(p)def find_p_low(low, n):X = var('X')results = solve_mod([n == X * (low - X)], 2^low.nbits())for x in results:p_low = ZZ(x[0])p = get_full_p(p_low, n)if p and p != 1:return pc2 = 5473961166821344576614003060897848014482672788904094340704447882490091115468180944569409159343222459801235179587721232166576530621751748850763430788036935832653535110975154800191323351333883661451331971042214143454441651165718504131976920077768864850035471790911190772583977173388975105970866592974077361193822302653046511418190410043729876062517148438923211673300268277037622337403526399584759202097925983596261279676101079771530118525540842499517622478819211528345668513680064744443628779623340175578509413636950545134641050948185944279029949957748464529075830770617236599864271566534714755373562527112224962839980
leak2 = 62964793504732923650344975634773688108135580826064134090114181449607062497690184718845295432644650580930430061411603385577783897575232298084007041511817031640186953023971498914096209984730
n2 = 20748652069632848434897928314437138341436264859802586939154590237186029244907936870477844563166827587536149170710720365760129683024401957095447466056746469055173897234659911291443605912459271248059341147358511860537769587963189092648473894868209838600346115919726589891777340166174017389513260737891557712152871714337946675533597049874155202056200170954033849176655928144354665553271709442011723088448485570394208728775665739819536229908847043007472178803394055783543378990699834066614262050119443421709878598533329555838915158259138297060574425019923291353077080236769586821808150397875920110335669136563171420068201
e2 = 65537
p2 = find_p_low(leak2, n2)
q2 = n2 // p2
d2 = inverse(e2,(p2 - 1) * (q2 - 1))
m2 = pow(c2,d2,n2)
print(m2)
# m2 = 637474741382124491125351127892971159828342019036405954553729272346832023284163998914076056292480317209934960796148267118196288511438260371617371342378683017480560448795

part3:
请参考:
https://tangcuxiaojikuai.xyz/post/342113ee.html
exp:

from gmpy2 import *
c3 = 34640310217688693418173336791306022698488916505988760907493665070072623574363578354500529023855888624978101429772253437880445815006839767802433777006836665709335479076676231470534690281412388704665083311568028710188940132495410474044569100181764053297307413009214044407982980600917158732129850605715306726034
leak3 = 3763587651775261955566046684899146246387485307521708557610018711932791630073528010801142052497
n3 = 94848869174430082173244966077736519396702141299429965725051314270443078621842166791082354594193554380275167898342497998871366256044865879909218309960595691008663632410356093966762639308253848450178310347612630814852054763933063313537694449475061227647475480417779126252294793767003555255527593551612032661749leak3 = leak3 << 200
leak3 = bin(leak3)[2:].zfill(512)
leakbits = 200def findp(pp,qq,l):p_Min = int(pp + (512-l)*"0",2)p_Max = int(pp + (512-l)*"1",2)q_Min = int(qq + (512-l)*"0",2)q_Max = int(qq + (512-l)*"1",2)if(l == 512 - leakbits):R.<x> = PolynomialRing(Zmod(n3))phigh = p_Minf3 = phigh + xroot = f3.small_roots(X=2^leakbits, beta=0.4)if root != []:p3 = phigh + int(root[0])q3 = n3 // p3d = gmpy2.invert(e,(p3-1)*(q3-1))m3 = pow(c3,d,n3)print(f"m3 = {m3}")if (p_Max * q_Max < n3) or (p_Min * q_Min > n3):return# 以下是根据异或来操作的if leak3[l] == '0':findp(pp + '1',qq + '1',l+1)findp(pp + '0',qq + '0',l+1)if leak3[l] == '1':findp(pp + '1',qq + '0',l+1)findp(pp + '0',qq + '1',l+1)findp('1','1',1)
# m3 = 334132319136130454419386550847309794306389604470819859736266178647538718607667083644497296078054806893307642673035506225568447967643224450929477875810797878149197295514

[2023 江苏省数据安全竞赛] hardrsa

来源在此
题目描述:

from Crypto.Util.number import *
from random import randint
# from secret import message
p, q = [getPrime(1024) for _ in range(2)]
n = p * qdef pad(msg: bytes) -> bytes:return msg + long_to_bytes(len(msg) & 0xff) * (2048 // 8 - len(msg) - 1)def f(x: int, poly: list[int]) -> int:return sum([poly[i] * pow(x, i, n) for i in range(len(poly))]) % ndef commit(m: int, d: int, key: int, poly: list[int]) -> (int, int):sig = pow(m, d, n)c1 = (sig + pow(key, 8, n) + pow(key, 4, n) + pow(key, 2, n)) % nc2 = f(key, poly)return c1, c2def reveal(comm: (int, int), e: int, key: int, poly: list[int]) -> int:c1, c2 = commassert f(key, poly) == c2sig = (c1 - pow(key, 8, n) - pow(key, 4, n) - pow(key, 2, n)) % nreturn pow(sig, e, n)def part1(msg):e = 233assert GCD(e, (p - 1) * (q - 1)) == 1m = bytes_to_long(pad(msg))c = pow(m, e, n)print(f"# Part1: RSA-Encrypted Ciphertext\n"f"{e = }\n"f"{n = }\n"f"{c = }\n")def part2(msg):e = getPrime(256)assert GCD(e, (p - 1) * (q - 1)) == 1d = inverse(e, (p - 1) * (q - 1))key = getPrime(1024)poly = [randint(n // 2, n) for _ in range(8)]m = bytes_to_long(msg)comm = commit(m, d, key, poly)print(f"# Part2: RSA-Committed Promise\n"f"{e = }\n"f"{n = }\n"f"{poly = }\n"f"{comm = }\n")part1(message)
part2(message)'''
# Part1: RSA-Encrypted Ciphertext
e = 233
n = 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499848216781403839908159869808167642603742236390452605002523104832413884128824863453874477895814675168541067154527938435375815931877307360825011810649184534014412683654903241610167115302439866360069493031086872354910005880773459207712493126679315455220650236256646891830311728264963649315399787003295334546874291
c = 7252592878713436249451954839264355322580930765631177572271016442117341039243270139159572914726052278102731751307948710556102124039673892501351580382026911586520822698910216934337820791611920030598567775355231131126300774119520299748279014958652077682887635170584723744587650744421280998057075011222009042174385778453331646210379693618543179886347307521772868295540264296894711602178922977038080083149136928926845871859677401680541048431032673765061924102033485570287098238695235990854284581798656185853973943961983020641995838344765211070928405487458023474992011192333056478388071341171355197120988215168198599723008# Part2: RSA-Committed Promise
e = 66193637341723367163125702898112480448278699637268148343857725442855402823431
n = 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499848216781403839908159869808167642603742236390452605002523104832413884128824863453874477895814675168541067154527938435375815931877307360825011810649184534014412683654903241610167115302439866360069493031086872354910005880773459207712493126679315455220650236256646891830311728264963649315399787003295334546874291
poly = [11717154796621555517773089565161800782497395722578959209529354534025874232277165805913450430518606899030436997688640019197332182511107284797218734095249300649807218465147399703372218739746124711200544753873488683088277396707752681278994522913785476758026448815685216381723435987067431688479748324396207672503845734170132747031467431651462218384749316037680784863900868165022343622041751554333022117572879116218759879246367088427084626950955537463817968031017275910364363695899152710198165120432170787171341528864286158526038651919017107408570791186937519694774479837991365808631767140379749029359380372242375950137980, 9123862087464108309368301961629788915272772896023134293061688494597654503820136260901587831268936385580664649067767056115754724046745958708702235170960467356062328703981921906752172049390790202666123073269199722768061043975957820847564911432200111405506704374689942732871658793810805164611038997319494337357970794059964303933995742679251310010710434981636137595085517852847956640902442517513717087059546226466932055404728069004610675179760781279470558117788079744090471741006843223391295194412058215189490450122125518118132532661928747925982914732441440478529947224247988342993141712946093256348898996486327422944643, 6030603763346983288102354051890376530618029881435881726123892326247756715375950846629522738204125453587401831309679161545839726580035304449416761250948280327548535169936710507270611945843758842074476358246176098954644815210291073632368712607495031631913377358289661882694855436741228045084898247782669601243425453739817361547681943880579046765521731792701727321918301930375236655162783436465648090046259078120078910758575245396369709495063070202433832221772728021708079141746515469950248160534726502810704256703088684677877258573049270790396920638239330550633086994873425126929073220720355594488969185367608970916707, 9716821256832823750824128939107476939193936880337072944057098552215636341970779759899504078211465219351423745606682464111980567519009576095570498485630378890832910178268396634042751260634975171396984879182577992189999471936271429379306815019808996603918680787757713732404409692378153404122817226376865296438358486825612038858671776168645459752591925049260849071890295705474681598072886213619765003334857584781191985867775067185431488903206792188339131394272348988190482038716689478427650052247117559254256426511237932521351563089652047479479797300938563071283204961821455011631287889953996753731046822530037290627603, 11666333796778950070167408874398723214755352342048420236509233384060504228691247439421717776145154660819665260614606719030374746157097188777077905502366283706404249089084254210184487000990590270597382395207166506919474285640547576022841376382228267993104083461046139626378377974880966684427584303435662417721364008851870996677773917720510662526494737368571401785448409850024786090719768664502422761048062510586525467980024015286711938702512216482448086269597385419099772350149085440682892594663347642016624766961661170116360402443166746640256191226904369488864228395770803375247648092252065676886829888128110190309444, 11462478619099457240194769131836026270676403653501558282234968840872201162571883741201212219688281503510052098158124641727050288323198630131726234941868641468115278637960576287497767164456374120707437312761564310114818371263585487215911621560151358932205369221540130826905285545384305252671441989503441136412038093124085709642767025279350701000689026612157516744318724863351212190331852873715100901776905551563639179863329686328110637392713048373928191537946089436183622931782516720136751294476526680955429995943935488708846823839471792834286557115607414856063416087088477870164924987940894347486987836314461869534685, 10653980645418567411513922726616332470333513058407903035252559634113729870896307952345894573596782737100406813700290955080352696027100830934620756512872071900141804524610003605512659517424571217583346011965481480902253618773638355461764615453623374981103761629025970935810383120788534231421966726189585137512500570267960570464567388134331962043004849033375701972321858826974571976630891280420154316273033822618993014775803644483310026324771611118893293874122154993194283048698946653630901390782848148154411901241076544121228997263925606737607053972716874433300890330943412885434902240474709761223385352589083032128765, 10333595582803945043794471549604060392892058436121718182876444277996436845270662996790111238164033031406294804268590041670028232929474601883136059254591114821360112812291665655800401763541770303414040301090112758998311872983916961222346986656419661796203670733971009015803316347392237554891453769853704667050186727532712938810529943794137758599829378190680080965770951235622571154549350843468969908612054253674618037317066245764371279129776346266283585071808588302272504846382220877158974560863342504477881966924796683784677005619901829479041024077089614741081459831955279053575767736159622130675063748407061992052183]
comm = (10564327899571559803556847534640695884330979746141728381165331691371976198263843416751526335144564535035858053981517608346244582495510435781708514545410097533789005704048949775023251844189682064338358890427739102350645579483449459063227298628580813444257846278172112872070476617876388978632815732351176279459891770448714218081580878962036244554120215500496692247248020278906488898449151646331624912262205484811525189621806737849258225367134474296238235621600330628737449413319226263301240126177028279222960781645584351180328940683511286708507993883536602761937997289906562917482293638052704507924397633424367496240964, 4387528105610677136382722097833805553385843892958316305467187670486199250717569327341072891778254838060236323831885558131143386943636641524724956236926177315970135623681789134933521529522559017273929375073606157451115549453689875510487618793700227395725601364775309166607448269494881759434610031015774783174435486283695473704010367742281324624499239551547535691273360430539739519609019906949849114055192830821910951442964212279996201740422429695430649919698399420612775831374301153008912976259171898412262142433496285240507322095993886385920265570293733256427242653393188675651145896591757150999795300092930798687689)
'''

记录解法:
已知:
c 1 ≡ m d + k 8 + k 4 + k 2 ( m o d n ) c_1\equiv m^d+k^8+k^4+k^2\pmod{\begin{array}{c}n\\\end{array}} c1md+k8+k4+k2(modn)
c 2 ≡ p o l y 0 + p o l y 1 ⋅ k + p o l y 2 ⋅ k 2 + p o l y 3 ⋅ k 3 + p o l y 4 ⋅ k 4 + p o l y 5 ⋅ k 5 + p o l y 6 ⋅ k 6 + p o l y 7 ⋅ k 7 ( m o d n ) c_2\equiv poly_0+poly_1\cdot k+poly_2\cdot k^2+poly_3\cdot k^3+poly_4\cdot k^4+poly_5\cdot k^5+poly_6\cdot k^6+poly_7\cdot k^7\mathrm{~(mod~}n) c2poly0+poly1k+poly2k2+poly3k3+poly4k4+poly5k5+poly6k6+poly7k7 (mod n)
可以得到三个等式:
1. f 1 ( k ) ≡ ∑ i = 0 7 p o l y i k i − c 2 ( m o d n ) 1. f_1(k) \equiv\sum_{i=0}^7poly_ik^i-c_2\mathrm{~(mod~}\mathrm{~}n) 1.f1(k)i=07polyikic2 (mod  n)
2. f 2 ( m ) ≡ ( p a d ( m ) ) 233 − c ( m o d n ) 2. f_2(m)\equiv(pad(m))^{233}-c\mathrm{~(mod~}n) 2.f2(m)(pad(m))233c (mod n)
3. m ≡ ( c 1 − k 8 − k 4 − k 2 ) e ( m o d n ) 3. m\equiv(c_1-k^8-k^4-k^2)^e\mathrm{~(mod~}\mathrm{~}n) 3.m(c1k8k4k2)e (mod  n)
直接把 3 式带到 2 式中会导致 f 2 的度过高,所以优化一下 已知 f 1 ( k ) = k n ,又知道在模 k n 下满足的式子在模 n 下一定成立,故把 m 带入 f 2 再模上多项式 f 1 这样 f 2 的度就低于 8 ,然后联立它和 f 1 差不多就能求出 k 了 ( 里面的 p a d d i n g 部分浅爆一下就行 ) 直接把3式带到2式中会导致f_2的度过高,所以优化一下\\ 已知f_1(k) = kn,又知道在模kn下满足的式子在模n下一定成立,故把m带入f_2再模上多项式f_1\\ 这样f_2的度就低于8,然后联立它和f_1差不多就能求出k了\\ (里面的padding部分浅爆一下就行) 直接把3式带到2式中会导致f2的度过高,所以优化一下已知f1(k)=kn,又知道在模kn下满足的式子在模n下一定成立,故把m带入f2再模上多项式f1这样f2的度就低于8,然后联立它和f1差不多就能求出k(里面的padding部分浅爆一下就行)

( 不模 f 1 , 直接模 n 出不来结果,试过,不过我也不知道原因 ) (不模f_1,直接模n出不来结果,试过,不过我也不知道原因) (不模f1,直接模n出不来结果,试过,不过我也不知道原因)

exp:

# sage
from Crypto.Util.number import *
e1 = 233
c = 7252592878713436249451954839264355322580930765631177572271016442117341039243270139159572914726052278102731751307948710556102124039673892501351580382026911586520822698910216934337820791611920030598567775355231131126300774119520299748279014958652077682887635170584723744587650744421280998057075011222009042174385778453331646210379693618543179886347307521772868295540264296894711602178922977038080083149136928926845871859677401680541048431032673765061924102033485570287098238695235990854284581798656185853973943961983020641995838344765211070928405487458023474992011192333056478388071341171355197120988215168198599723008
e2 = 66193637341723367163125702898112480448278699637268148343857725442855402823431
n = 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499848216781403839908159869808167642603742236390452605002523104832413884128824863453874477895814675168541067154527938435375815931877307360825011810649184534014412683654903241610167115302439866360069493031086872354910005880773459207712493126679315455220650236256646891830311728264963649315399787003295334546874291
poly = [11717154796621555517773089565161800782497395722578959209529354534025874232277165805913450430518606899030436997688640019197332182511107284797218734095249300649807218465147399703372218739746124711200544753873488683088277396707752681278994522913785476758026448815685216381723435987067431688479748324396207672503845734170132747031467431651462218384749316037680784863900868165022343622041751554333022117572879116218759879246367088427084626950955537463817968031017275910364363695899152710198165120432170787171341528864286158526038651919017107408570791186937519694774479837991365808631767140379749029359380372242375950137980, 9123862087464108309368301961629788915272772896023134293061688494597654503820136260901587831268936385580664649067767056115754724046745958708702235170960467356062328703981921906752172049390790202666123073269199722768061043975957820847564911432200111405506704374689942732871658793810805164611038997319494337357970794059964303933995742679251310010710434981636137595085517852847956640902442517513717087059546226466932055404728069004610675179760781279470558117788079744090471741006843223391295194412058215189490450122125518118132532661928747925982914732441440478529947224247988342993141712946093256348898996486327422944643, 6030603763346983288102354051890376530618029881435881726123892326247756715375950846629522738204125453587401831309679161545839726580035304449416761250948280327548535169936710507270611945843758842074476358246176098954644815210291073632368712607495031631913377358289661882694855436741228045084898247782669601243425453739817361547681943880579046765521731792701727321918301930375236655162783436465648090046259078120078910758575245396369709495063070202433832221772728021708079141746515469950248160534726502810704256703088684677877258573049270790396920638239330550633086994873425126929073220720355594488969185367608970916707, 9716821256832823750824128939107476939193936880337072944057098552215636341970779759899504078211465219351423745606682464111980567519009576095570498485630378890832910178268396634042751260634975171396984879182577992189999471936271429379306815019808996603918680787757713732404409692378153404122817226376865296438358486825612038858671776168645459752591925049260849071890295705474681598072886213619765003334857584781191985867775067185431488903206792188339131394272348988190482038716689478427650052247117559254256426511237932521351563089652047479479797300938563071283204961821455011631287889953996753731046822530037290627603, 11666333796778950070167408874398723214755352342048420236509233384060504228691247439421717776145154660819665260614606719030374746157097188777077905502366283706404249089084254210184487000990590270597382395207166506919474285640547576022841376382228267993104083461046139626378377974880966684427584303435662417721364008851870996677773917720510662526494737368571401785448409850024786090719768664502422761048062510586525467980024015286711938702512216482448086269597385419099772350149085440682892594663347642016624766961661170116360402443166746640256191226904369488864228395770803375247648092252065676886829888128110190309444, 11462478619099457240194769131836026270676403653501558282234968840872201162571883741201212219688281503510052098158124641727050288323198630131726234941868641468115278637960576287497767164456374120707437312761564310114818371263585487215911621560151358932205369221540130826905285545384305252671441989503441136412038093124085709642767025279350701000689026612157516744318724863351212190331852873715100901776905551563639179863329686328110637392713048373928191537946089436183622931782516720136751294476526680955429995943935488708846823839471792834286557115607414856063416087088477870164924987940894347486987836314461869534685, 10653980645418567411513922726616332470333513058407903035252559634113729870896307952345894573596782737100406813700290955080352696027100830934620756512872071900141804524610003605512659517424571217583346011965481480902253618773638355461764615453623374981103761629025970935810383120788534231421966726189585137512500570267960570464567388134331962043004849033375701972321858826974571976630891280420154316273033822618993014775803644483310026324771611118893293874122154993194283048698946653630901390782848148154411901241076544121228997263925606737607053972716874433300890330943412885434902240474709761223385352589083032128765, 10333595582803945043794471549604060392892058436121718182876444277996436845270662996790111238164033031406294804268590041670028232929474601883136059254591114821360112812291665655800401763541770303414040301090112758998311872983916961222346986656419661796203670733971009015803316347392237554891453769853704667050186727532712938810529943794137758599829378190680080965770951235622571154549350843468969908612054253674618037317066245764371279129776346266283585071808588302272504846382220877158974560863342504477881966924796683784677005619901829479041024077089614741081459831955279053575767736159622130675063748407061992052183]
comm = (10564327899571559803556847534640695884330979746141728381165331691371976198263843416751526335144564535035858053981517608346244582495510435781708514545410097533789005704048949775023251844189682064338358890427739102350645579483449459063227298628580813444257846278172112872070476617876388978632815732351176279459891770448714218081580878962036244554120215500496692247248020278906488898449151646331624912262205484811525189621806737849258225367134474296238235621600330628737449413319226263301240126177028279222960781645584351180328940683511286708507993883536602761937997289906562917482293638052704507924397633424367496240964, 4387528105610677136382722097833805553385843892958316305467187670486199250717569327341072891778254838060236323831885558131143386943636641524724956236926177315970135623681789134933521529522559017273929375073606157451115549453689875510487618793700227395725601364775309166607448269494881759434610031015774783174435486283695473704010367742281324624499239551547535691273360430539739519609019906949849114055192830821910951442964212279996201740422429695430649919698399420612775831374301153008912976259171898412262142433496285240507322095993886385920265570293733256427242653393188675651145896591757150999795300092930798687689)R.<x,s> = PolynomialRing(Zmod(n))
f1 = 0
for i in range(len(poly)):f1 += poly[i] * x ^ i
f1 -= comm[1]
# 求m模f1下的e次方
f = comm[0] - x ^ 8 - x ^ 4 - x ^ 2
F = 1
for i in bin(e2)[2:][::-1]:if i == '1':F = (F * f) % f1f = (f * f) % f1for i in range(1,255):print(i)f = deepcopy(F)# 爆破一下填充,带入f2,求233次f = f * 256 ^ (255 - i) + bytes_to_long(long_to_bytes(i) * (255 - i))FF = 1for i in bin(e1)[2:][::-1]:if i == '1':FF = FF * f % f1f = f * f % f1f2 = FF - c# 求f1 和 f2的结式,得到(x - k)ans = Ideal([f1,f2]).groebner_basis()if ans != [1]:print(ans)break
# python
from Crypto.Util.number import *
e2 = 66193637341723367163125702898112480448278699637268148343857725442855402823431
n = 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499848216781403839908159869808167642603742236390452605002523104832413884128824863453874477895814675168541067154527938435375815931877307360825011810649184534014412683654903241610167115302439866360069493031086872354910005880773459207712493126679315455220650236256646891830311728264963649315399787003295334546874291
poly = [11717154796621555517773089565161800782497395722578959209529354534025874232277165805913450430518606899030436997688640019197332182511107284797218734095249300649807218465147399703372218739746124711200544753873488683088277396707752681278994522913785476758026448815685216381723435987067431688479748324396207672503845734170132747031467431651462218384749316037680784863900868165022343622041751554333022117572879116218759879246367088427084626950955537463817968031017275910364363695899152710198165120432170787171341528864286158526038651919017107408570791186937519694774479837991365808631767140379749029359380372242375950137980, 9123862087464108309368301961629788915272772896023134293061688494597654503820136260901587831268936385580664649067767056115754724046745958708702235170960467356062328703981921906752172049390790202666123073269199722768061043975957820847564911432200111405506704374689942732871658793810805164611038997319494337357970794059964303933995742679251310010710434981636137595085517852847956640902442517513717087059546226466932055404728069004610675179760781279470558117788079744090471741006843223391295194412058215189490450122125518118132532661928747925982914732441440478529947224247988342993141712946093256348898996486327422944643, 6030603763346983288102354051890376530618029881435881726123892326247756715375950846629522738204125453587401831309679161545839726580035304449416761250948280327548535169936710507270611945843758842074476358246176098954644815210291073632368712607495031631913377358289661882694855436741228045084898247782669601243425453739817361547681943880579046765521731792701727321918301930375236655162783436465648090046259078120078910758575245396369709495063070202433832221772728021708079141746515469950248160534726502810704256703088684677877258573049270790396920638239330550633086994873425126929073220720355594488969185367608970916707, 9716821256832823750824128939107476939193936880337072944057098552215636341970779759899504078211465219351423745606682464111980567519009576095570498485630378890832910178268396634042751260634975171396984879182577992189999471936271429379306815019808996603918680787757713732404409692378153404122817226376865296438358486825612038858671776168645459752591925049260849071890295705474681598072886213619765003334857584781191985867775067185431488903206792188339131394272348988190482038716689478427650052247117559254256426511237932521351563089652047479479797300938563071283204961821455011631287889953996753731046822530037290627603, 11666333796778950070167408874398723214755352342048420236509233384060504228691247439421717776145154660819665260614606719030374746157097188777077905502366283706404249089084254210184487000990590270597382395207166506919474285640547576022841376382228267993104083461046139626378377974880966684427584303435662417721364008851870996677773917720510662526494737368571401785448409850024786090719768664502422761048062510586525467980024015286711938702512216482448086269597385419099772350149085440682892594663347642016624766961661170116360402443166746640256191226904369488864228395770803375247648092252065676886829888128110190309444, 11462478619099457240194769131836026270676403653501558282234968840872201162571883741201212219688281503510052098158124641727050288323198630131726234941868641468115278637960576287497767164456374120707437312761564310114818371263585487215911621560151358932205369221540130826905285545384305252671441989503441136412038093124085709642767025279350701000689026612157516744318724863351212190331852873715100901776905551563639179863329686328110637392713048373928191537946089436183622931782516720136751294476526680955429995943935488708846823839471792834286557115607414856063416087088477870164924987940894347486987836314461869534685, 10653980645418567411513922726616332470333513058407903035252559634113729870896307952345894573596782737100406813700290955080352696027100830934620756512872071900141804524610003605512659517424571217583346011965481480902253618773638355461764615453623374981103761629025970935810383120788534231421966726189585137512500570267960570464567388134331962043004849033375701972321858826974571976630891280420154316273033822618993014775803644483310026324771611118893293874122154993194283048698946653630901390782848148154411901241076544121228997263925606737607053972716874433300890330943412885434902240474709761223385352589083032128765, 10333595582803945043794471549604060392892058436121718182876444277996436845270662996790111238164033031406294804268590041670028232929474601883136059254591114821360112812291665655800401763541770303414040301090112758998311872983916961222346986656419661796203670733971009015803316347392237554891453769853704667050186727532712938810529943794137758599829378190680080965770951235622571154549350843468969908612054253674618037317066245764371279129776346266283585071808588302272504846382220877158974560863342504477881966924796683784677005619901829479041024077089614741081459831955279053575767736159622130675063748407061992052183]
comm = (10564327899571559803556847534640695884330979746141728381165331691371976198263843416751526335144564535035858053981517608346244582495510435781708514545410097533789005704048949775023251844189682064338358890427739102350645579483449459063227298628580813444257846278172112872070476617876388978632815732351176279459891770448714218081580878962036244554120215500496692247248020278906488898449151646331624912262205484811525189621806737849258225367134474296238235621600330628737449413319226263301240126177028279222960781645584351180328940683511286708507993883536602761937997289906562917482293638052704507924397633424367496240964, 4387528105610677136382722097833805553385843892958316305467187670486199250717569327341072891778254838060236323831885558131143386943636641524724956236926177315970135623681789134933521529522559017273929375073606157451115549453689875510487618793700227395725601364775309166607448269494881759434610031015774783174435486283695473704010367742281324624499239551547535691273360430539739519609019906949849114055192830821910951442964212279996201740422429695430649919698399420612775831374301153008912976259171898412262142433496285240507322095993886385920265570293733256427242653393188675651145896591757150999795300092930798687689)
k = n - 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499693960184446731314918105642113926187107833337161524510120603332593906360209185930338647472196619213478020597693556397507575990827712746479989636430658680762894157884135805985796209803194138514597265621623815104440785237530400299161579990533910282443770714101522282163174088074769666145653173062992665886703602
mm = pow((int(comm[0]) - pow(k,8,n) - pow(k,4,n) - pow(k,2,n)) % n,e2,n)
print(long_to_bytes(mm))
# flag{7c95453a-e577-40d8-9ad0-993655b83b69}

另一种解法
利用伴随矩阵
1. f 1 ( k ) ≡ ∑ i = 0 7 p o l y i k i − c 2 ( m o d n ) 1. f_1(k) \equiv\sum_{i=0}^7poly_ik^i-c_2\mathrm{~(mod~}\mathrm{~}n) 1.f1(k)i=07polyikic2 (mod  n)
2. f 2 ≡ m d + k 8 + k 4 + k 2 − c 1 ( m o d n ) 2. f_2\equiv m^d + k^8 + k^4 + k^2 - c_1 \pmod n 2.f2md+k8+k4+k2c1(modn)
m d 次数太高,我们直接将其设为变量,于是有: 3. f 2 ( m d , k ) ≡ m d + k 8 + k 4 + k 2 − c 1 两式联立得到关于 m d 的多项式 h ,测试结果中得到的 h 的度是 7 故有 h ( m d ) = m d 7 + c o e 6 ∗ m d 6 + . . . + c o e 1 ∗ m d + c o e 0 又知道 m = ( m d ) e ,故我们把 h ( m d ) 中每项升个 e 次方,就能得到一个关于 m 的多项式 和 f ( m ) ≡ ( p a d ( m ) ) 233 − c ( m o d n ) 来个 G C D 便能得到 x − m m^d次数太高,我们直接将其设为变量,于是有:\\ 3. f_2(md,k) \equiv md + k^8 + k^4 + k^2 - c_1\\ 两式联立得到关于md的多项式h,测试结果中得到的h的度是7\\ 故有h(md) = md^7 + coe_6 * md^6 + ... + coe_1 * md + coe_0\\ 又知道m = (md)^e,故我们把h(md)中每项升个e次方,就能得到一个关于m的多项式\\ 和f(m)\equiv(pad(m))^{233}-c\mathrm{~(mod~}n)来个GCD便能得到x - m md次数太高,我们直接将其设为变量,于是有:3.f2(md,k)md+k8+k4+k2c1两式联立得到关于md的多项式h,测试结果中得到的h的度是7故有h(md)=md7+coe6md6+...+coe1md+coe0又知道m=(md)e,故我们把h(md)中每项升个e次方,就能得到一个关于m的多项式f(m)(pad(m))233c (mod n)来个GCD便能得到xm

如何实现?利用伴随矩阵 companion_matrix

我们求出当前多项式 h ( m d ) h(md) h(md)的伴随矩阵 C ( h ) C( h) C(h) C ( h ) C(h) C(h)的特征多项式就是 h ( m d ) h(md) h(md) C ( h ) C(h) C(h)的特征值就是 h ( m d ) h(md) h(md)的解,那么 m d m^d md就会是 C ( h ) C(h) C(h)的对角矩阵上的一个元素。
因此我们求一个 C ( h ) e C(h)^e C(h)e,那么其对角矩阵上的一个元素就会是 ( m d ) e ≡ m ( m o d n ) ( m^d) ^e\equiv m \pmod n (md)em(modn),也就意味着新特征多项式的一个解是 m m m

所以,我们只需要对 h ( m d ) h(md) h(md)的伴随矩阵求一个e次幂,再取其特征多项式即可得到m
he = (companion_matrix(h) ** e).charpoly()

from Crypto.Util.number import *
from tqdm import *def GCD(g1, g2):while g2:g1, g2 = g2, g1 % g2return g1.monic()e1 = 233
c1 = 7252592878713436249451954839264355322580930765631177572271016442117341039243270139159572914726052278102731751307948710556102124039673892501351580382026911586520822698910216934337820791611920030598567775355231131126300774119520299748279014958652077682887635170584723744587650744421280998057075011222009042174385778453331646210379693618543179886347307521772868295540264296894711602178922977038080083149136928926845871859677401680541048431032673765061924102033485570287098238695235990854284581798656185853973943961983020641995838344765211070928405487458023474992011192333056478388071341171355197120988215168198599723008
e2 = 66193637341723367163125702898112480448278699637268148343857725442855402823431
n = 11935450457829533235861673228297207102011152676397253867146913792126035709631838912054379483925100858088716543548565883127607546205725887108101118334914085611884304295616391635635730462010491550855190770776531821441961930152081076014630292188457483421965231052149991813167636622576040955869771100692060798499848216781403839908159869808167642603742236390452605002523104832413884128824863453874477895814675168541067154527938435375815931877307360825011810649184534014412683654903241610167115302439866360069493031086872354910005880773459207712493126679315455220650236256646891830311728264963649315399787003295334546874291
poly = [11717154796621555517773089565161800782497395722578959209529354534025874232277165805913450430518606899030436997688640019197332182511107284797218734095249300649807218465147399703372218739746124711200544753873488683088277396707752681278994522913785476758026448815685216381723435987067431688479748324396207672503845734170132747031467431651462218384749316037680784863900868165022343622041751554333022117572879116218759879246367088427084626950955537463817968031017275910364363695899152710198165120432170787171341528864286158526038651919017107408570791186937519694774479837991365808631767140379749029359380372242375950137980, 9123862087464108309368301961629788915272772896023134293061688494597654503820136260901587831268936385580664649067767056115754724046745958708702235170960467356062328703981921906752172049390790202666123073269199722768061043975957820847564911432200111405506704374689942732871658793810805164611038997319494337357970794059964303933995742679251310010710434981636137595085517852847956640902442517513717087059546226466932055404728069004610675179760781279470558117788079744090471741006843223391295194412058215189490450122125518118132532661928747925982914732441440478529947224247988342993141712946093256348898996486327422944643, 6030603763346983288102354051890376530618029881435881726123892326247756715375950846629522738204125453587401831309679161545839726580035304449416761250948280327548535169936710507270611945843758842074476358246176098954644815210291073632368712607495031631913377358289661882694855436741228045084898247782669601243425453739817361547681943880579046765521731792701727321918301930375236655162783436465648090046259078120078910758575245396369709495063070202433832221772728021708079141746515469950248160534726502810704256703088684677877258573049270790396920638239330550633086994873425126929073220720355594488969185367608970916707, 9716821256832823750824128939107476939193936880337072944057098552215636341970779759899504078211465219351423745606682464111980567519009576095570498485630378890832910178268396634042751260634975171396984879182577992189999471936271429379306815019808996603918680787757713732404409692378153404122817226376865296438358486825612038858671776168645459752591925049260849071890295705474681598072886213619765003334857584781191985867775067185431488903206792188339131394272348988190482038716689478427650052247117559254256426511237932521351563089652047479479797300938563071283204961821455011631287889953996753731046822530037290627603, 11666333796778950070167408874398723214755352342048420236509233384060504228691247439421717776145154660819665260614606719030374746157097188777077905502366283706404249089084254210184487000990590270597382395207166506919474285640547576022841376382228267993104083461046139626378377974880966684427584303435662417721364008851870996677773917720510662526494737368571401785448409850024786090719768664502422761048062510586525467980024015286711938702512216482448086269597385419099772350149085440682892594663347642016624766961661170116360402443166746640256191226904369488864228395770803375247648092252065676886829888128110190309444, 11462478619099457240194769131836026270676403653501558282234968840872201162571883741201212219688281503510052098158124641727050288323198630131726234941868641468115278637960576287497767164456374120707437312761564310114818371263585487215911621560151358932205369221540130826905285545384305252671441989503441136412038093124085709642767025279350701000689026612157516744318724863351212190331852873715100901776905551563639179863329686328110637392713048373928191537946089436183622931782516720136751294476526680955429995943935488708846823839471792834286557115607414856063416087088477870164924987940894347486987836314461869534685, 10653980645418567411513922726616332470333513058407903035252559634113729870896307952345894573596782737100406813700290955080352696027100830934620756512872071900141804524610003605512659517424571217583346011965481480902253618773638355461764615453623374981103761629025970935810383120788534231421966726189585137512500570267960570464567388134331962043004849033375701972321858826974571976630891280420154316273033822618993014775803644483310026324771611118893293874122154993194283048698946653630901390782848148154411901241076544121228997263925606737607053972716874433300890330943412885434902240474709761223385352589083032128765, 10333595582803945043794471549604060392892058436121718182876444277996436845270662996790111238164033031406294804268590041670028232929474601883136059254591114821360112812291665655800401763541770303414040301090112758998311872983916961222346986656419661796203670733971009015803316347392237554891453769853704667050186727532712938810529943794137758599829378190680080965770951235622571154549350843468969908612054253674618037317066245764371279129776346266283585071808588302272504846382220877158974560863342504477881966924796683784677005619901829479041024077089614741081459831955279053575767736159622130675063748407061992052183]
comm = (10564327899571559803556847534640695884330979746141728381165331691371976198263843416751526335144564535035858053981517608346244582495510435781708514545410097533789005704048949775023251844189682064338358890427739102350645579483449459063227298628580813444257846278172112872070476617876388978632815732351176279459891770448714218081580878962036244554120215500496692247248020278906488898449151646331624912262205484811525189621806737849258225367134474296238235621600330628737449413319226263301240126177028279222960781645584351180328940683511286708507993883536602761937997289906562917482293638052704507924397633424367496240964, 4387528105610677136382722097833805553385843892958316305467187670486199250717569327341072891778254838060236323831885558131143386943636641524724956236926177315970135623681789134933521529522559017273929375073606157451115549453689875510487618793700227395725601364775309166607448269494881759434610031015774783174435486283695473704010367742281324624499239551547535691273360430539739519609019906949849114055192830821910951442964212279996201740422429695430649919698399420612775831374301153008912976259171898412262142433496285240507322095993886385920265570293733256427242653393188675651145896591757150999795300092930798687689)P = Zmod(n)["md,k"]
md, k = P.gens()
# 或者:
# P.<md, k> = PolynomialRing(Zmod(n))
# md, k = P.gens()f = md + k**8 + k**4 + k**2 - comm[0]
g = sum([poly[i] * k**i for i in range(len(poly))]) - comm[1]
h = f.sylvester_matrix(g, k).det().univariate_polynomial().monic()
h_coefficients = h.coefficients()
# 里面f.sylvester_matrix(g, k) = g.sylvester_matrix(f, k)final = (companion_matrix(h_coefficients) ** e2).charpoly() # md伴随矩阵e次幂的特征根# padding部分爆破
for i in trange(1,255):f1 = ((x * 256 ^ (255 - i) + bytes_to_long(long_to_bytes(i) * (255 - i))) ^ e1 - c).univariate_polynomial() # 创建一元多项式mm = GCD(M, f1)print(mm)if mm not in ZZ:m = int(-mm.monic()[0])print(long_to_bytes(m))break 
# flag{7c95453a-e577-40d8-9ad0-993655b83b69}

[2024HZNUCTF 决赛] ezmath

题目描述:

from hashlib import md5
from Crypto.Util.number import *
from secret import flag,a,b,cn = getPrime(512)assert n == a**2 + b**2 * c**2assert flag == "HZNUCTF{"+ md5(str(a+b+c).encode()).hexdigest() + "}"
# n =10025528183022843297972893037004274434565776775894832972425335533530501283241358450613164144702044922014938018419602889154405001125828093273180244377985061

题目分析:
我还在那推来着,结果是用库函数直接梭

from hashlib import md5
n =10025528183022843297972893037004274434565776775894832972425335533530501283241358450613164144702044922014938018419602889154405001125828093273180244377985061
a,b,c = three_squares(n) # 用于找到一个给定整数的三个平方数的和
flag = "HZNUCTF{"+ md5(str(a+b+c).encode()).hexdigest() + "}"
print(flag)
# HZNUCTF{55d1c6086bf65f7416ae547ca4adaaa0}

浅记一下
关键词:d高位攻击,d低位攻击,剪枝,伴随矩阵 companion_matrix,groebner_basis,sylvester_matrix,three_squares

这篇关于做题杂记666的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981231

相关文章

生活杂记1

生命中,总有一些事需要你一生去治愈,我把这些杂记写出来,写完了就不再想了,太内耗了…hahaha~ 因为嘴馋,小时候经常去老姑家,她家有各类零食及平时很少吃的“山珍海味”。去的次数多了,就和她家附近的邻居小孩也混的熟络了。再后来上了高中去的就少了,当年七中统招线521自费线491。我刚好压自费线,举全家之力花了15000读了七中,也没争气,后面高考也一塌糊涂。高二那会,一次去老姑家做客,经

【杂记】裂脑人实验和语言模型幻觉

【杂记】裂脑人实验和语言模型幻觉 模型的自主意识在哪里,人的自我认知在哪里?自然而然的,“裂脑人” 这个词突然出现在我脑海里。然后随意翻了翻相关的文章,觉得这个问题和目前大模型面临的幻觉问题也高度相关,遂随笔记录。 裂脑人 什么是裂脑人?人的大脑左右半脑本来是一个整体,因为先天或者后天的原因让左右半脑分开不产生连接,就是“裂脑”。过去这个方法被作为控制恶性癫痫的治疗手段。 一些铺垫知识

《C语言杂记》C语言预处理

预处理:对一些预处理命令进行执行的过程 预处理命令:头文件包含;宏定义等,用#开头的一些命令。 在C语言中预处理命令不会直接被编译,而是在编译这些预处理命令时,将这些预处理命令进行解析,然后将预处理结果替换成真正的C语言能编译的C语句。 在编译之前,预处理命令define会自动将程序中所有的Pi替换成3.14.在编译时程序中是不会在存在预处理命令的。 一)宏定义 1)不带参数的宏定义 如:

《C语言杂记》C语言常见错误

对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家: fatal error C1003: error count exceeds number; stopping compilation 中文对照:(编译错误)错误太多,停止编译 分析:修改之前的

《C语言杂记》从getmemery()函数看内存管理、函数传参等一系列问题

在C 面试题目中,会经常出现getmemery()函数的改错题,比如下面这道题, 例一:代码如下: #include <stdio.h> char *getmemery() { char p[] = "hello world!"; return p; } void main() { char *str = NULL; str = getmemery(); print

《Linux杂记》Linux系统安装搜狗输入法

在Windows平台和手机平台上大家对搜狗输入法用的比较多,其实搜狗输入法也对Ubuntu有软件包的,搜狗输入法是基于AMD体系架构的,在基于AMD的体系架构都是支持搜狗输入法,对于ARM体系架构搜狗输入法是不支持的,但是可以安装谷歌,请看笔者的其他文章。笔者在这里要讲的是搜狗输入法的安装,接下来笔者就带领大家安装搜狗输入法。 首先给出Linux版本搜狗输入法的下载链接: https://pin

《Linux杂记》Linux截屏设置

笔者使用的Ubuntu16.04是默认有截屏的功能,系统自带screenshot,可以使用终端命令的方式,也可使用快捷键。下面笔者就一一道来。 图1 上面就是screenshot的具体用法,笔者就不一一解释了。 每次遇到截屏要打开终端是很不方便的,接下来笔者就带领大家设置成自己喜欢的快捷键。 首先要打开”系统设置“,点击硬件下的”键盘“选项,然后点击”快捷键“标签,就可以看到快捷键的

《Linux杂记》Linux设置网卡速度与模式

1.Ethtool是用于查询及设置网卡参数的命令 ethtool ethX //查询ethX网口基本设置ethtool –h //显示ethtool的命令帮助(help)ethtool –i ethX //查询ethX网口的相关信息ethtool –d ethX //查询ethX网口注册性信息ethtool –r ethX //重置ethX网口到

《C语言杂记》C语言使用gets函数出现的警告问题

首先我们来看个程序。 #include <stdio.h>#include <string.h>int main(int argc, char *argv[]){char s[100];printf("输入字符串:\n");gets(s); printf("%s\n",s); return 0;} 但是在编译的时候回出现如下警告。 main.c: In function ‘main’

《C++杂记》循环终止输入方式(Ctrl+Z,Ctrl+C,Ctrl+D(EOF))

ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。 ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。 ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。 接下来笔者通过不同的例子来说明这些组合键的差异。  字符串输入 #include <iostream> #incl