Bugku-CTF加密篇之 托马斯.杰斐逊
托马斯.杰斐逊
1: <ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: <KPBELNACZDTRXMJQOYHGVSFUWI <
3: <BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: <RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: <IHFRLABEUOTSGJVDKCPMNZQWXY <
6: <AMKGHIWPNYCJBFZDRUSLOQXVET <
7: <GWTHSPYBXIZULVKMRAFDCEONJQ <
8: <NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: <QWATDSRFHENYVUBMCOIKZGJXPL <
10: <WABMCXPLTDSRJQZGOIKFHENYVU <
11: <XPLTDAOIKFZGHENYSRUBMCQWVJ <
12: <TDSWAYXPLVUBOIKZGJRFHENMCQ <
13: <BMCSRFHLTDENQWAOXPYVUIKZGJ <
14: <XPHKZGJTDSENYVUBMLAOIRFCQW <
密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12
密文:HCBTSXWCRQGLES
flag格式 flag{你解密的内容}
本题要点:转轮加密
首先看到题目是托马斯·杰弗逊........
百度搜索一下
摘一段托马斯·杰弗逊的介绍.....
托马斯·杰弗逊(Thomas Jefferson,1743—1826),美国《独立宣言》的主要作者,并成为第三任美国总统(1801—1809)。他被认为是美国历史上最具智慧的总统之一,不但是杰出的政治家,而且也是农业学、园艺学、建筑学、词源学、考古学、数学、测量学及古生物学等学科的专家,又身兼作家、律师和小提琴手,还创办了维吉尼亚大学 托马斯·杰弗逊(Thomas Jefferson,1743—1826),美国《独立宣言》的主要作者,并成为第三任美国总统(1801—1809)。他被认为是美国历史上最具智慧的总统之一,不但是杰出的政治家,而且也是农业学、园艺学、建筑学、词源学、考古学、数学、测量学及古生物学等学科的专家,又身兼作家、律师和小提琴手,还创办了维吉尼亚大学。
(重点来了!!!!)
杰弗逊甚至对密码学也深有研究。他在1795年发明了一种加密装置叫做杰弗逊圆盘(Jefferson disk ),或叫杰弗逊转轮加密器(Jefferson wheel cipher )。
这个装置有36片同样大小的木制转轮,套在一根铁杆上。每片转轮的圆周边缘上刻有乱序的26个英文字母 。其使用方法是:进行秘密通信的双方必须各自拥有完全一样转轮加密器。当一方要把一段文字(不超过 36字)秘密通知身处异地的对方时,只需转动加密器上的各片转轮,使这段文字正好出现在同一行上,这时转轮上排列的其他25 行都是无意义的乱码;再把其中任意一行的乱码抄下来交给信使。信使并不知道这段乱码文字的意义,只负责把它送交对方。对方收到乱码信后,只需拿出自己保存的同样的装置,转动上面各片转轮,让其中一行的排列和这段乱码同处在一行上,然后再查看其他25 行上的内容,其中必然有一行显示出加密者要传达的信息,而其他行显示的都是乱码。
首先我们需要根据密钥将14行字符串调整顺序
第一行是原来的第二行,第二行是原来的第五行,以此类推.......
密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12
1: <ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: <KPBELNACZDTRXMJQOYHGVSFUWI < 3: <BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: <RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: <IHFRLABEUOTSGJVDKCPMNZQWXY < 6: <AMKGHIWPNYCJBFZDRUSLOQXVET < 7: <GWTHSPYBXIZULVKMRAFDCEONJQ < 8: <NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: <QWATDSRFHENYVUBMCOIKZGJXPL < 10: <WABMCXPLTDSRJQZGOIKFHENYVU < 11: <XPLTDAOIKFZGHENYSRUBMCQWVJ < 12: <TDSWAYXPLVUBOIKZGJRFHENMCQ < 13: <BMCSRFHLTDENQWAOXPYVUIKZGJ < 14: <XPHKZGJTDSENYVUBMLAOIRFCQW <
调整后为:
KPBELNACZDTRXMJQOYHGVSFUWI
IHFRLABEUOTSGJVDKCPMNZQWXY
ZWAXJGDLUBVIQHKYPNTCRMOSFE
BDMAIZVRNSJUWFHTEQGYXPLOCK
AMKGHIWPNYCJBFZDRUSLOQXVET
RPLNDVHGFCUKTEBSXQYIZMJWAO
QWATDSRFHENYVUBMCOIKZGJXPL
GWTHSPYBXIZULVKMRAFDCEONJQ
NOZUTWDCVRJLXKISEFAPMYGHBQ
XPHKZGJTDSENYVUBMLAOIRFCQW
WABMCXPLTDSRJQZGOIKFHENYVU
BMCSRFHLTDENQWAOXPYVUIKZGJ
XPLTDAOIKFZGHENYSRUBMCQWVJ
TDSWAYXPLVUBOIKZGJRFHENMCQ
接着,我们需要对密文调整每行字符串
密文第一个字符H,第一行则变为:HGVSFUWIKPBELNACZDTRXMJQOY
密文第二个字符C,第二行则变为:CPMNZQWXYIHFRLABEUOTSGJVDK
以此类推.........
密文:HCBTSXWCRQGLES
HGVSFUWIKPBELNACZDTRXMJQOY
CPMNZQWXYIHFRLABEUOTSGJVDK
BVIQHKYPNTCRMOSFEZWAXJGDLU
TEQGYXPLOCKBDMAIZVRNSJUWFH
SLOQXVETAMKGHIWPNYCJBFZDRU
XQYIZMJWAORPLNDVHGFCUKTEBS
WATDSRFHENYVUBMCOIKZGJXPLQ
CEONJQGWTHSPYBXIZULVKMRAFD
RJLXKISEFAPMYGHBQNOZUTWDCV
QWXPHKZGJTDSENYVUBMLAOIRFC
GOIKFHENYVUWABMCXPLTDSRJQZ
LTDENQWAOXPYVUIKZGJBMCSRFH
ENYSRUBMCQWVJXPLTDAOIKFZGH
SWAYXPLVUBOIKZGJRFHENMCQTD
观察变换后的字符串,倒数第六列即为flag
flag{XSXSBUGKUADMIN}
提交发现不对,换成小写就可以啦~
flag{xsxsbugkuadmin}
方法二:
#! /usr/bin/env python3 # -*- coding: UTF-8 -*- #秘钥 key="2,5,1,3,6,4,9,7,8,14,10,13,11,12" #密文 cipher_text = "HCBTSXWCRQGLES" f = open("zhuanlun.txt") str_first_encry = [] for line in f: line = line.strip() str_first_encry.append(line) key_index = key.split(",") str_second_encry=[] for k in key_index: str_second_encry.append(str_first_encry[int(k)-1]) print(str_first_encry[int(k)-1]) for i,ch in enumerate(cipher_text): line = str_second_encry[i] split_index = line.index(ch) temp=[] temp[0:len(line)-split_index+1] = line[split_index:len(line)] temp[len(temp):] = line[0:split_index] str_second_encry[i] = "".join(temp) print("-------------------------------------") for plain in str_second_encry: print(plain)
运行结果如下:
flag{xsxsbugkuadmin}
完成~
参考资料:
http://foreversong.cn/archives/138
https://www.jianshu.com/p/3a9840c35f2c
--------------------- ┑( ̄Д  ̄)┍ --------------------------
作者:0yst3r[一只在安全领域努力奋斗的小菜鸡]
来源:博客园[ https://www.cnblogs.com/0yst3r-2046/ ] 引用时请注明来源哦~
(๑•̀ㅂ•́)و✧ヽ(✿゚▽゚)ノ(*^▽^*) φ(≧ω≦*)♪
如果本文对你有用,本人不胜欢喜。
The world is your oyster.