【Crypto】第四届SQCTF-Crypto全解
Crypto- 你的天赋是什么
摩斯密码解密
... --.- -.-. - ..-. ----.-- -.-- --- ..- -....- .... .- ...- . -....- - .- .-.. . -. - -----.- SQCTF{YOU-HAVE-TALENT}
Crypto-《1789年的密文》
1793年,美国国务院档案室发现了一封加密信件,据信与开国元勋托马斯·杰弗逊的某位密友有关。信中提及一项"能抵御任何窥探的机械装置",但具体原理已随历史湮灭。档案附有一份手稿和若干木质圆盘残片,边缘刻有残缺的字母序列,每成功转动一格,真理便显露一层… 1: < QWXZRJYVKSLPDTMACFNOGIEBHU <2: < BXZPMTQOIRVHKLSAFUDGJYCEWN <3: < LKJHGFDSAQZWXECRVBYTNUIMOP <4: < POIUYTREWQASDFGHJKLMNBVCXZ <5: < ZXCVBNMASDFGHJKLPOIUYTREWQ <6: < MNHBGVCFXDRZESWAQPLOKMIJUY <7: < YUJIKMOLPQAWSZEXRDCFVGBHNM <8: < EDCRFVTGBYHNUJMIKOLPQAZWSX <9: < RFVGYBHNUJMIKOLPQAZWSXEDCT < 10: < TGBYHNUJMIKOLPQAZWSXEDCRFV < 11: < WSXEDCRFVTGBYHNUJMIKOLPQAZ < 12: < AZQWSXEDCRFVTGBYHNUJMIKOLP < 13: < VFRCDXESZWAQPLOKMIJNUHGBTG < 14: < IKOLPQAZWSXEDCRFVTGBYHNUJM < key = [4, 2 ,11, 8, 9, 12, 3, 6, 10, 14, 1, 5, 7, 13] 密文: UNEHJPBIUOMAVZ
# -*- coding:utf-8 -*- import re # 轮盘数据 code = ["QWXZRJYVKSLPDTMACFNOGIEBHU","BXZPMTQOIRVHKLSAFUDGJYCEWN","LKJHGFDSAQZWXECRVBYTNUIMOP","POIUYTREWQASDFGHJKLMNBVCXZ","ZXCVBNMASDFGHJKLPOIUYTREWQ","MNHBGVCFXDRZESWAQPLOKMIJUY","YUJIKMOLPQAWSZEXRDCFVGBHNM","EDCRFVTGBYHNUJMIKOLPQAZWSX","RFVGYBHNUJMIKOLPQAZWSXEDCT","TGBYHNUJMIKOLPQAZWSXEDCRFV","WSXEDCRFVTGBYHNUJMIKOLPQAZ","AZQWSXEDCRFVTGBYHNUJMIKOLP","VFRCDXESZWAQPLOKMIJNUHGBTG","IKOLPQAZWSXEDCRFVTGBYHNUJM" ] # 密文和密钥 codetext = "UNEHJPBIUOMAVZ" codenum = "4,2,11,8,9,12,3,6,10,14,1,5,7,13" codenum = codenum.split(",") # 将密钥转换为列表 # 解密过程 a = 0 print("解密后的:") for i in codenum:index = code[int(i) - 1].index(codetext[a]) # 找到密文字母在对应轮盘中的位置a += 1code[int(i) - 1] = code[int(i) - 1][index:] + code[int(i) - 1][:index] # 轮盘旋转print(code[int(i) - 1]) # 输出每一列的结果 print("\n下面是每一列的") for i in range(len(code[0])):result = ""print("第{}列的是:".format(i), end="")for j in codenum:result += code[int(j) - 1][i]print(result.lower())
解密后的: UYTREWQASDFGHJKLMNBVCXZPOI NBXZPMTQOIRVHKLSAFUDGJYCEW EDCRFVTGBYHNUJMIKOLPQAZWSX HNUJMIKOLPQAZWSXEDCRFVTGBY JMIKOLPQAZWSXEDCTRFVGYBHNU PAZQWSXEDCRFVTGBYHNUJMIKOL BYTNUIMOPLKJHGFDSAQZWXECRV IJUYMNHBGVCFXDRZESWAQPLOKM UJMIKOLPQAZWSXEDCRFVTGBYHN OLPQAZWSXEDCRFVTGBYHNUJMIK MACFNOGIEBHUQWXZRJYVKSLPDT ASDFGHJKLPOIUYTREWQZXCVBNM VGBHNMYUJIKMOLPQAWSZEXRDCF ZWAQPLOKMIJNUHGBTGVFRCDXES 下面是每一列的 第0列的是:unehjpbiuomavz 第1列的是:ybdnmayjjlasgw 第2列的是:txcuiztumpcdba 第3列的是:rzrjkqnyiqffhq 第4列的是:epfmowumkangnp 第5列的是:wmvilsinozohml 第6列的是:qttkpxmhlwgjyo 第7列的是:aqgoqeobpsikuk 第8列的是:sobladpgqxeljm 第9列的是:diypzclvaebpii 第10列的是:frhqwrkczdhokj 第11列的是:gvnasfjfwcuimn 第12列的是:hhuzxvhxsrquou 第13列的是:jkjwetgdxfwylh 第14列的是:klmsdgfrevxtpg 第15列的是:lsixcbdzdtzrqb 第16列的是:maketysecgreat 第17列的是:nfodrhasrbjwwg 第18列的是:bulcfnqwfyyqsv 第19列的是:vdprvuzavhvzzf 第20列的是:cgqfgjwqtnkxer 第21列的是:xjavymxpguscxc 第22列的是:zyztbielbjlvrd 第23列的是:pcwghkcoympbdx 第24列的是:oesbnorkhidnce 第25列的是:iwxyulvmnktmfs
SQCTF{maketysecgreat}
Crypto- Common Modulus
共模攻击
from libnum import * from sercet import flag p = generate_prime(1024) q = generate_prime(1024) e1 = generate_prime(32) e2 = generate_prime(32) m = s2n(flag) n = p * q c1 = pow(m, e1, n) c2 = pow(m, e2, n) print("n=", n) print("c1=", c1) print("c2=", c2) print("e1=", e1) print("e2=", e2) ''' n= 13650503560233612352420237787159267432351878281073422449253560365809461612884248041710373755322100953953257608601227381211434513766352420535096028618735289379355710140356003114010103377509526452574385251495847301426845768427018504464757671958803807138699056193259160806476941875860254288376872925837127208612702688503022494109785623082365323949385021488106289708499091818714253710552213982060745736652306892896670424179736886691685639988637188591805479432332714690818805432648223229601082431517091667297328748597580733946557364100555781113940729296951594110258088501146224322799560159763097710814171619948719257894889 c1= 3366500968116867439746769272799247895217647639427183907930755074259056811685671593722389247697636905214269760325119955242254171223875159785479900114989812511815466122321484289407596620307636198001794029251197349257235827433633936216505458557830334779187112907940003978773672225479445837897135907447625387990203145231671233038707457396631770623123809080945314083730185110252441203674945146889165953135351824739866177205127986576305492490242804571570833778440870959816207461376598067538653432472043116027057204385251674574207749241503571444801505084599753550983430739025050926400228758055440679102902069032768081393253 c2= 7412517103990148893766077090616798338451607394614015195336719617426935439456886251056015216979658274633552687461145491779122378237012106236527924733047395907133190110919550491029113699835260675922948775568027483123730185809123757000207476650934095553899548181163223066438602627597179560789761507989925938512977319770704123979102211869834390476278761480516444396187746843654541476645830961891622999425268855097938496239480682176640906218645450399785130931214581370821403077312842724336393674718200919934701268397883415347122906912693921254353511118129903752832950063164459159991128903683711317348665571285175839274346 e1= 4217054819 e2= 2800068527 ''' n= 13650503560233612352420237787159267432351878281073422449253560365809461612884248041710373755322100953953257608601227381211434513766352420535096028618735289379355710140356003114010103377509526452574385251495847301426845768427018504464757671958803807138699056193259160806476941875860254288376872925837127208612702688503022494109785623082365323949385021488106289708499091818714253710552213982060745736652306892896670424179736886691685639988637188591805479432332714690818805432648223229601082431517091667297328748597580733946557364100555781113940729296951594110258088501146224322799560159763097710814171619948719257894889 c1= 3366500968116867439746769272799247895217647639427183907930755074259056811685671593722389247697636905214269760325119955242254171223875159785479900114989812511815466122321484289407596620307636198001794029251197349257235827433633936216505458557830334779187112907940003978773672225479445837897135907447625387990203145231671233038707457396631770623123809080945314083730185110252441203674945146889165953135351824739866177205127986576305492490242804571570833778440870959816207461376598067538653432472043116027057204385251674574207749241503571444801505084599753550983430739025050926400228758055440679102902069032768081393253 c2= 7412517103990148893766077090616798338451607394614015195336719617426935439456886251056015216979658274633552687461145491779122378237012106236527924733047395907133190110919550491029113699835260675922948775568027483123730185809123757000207476650934095553899548181163223066438602627597179560789761507989925938512977319770704123979102211869834390476278761480516444396187746843654541476645830961891622999425268855097938496239480682176640906218645450399785130931214581370821403077312842724336393674718200919934701268397883415347122906912693921254353511118129903752832950063164459159991128903683711317348665571285175839274346 e1= 4217054819 e2= 2800068527
SQCTF{06774dcf-b9d1-3c2d-8917-7d2d86b6721c}
Crypto-base?
base64 解密即可
kR53l4pXoztyd3wSe3kJc3dBpyQQpj8Qbm8Odm8Jcz4OpC5zcClzcCgPvg== SQCTF{b7b48685-03ef-4e24-b25b-212fac2ec2d3}
Crypto- 春风得意马蹄疾
一眼社会主义核心价值观
解了一次还是社会主义核心价值观
套娃,再解即可
解 4 次社会主义核心价值观即可
SQCTF{E2jacnicamcm_cnanamw_kwkma}
Crypto- 别阴阳我了行吗?
阴阳怪气编码
SQCTF{xm!tql!xm!}
Crypto-简单rsa
常规 rsa,n能分解
SQCTF{be7e48547356cdf16649fd29e0ff9e1f}
Crypto-ezCRT
中国剩余定理(CRT)
BUUCTF RSA4——中国剩余定理-CSDN博客
from Crypto.Util.number import long_to_bytes import gmpy2 n1 = 64461804435635694137780580883118542458520881333933248063286193178334411181758377012632600557019239684067421606269023383862049857550780830156513420820443580638506617741673175086647389161551833417527588094693084581758440289107240400738205844622196685129086909714662542181360063597475940496590936680150076590681 n2 = 82768789263909988537493084725526319850211158112420157512492827240222158241002610490646583583091495111448413291338835784006756008201212610248425150436824240621547620572212344588627328430747049461146136035734611452915034170904765831638240799554640849909134152967494793539689224548564534973311777387005920878063 n3 = 62107516550209183407698382807475681623862830395922060833332922340752315402552281961072427749999457737344017533524380473311833617485959469046445929625955655230750858204360677947120339189429659414555499604814322940573452873813507553588603977672509236539848025701635308206374413195614345288662257135378383463093 c1 = 36267594227441244281312954686325715871875404435399039074741857061024358177876627893305437762333495044347666207430322392503053852558456027453124214782206724238951893678824112331246153437506819845173663625582632466682383580089960799423682343826068770924526488621412822617259665379521455218674231901913722061165 c2 = 58105410211168858609707092876511568173640581816063761351545759586783802705542032125833354590550711377984529089994947048147499585647292048511175211483648376727998630887222885452118374649632155848228993361372903492029928954631998537219237912475667973649377775950834299314740179575844464625807524391212456813023 c3 = 23948847023225161143620077929515892579240630411168735502944208192562325057681298085309091829312434095887230099608144726600918783450914411367305316475869605715020490101138282409809732960150785462082666279677485259918003470544763830384394786746843510460147027017747048708688901880287245378978587825576371865614 M1 = n2 * n3 * gmpy2.invert(n2 * n3, n1) M2 = n1 * n3 * gmpy2.invert(n1 * n3, n2) M3 = n1 * n2 * gmpy2.invert(n1 * n2, n3) num = c1 * M1 + c2 * M2 + c3 * M3 me = num % (n1 * n2 * n3) print(me) m = gmpy2.iroot(me, 3)[0] print(long_to_bytes(m)) """ E:\99_YHHxiazai\..YHHxiazai\YHHpython\最新下载python\新建文件夹\python3.exe C:\Users\yanghonghao\PycharmProjects\CTF古典密码脚本\T1\1.py 15461054784782106387037642327919144703694829687019803933433393658033421094953331410077154147618029717066185295198424076938998187283540513341072534797558155609692336846604277847274737976506347248439493461036745185794534337638087169832903496838543001469783934692310900031033317442110988026559942268193578197809489133348396230132279993696427125816666492146000399095408953624183705396222781005468562542489038252599183408068481602174263349605057813487261371167824656081518673065783781083825688968348940927071843229500490615082324808837774325339952252676936484234045064863304633267309903251940078916469184 b'SQCTF{CRT_Unl0cks_RSA_Eff1c13ncy}\xf9\xe5E\xbd\xb4\x9d\xe4\xcc\xce\x1cvV4\xd1\xf5"\xa3y\xce\xc3F\xce\x10\x89\xa6\x9a\xd9\x05\xfa\xceDE\xb8\xdad\xdb\x1f\x07\xc6{8Ep\xfaVd\xe6a\xf6\\' 进程已结束,退出代码为 0 """
Crypto- 小白兔白又白
<Rec"7_Y{$sH!*Xi7!Sg]y<ogP=4EPll52]d}71XhM|8U,xb_OBeHyU6G${u>x,S=!`HV,mY]MQGvOwiXX#cd7{:c!V?fvBrd,81G?qoAP~:YEtbFPuH)i!@gSvYba:aEd)dv#6@JR/g2xwi>!g2?y=p36|TBw(l:z/I]>0oBMrR<,%kuMS;yl##]8Bb!*bdVdEdf7gCtOD]&Zycc:2cJk`dQP845Y$el5"d/5eMyM:Z*w0b?z1HX5q6RShVv++Z2%Vfl7S0+K
[解码4次] Base91 -> Base64 -> Base62 -> Base16
混合解码结果:U2FsdGVkX1+cEAtCb8l5oIiX+J9CwG3SpvdB38nPFkjnJ1HmRvbYQubVZDL3
U2FsdGVkX1+cEAtCb8l5oIiX+J9CwG3SpvdB38nPFkjnJ1HmRvbYQubVZDL3
rabbit 密码特征,但是还是解密不了
根据 hint, 不懂为什么秘钥是 233,但是队友知道是 233
SQCTF{LOOK_my_eyes_baby_why?}
Crypto- 失落矿洞中的密码
y ^ 2 = x ^ 3 + 1234577 * x + 3213242 (mod 7654319) G = (5234568, 2287747) Public_Key = secretKey * G = (2366653, 1424308) crypted_data = [(5081741, 6744615), (610619, 6218)] m(x, y) ===> crypted_data[c1, c2] x + y = ???
2013 SECCON CTF quals Cryptanalysis 原题
ECC - CTF Wiki
SQCTF{5720914}
出题人有点懒,哈哈
Crypto- 丢三落四的小I
dp 泄露
SQCTF{7b909221-c8ff-f391-0c86-d3a9ca8491d1}
Crypto- ez_SCA
Side-Channel Attack 密码
没有任何加密
ai 直接打
import numpy as np # 加载模板轨迹文件 template_trace_0 = np.load('template_trace_0.npy') template_trace_1 = np.load('template_trace_1.npy') # 加载能量轨迹文件 traces = np.load('energy_traces_with_flag.npy') # 辅助函数:将二进制字符串转换为文本 def bits_to_text(bits):chars = [bits[i:i + 8] for i in range(0, len(bits), 8)]text = ''.join([chr(int(char, 2)) for char in chars])return text # 计算两条轨迹之间的欧几里得距离 def euclidean_distance(trace1, trace2):return np.sqrt(np.sum((trace1 - trace2) ** 2)) # 恢复二进制数据 binary_data = '' for trace in traces:# 计算当前轨迹与两个模板轨迹的距离dist_to_0 = euclidean_distance(trace, template_trace_0)dist_to_1 = euclidean_distance(trace, template_trace_1) # 根据距离判断当前比特是 0 还是 1if dist_to_0 < dist_to_1:binary_data += '0'else:binary_data += '1' # 将二进制数据转换为文本 flag = bits_to_text(binary_data) print("Recovered flag:", flag)
Recovered flag: SQCTF{easy_funny_and_not_hard_sca_hhh_just_kingdding}
Crypto- 玩的挺变态啊清茶哥
猪圈密码
对应即可
SQCTF{jijibaotonghualizuoyingxiong}
Crypto- 密室逃脱的终极挑战
没有什么加密,ida打开直接有
SQCTF{F4BBAC33-8D80-A886-5238-EA35B38B353A}
总结:
对新生和ctf入门选手非常友好,给SQCTF赞一个
(对老登来说就没有意义了,没什么提升,_)