Crypto入门 (三)Morse
2024-10-21 23:28:55
前言:
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}
参考链接:
最新文章
- NOI上看到的几个小学奥数
- Emmet (Zen Coding) 官方文档中HTML语法的总结
- android录像增加时间记录(源码里修改)
- Unity2D多分辨率屏幕适配方案(转载)
- QT基本使用
- [HDOJ5773]The All-purpose Zero(贪心,DP)
- (图 BFS)走迷宫
- JSF 2 textbox example
- android 如何解决模块之间的通讯的耦合问题
- mysql基础操作整理(一)
- 巧用Session Manager还原Firefox丢失会话
- python模块基础之OS模块
- Android 状态栏通知Notification、NotificationManager简介
- Jetbrains 系列神器
- 【算法系列学习】巧妙建图,暴搜去重 Counting Cliques
- ADO.NET中的五大对象
- node.js核心模块
- 过滤器实现 (cookie认证)
- pdf流文件的展示、下载、打印;html转为pdf
- Git学习记录 力做全网最强入门教程