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来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
随机推荐
- wpf treeview 绑定图标方式
<TreeView Grid.Row="0" Grid.Column="0" x:Name="foldersItem" Selecte ...
- QML调用C++程序
QML调用C++程序 1. 添加C++,MouseMemory文件(.h,.cpp) 2. 在main.cpp文件添加, qmlRegisterType<MouseMemory>(&quo ...
- vue-quill-editor 图片上传处理
<template> <div class="quill-editor"> <!-- 图片上传组件辅助--> <el-upload cla ...
- 二进制k8s 集群新增加node 节点
环境 名称 ip地址 cpu 内存 lgy-k8s-master0021 10.65.0.21 4c 8G lgy-k8s-node0012 10.65.0.12 4c 8G node节点初始化(以新 ...
- 打开part文件夹
1 #include <uf.h> 2 #include <uf_ui.h> 3 #include <uf_part.h> 4 #include <atlst ...
- Python 默认环境
查看pip默认安装目录 python -m site 查看已安装 pip list installed 查看安装位置 pip show PyMySQL
- Redis集群(主从复制)
主从复制主从复制原理 Redis集群中有很多Redis服务器,这些Reids服务器分为主服务器和从服务器. 从服务器会向主服务器发送命令:SYNC命令. 主服务器接收到SYNC命令后,开始执行GBSA ...
- Java字符串的一些函数方法
一.substring()方法 String str="123456"; String s1=str.substring(2); //s1="3456" Str ...
- c++ thread, 模板类,锁的调用实例
#include<thread> #include<condition_variable> #include<mutex> #include<queue> ...
- 使用IScroll组件出现滑动卡顿问题解决方法
var is = new IScroll('#wrapper2', { scrollX: true, scrollY: false, click: true, keyBindings: true, / ...