前言:
Morse电码(Morsecode)是大家耳熟能详的编码方式,很多人都误认为它是一种加密方式,但其实它是一种编码,因为它并不存在密钥。在只能使用电报长短音传递信息的条件下,使用摩斯电码是为了方便信息传输。
Morse:
题目给出:11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110
根据题目提示,该方式为摩斯电报,所以我们可以先将1和0转换成 . - ,我们可以通过编写代码将01替换,下面给出python代码
思路:
1.读取文本
2.做0和1换成 . - 的处理
3.利用正则匹配,将以空格为划分的摩斯电报提取出来
4.然后匹配Morse密码字典
5.由于我用的字典是大写的,提交flag是小写的,所以我将其转换成小写
6.字符串拼接,拼出flag
1 import re 2 3 with open(r'F:\桌面\tmp\d622fe4aa5c645e8912acdfec1515803.txt','r') as f: 4 data=f.read() 5 print(data) 6 data1 = data.replace('1','.') 7 data1 = data1.replace('0','-') 8 9 data2 = data.replace('1','-') 10 data2 = data2.replace('0','.') 11 print(data1) 12 print(data2) 13 14 code_dict = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 15 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 16 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 17 'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', 18 '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', '.': '.-.-.-', ':': '---...', 19 ',': '--..--', ';': '-.-.-.', '?': '..--..', '=': '-...-', "'": '.----.', '/': '-..-.', '!': '-.-.--', 20 '——': '-....-', '-': '..--.-', '"': '.-..-.', '(': '-.--.', ')': '-.--.-'} 21 def Morsedecode(data): 22 23 m = '' 24 pattern = re.compile('[.-]{1,4}') 25 result = pattern.findall(data) 26 27 for i in result: 28 for j in code_dict: 29 if code_dict[j] == i: 30 m += j 31 return m 32 33 str = Morsedecode(data2).lower() 34 print('cyberpeace{'+str+'}')
下面给出最后代码运行的结果:
通过运行结果可以看出,会解成两种形式morse电报,然后选取一个解出来有语义的
>> 11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110 >> .. ... -.- --- - .-.- ... .-- - -- --- --- ... -- .- . - -.- - --- . -- .- ..- >> -- --- .-. ... . -.-. --- -.. . .. ... ... --- .. -. - . .-. . ... - .. -. --. >> cyberpeace{morsecodeissointeresting}