【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-010(转轮机加密)

2021-12-27 08:05:42 浏览数 (1)

文章目录

  • 前言
  • 一、转轮机加密
  • 二、使用步骤
    • 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.对所有行排好后按照列取

na

0 人点赞