当前位置: 首页 > news >正文

【Crypto】第四届SQCTF-Crypto全解

Crypto- 你的天赋是什么

摩斯密码解密

... --.- -.-. - ..-. ----.-- -.-- --- ..- -....- .... .- ...- . -....- - .- .-.. . -. - -----.- 
​
​
SQCTF{YOU-HAVE-TALENT}

img

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}

img

Crypto- 春风得意马蹄疾

img

一眼社会主义核心价值观

解了一次还是社会主义核心价值观

套娃,再解即可

解 4 次社会主义核心价值观即可

img

SQCTF{E2jacnicamcm_cnanamw_kwkma}

Crypto- 别阴阳我了行吗?

阴阳怪气编码

img

SQCTF{xm!tql!xm!}

Crypto-简单rsa

常规 rsa,n能分解

img

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 密码特征,但是还是解密不了

img

根据 hint, 不懂为什么秘钥是 233,但是队友知道是 233

img

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 泄露

img

SQCTF{7b909221-c8ff-f391-0c86-d3a9ca8491d1}

Crypto- ez_SCA

img

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- 玩的挺变态啊清茶哥

猪圈密码

对应即可

img

SQCTF{jijibaotonghualizuoyingxiong}

Crypto- 密室逃脱的终极挑战

没有什么加密,ida打开直接有

img

SQCTF{F4BBAC33-8D80-A886-5238-EA35B38B353A}

总结:

对新生和ctf入门选手非常友好,给SQCTF赞一个

(对老登来说就没有意义了,没什么提升,_)

相关文章:

  • tinyrenderer笔记(中)
  • SpringBoot中JWT详解,底层原理及生成验证实例。
  • Kafka与RocketMQ在事务消息实现上的区别是什么?
  • Transformer-LSTM混合模型在时序回归中的完整流程研究
  • 2025年01月09日德美医疗前端面试
  • Transformer 与 LSTM 在时序回归中的实践与优化
  • Mathematica中的ResourceFunction
  • 状态模式 VS 策略模式
  • Kotlin密封类优化Android状态管理
  • 从设计到应用:大尺寸PCB打样的关键领域解析
  • 使用 Spring Boot 构建 REST API
  • 【大语言模型ChatGPT+Python】近红外光谱数据分析及机器学习与深度学习建模(近红外光谱数据分析、定性/定量分析模型代码自动生成等)
  • setup 函数在 Vue 3 中的作用是什么?什么时候会执行
  • 打成jar 包以后,运行时找不到文件路径?
  • WebRTC 服务器之SRS服务器性能优化配置
  • 在 GitLab 中部署Python定时任务
  • 私有仓库 Harbor、GitLab
  • 云计算训练营笔记day02(Linux、计算机网络、进制)
  • UE5 材质淡入淡出
  • 【工具使用-数据可视化工具】Apache Superset
  • 湖北十堰市委副秘书长管聪履新丹江口市代市长
  • “五一”假期余额不足两天,多地景点已约满、限流
  • 观察|印度购买“阵风”舰载机,为掌控印度洋加速升级海航装备
  • 经济日报:仅退款应平衡各方权益
  • 月薪3万文科友好,“AI训练师”真有那么赚?
  • 魔都眼|咖啡节上小孩儿忍不住尝了咖啡香,母亲乐了