文章目录
- 前言
- 一、转轮机加密
- 二、使用步骤
- 1.下载附件
- 2.脚本解密
- 总结
前言
题目描述:你俩继续往前走,来到了前面的下一个关卡,这个铺面墙上写了好多奇奇怪怪的 英文字母,排列的的整整齐齐,店面前面还有一个大大的类似于土耳其旋转烤肉的架子,上面一圈圈的 也刻着很多英文字母,你是一个小历史迷,对于二战时候的历史刚好特别熟悉,一拍大腿:“嗨呀!我知道 是什么东西了!”。提示:托马斯·杰斐逊。 flag,是字符串,小写。
提示:以下是本篇文章正文内容,下面案例可供参考
一、转轮机加密
题目链接:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=0&id=5109&page=1
二、使用步骤
1.下载附件
代码语言:javascript复制1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP
2.脚本解密
代码语言:javascript复制import re
table=[2,3,7,5,13,12,9,1,8,10,4,11,6]
Ciphertext='NFQKSEVOQOFNP'
with open(r'F:桌面tmp6.txt','r') as f:
data=f.read()
#转轮机根据table重新排列
def wheel_decode(data,table):
resultList=[]
pattern = re.compile('[A-Z]{26}')
result = pattern.findall(data)
for i in table:
resultList.append(result[i-1])
return resultList
resultList = wheel_decode(data,table)
#根据密文重新排列
def rearrange(List,Ciphertext):
resultList=[]
for i in range(0,13):
resultList.append(List[i][List[i].find(Ciphertext[i]):] List[i][:List[i].find(Ciphertext[i])])
return resultList
resultList= rearrange(resultList,Ciphertext)
选取每一列,列出结果
def rearrange2(List):
resultList=[]
s=''
for i in range(0,26):
for j in List:
s = j[i]
resultList.append(s)
s=''
return resultList
resultList = rearrange2(resultList)
for i in resultList:
print(i)
结果:
代码语言:javascript复制NFQKSEVOQOFNP
AHGCXIUSNWCBN
CTWPCUBFOTUVY
ZETMDRMEZGKCC
DQHNEYCZUVTXJ
TGSZRTQWTREZB
RYPQFAWAWSBQF
XXYWVSAXDCSWZ
MPBXBBOJCZXED
JLXYGKIGVQQRR
QOIITJKDRKYTU
OCZHYDZLJEIPS
YKUFHFGULLZOL
HBLRNHJBXMMIO
GDVLUGXVKXJUQ
VMKAMLPIIYWYX
SAMBKVLQSIAAV
FIREINTHEHOLE
UZAULCDKFPRST
WVFOOMSYAUPKA
IRDTPXRPPDLDM
KNCSJZFNMNNJK
PSEGZPHTYADFG
BJOJQQECGJVHH
EUNVAONRHFHGI
LWJDWWYMBBGMW
发现FIREINTHEHOLE是有语义得
得到flag:fireinthehole
总结
密学技术在几个世纪中不断地发展。托马斯杰斐逊,在17世纪末时,描述发表了一个在加密学中一个重大突破,但理论当时并没有实质建立过。他的发表,称为加密轮,由移动轮上的36个字母环组成,可用于实现复杂的编码上。这个概念是如此的先进,以至于它可以在第二次世界大战末期时,作为美国军事编码的基础。
我讲讲它得原理,
1.首先我们根据密钥来进行重新排列轮子
2.密钥得数字就代表第几个轮子,如2,3,7,5…代表第一行换成原来第二行得,第二行换成原来第三行得,依次类推
3.排好后根据密文,进行行内排列,如 KPBELNACZDTRXMJQOYHGVSFUWI 进行重新排列后,找到N所在位置,然后重新拼接 ‘NACZDTRXMJQOYHGVSFUWI’ ‘KPBEL’
4.对所有行排好后按照列取