Crypto入门 (三)Morse
前言:
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}
参考链接:
Crypto入门 (三)Morse的更多相关文章
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
- Thinkphp入门三—框架模板、变量(47)
原文:Thinkphp入门三-框架模板.变量(47) [在控制器调用模板] display() 调用当前操作名称的模板 display(‘名字’) 调用指定名字的模板文件 控制器调用模板四种方式 ...
- DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表
原文:DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用 ...
- 微服务(入门三):netcore ocelot api网关结合consul服务发现
简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...
- 3.Python爬虫入门三之Urllib和Urllib2库的基本使用
1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...
- C#基础入门 三
C#基础入门 三 类 类使用class关键字进行声明,前面加一个访问修饰符,public class car{} 访问修饰符:修师傅可以用来修饰类和类成员等,控制它们的可见度 修饰符关键字分别为:pu ...
- git入门三(远程、标签)
git 入门三 (远程.标签) 分布式版本控制管理系统本地仓库和中心服务器仓库数据是本地的镜像仓库,中心服务器数据仓库的是为了多用户数据合并和获取同步的中心,多人协作需要管理这些远程仓库,以便 ...
- 转 Python爬虫入门三之Urllib库的基本使用
静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
随机推荐
- Windows11 微软提供三种路径 安装程序应用
Windows11 微软提供三种路径 安装程序应用
- 混淆css类名
使用vite:
- go 更新依赖库到最新版本
go 怎么更新依赖库到最新版本 遇到这么一个问题:我自己的一个程序依赖自己写的一个库,然后修改了库,程序这边想要更新库,却怎么也更新不上 删除mod.sum文件里相关库的信息 使用find / -na ...
- 我和Java这些年的故事(三)
J2EE让Java在服务端找到了用武之地,之前一直处于鄙视链末端的Java,也终于有了向VB/VC叫板的资本.EJB更是J2EE的代名词,是解决企业级组件复用的法宝. 有了JSP/Servlet,Ja ...
- unity002
物体轴心点变换 轴向变换 预览 暂停 逐帧播放 坐标 世界坐标 物体坐标 mesh 网格决定形状 渲染
- SPI接口
串行外设接口(Serial Peripheral Interface)是一种同步外设接口,它可以使单片机与各种外围设备以串行方式进行通信以交换信息.SPI最早是Motorola公司提出的全双工三线同步 ...
- 模块一:时间模块、random模块、hashlib模块、日志模块
模块:就是一系列功能的集合体,有以下分类:*解释器内建模块*python标准库(位于python解释器安装目录的lib文件夹下)*第三方模块(通过(pip install 模块名)语法下载到pytho ...
- 实验:STM32-ARDUINO-ESP01采用AT指令,通过MQTT连接上ONENET
1.硬件准备 要求:STM32支持Arduino. 2.程序逻辑结构 3.主流程状态机 4.测试数据抓图 5. 关键程序代码 unsigned char g_ArrTemp[1024]; int AT ...
- VSCode STM32跨平台开发环境搭建
VSCode的强大不用多说了,直接上教程: 一.到官网下载安装VSCode 二.安装完成后,打开VSCode,安装PlatformIO IDE 插件 三.安装完重启VSCode,VSCode会继续安装 ...
- Pod资源的基础管理操作(Kubernetes)
Pod是Kubernetes API中的核心资源类型,它可以定义在JSON或者YAML格式的资源清单中,由资源管理命令进行陈述式声明管理.创建时通过create或apply命令将请求提交到API Se ...