古典密码
题目
题干链接:http://www.shiyanbar.com/ctf/1870
密文内容如下{79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65}
请对其进行解密
提示:1.加解密方法就在谜面中
2.利用key值的固定结构
格式:CTF{ }
思路:列变换,凑CTF{}的格式。编程辅助变换观察
解题代码:
#change columns origin_string="79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65" split_origin_string=origin_string.split(' ') #7*5=35 COL_NUM=7 ROW_NUM=5 new_string_list=[] for ascii in split_origin_string: new_string_list.append(chr(int(ascii))) def print_column(): print("----Column----") ct=0 for i in new_string_list: print(i,end=' ') ct+=1 if (ct == COL_NUM): print() ct = 0 print() def exchange_column(c1,c2): print("Ready change:"+str(c1+1)+","+str(c2+1)) for row in range(ROW_NUM): time = row * COL_NUM new_string_list[c1+time],new_string_list[c2+time]=new_string_list[c2+time],new_string_list[c1+time] def ex_change(): print(new_string_list) # 输出后观察 print_column() #根据CTF{xxx}的格式开始变换 #以下注释的编号从0开始, #'{'已经在位置,构造'}' #第2列的}换到最后1列6: 2 <-> 6 exchange_column(2, 6) print_column() #构造CTF的F # 第5列F的换到第2列: 5 <-> 2 exchange_column(5, 2) print_column() # 构造CTF的T # 第5列T的换到第1列: 5 <-> 1 exchange_column(5, 1) print_column() # 构造CTF的C,有两个C,选一个换后有语义的 # 第5列T的换到第1列: 5 <-> 1 exchange_column(5, 0) print_column() #答案有语义,格式也正确,故正确 print("".join(new_string_list)) if __name__=="__main__": ex_change()
输出结果:
['O', 'C', 'U', '{', 'C', 'F', 'T', 'E', 'L', 'X', 'O', 'U', 'Y', 'D', 'E', 'C', 'T', 'N', 'G', 'A', 'H', 'O', 'H', 'R', 'N', 'F', 'I', 'E', 'N', 'M', '}', 'I', 'O', 'T', 'A'] ----Column---- ['O', 'C', 'U', '{', 'C', 'F', 'T', 'E', 'L', 'X', 'O', 'U', 'Y', 'D', 'E', 'C', 'T', 'N', 'G', 'A', 'H', 'O', 'H', 'R', 'N', 'F', 'I', 'E', 'N', 'M', '}', 'I', 'O', 'T', 'A'] ----Column---- O C U { C F T E L X O U Y D E C T N G A H O H R N F I E N M } I O T A Ready change:3,7 ----Column---- O C T { C F U E L D O U Y X E C H N G A T O H E N F I R N M A I O T } Ready change:6,3 ----Column---- O C F { C T U E L Y O U D X E C A N G H T O H I N F E R N M T I O A } Ready change:6,2 ----Column---- O T F { C C U E D Y O U L X E H A N G C T O E I N F H R N A T I O M } Ready change:6,1 ----Column---- C T F { C O U L D Y O U E X C H A N G E T H E I N F O R M A T I O N } CTF{COULDYOUEXCHANGETHEINFORMATION}