Crypto入門 (三)Morse
阿新 • • 發佈:2020-08-12
前言:
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}