前言:

  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}

 参考链接:

https://blog.csdn.net/dark_cy/article/details/102485043?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param

Crypto入门 (三)Morse的更多相关文章

  1. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

  2. Swift语法基础入门三(函数, 闭包)

    Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...

  3. Thinkphp入门三—框架模板、变量(47)

    原文:Thinkphp入门三-框架模板.变量(47) [在控制器调用模板] display()   调用当前操作名称的模板 display(‘名字’)  调用指定名字的模板文件 控制器调用模板四种方式 ...

  4. DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表

    原文:DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用 ...

  5. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  6. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...

  7. 3.Python爬虫入门三之Urllib和Urllib2库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  8. C#基础入门 三

    C#基础入门 三 类 类使用class关键字进行声明,前面加一个访问修饰符,public class car{} 访问修饰符:修师傅可以用来修饰类和类成员等,控制它们的可见度 修饰符关键字分别为:pu ...

  9. git入门三(远程、标签)

    git 入门三 (远程.标签)     分布式版本控制管理系统本地仓库和中心服务器仓库数据是本地的镜像仓库,中心服务器数据仓库的是为了多用户数据合并和获取同步的中心,多人协作需要管理这些远程仓库,以便 ...

  10. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

随机推荐

  1. Flutter中的路由 路由替换 返回到根路由

    一.Flutter 中返回到上一级页面 Navigator.of(context).pop(); 二.Flutter 中替换路由 比如我们从用户中心页面跳转到了 registerFirst 页面,然后 ...

  2. ValueError: Unable to determine SOCKS version from socks

    unset all_proxy && unset ALL_PROXY export all_proxy="socks5://127.0.0.1:1080" 参考: ...

  3. mac 查看本机ip

    创建 ip.sh 文件,文件内容为 ifconfig -a | grep -e "inet[^6]" |\ sed -e "s/.*inet[^6][^0-9]*\([0 ...

  4. 解决uniapp 使用自带 switch 双向绑定视图不更新的问题

    使用  this.$set( a, b, c) a:需要更新视图属性对象 b:具体的属性值(就是你要更新视图的属性值) c:传递的参数 this.$set(this.gwjSelet,this.gwj ...

  5. mysql实训

    MYSQL You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...

  6. Gin加载history模式下打包后的Vue文件,刷新找不到页面404

    import ( "io/ioutil" "github.com/gin-contrib/static" "github.com/gin-gonic/ ...

  7. vue项目中配置svg图标 cli3路径

    1 添加依赖 npm install svg-sprite-loader file-loader -D 2 在components目录下新增一个IconSvg.vue文件 <template&g ...

  8. Chrome 中设置默认搜索引擎为 google.com

    https://google.com/search?q=%s&ref=opensearch&safe=off 那么就可以使搜索结果默认在新标签页打开,同时关闭了搜索结果的安全过滤.   ...

  9. 移动web_字体图标

    字体图标 字体图标的优点 1.他是文本内容,矢量图,放大不会失真 2.因为是文本所以可以用文本的样式来设置 字体图标与精灵图比较 1.精灵图可以将多个图存放在一个文件上,所以请求只有一次,但是精灵图存 ...

  10. 浏览器输入URL发生了什么:DNS解析、TCP握手、HTTP缓存、重定向、服务器状态码、渲染引擎和JS引擎互斥、渲染过程、浏览器进程、网络进程、渲染进程

    输入地址,浏览器查找域名的 IP 地址. 浏览器向 该 IP 地址的web 服务器发送一个 HTTP 请求, 在发送请求之前浏览器和服务器建立TCP的三次握手,判断是否是HTTP缓存, 如果是强制缓存 ...