Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python实现摩斯密码解密脚本

Python实现摩斯密码解密脚本

作者头像
张旭博客
发布于 2022-12-27 06:52:23
发布于 2022-12-27 06:52:23
1.7K00
代码可运行
举报
文章被收录于专栏:zxbkzxbk
运行总次数:0
代码可运行

python实现解密摩斯密码脚本,解密程序好多都是在线的,今天想把解密程序用python写一个离线的,这样即使断网的情况下也能快速解密摩斯密码,并且此字典不仅提供了对字母的解密还加入了特殊字符的字典,以下文章供大家参考、学习,如有错误,多多指出,谢谢大家!

摩斯密码表

{'01':'A','1000':'B','1010':'C','100':'D','0':'E','0010':'F','110':'G','0000':'H','00':'I','0111':'J','101':'K','0100':'L','11':'M','10':'N','111':'O','0110':'P','1101':'Q','010':'R','000':'S','1':'T','001':'U','0001':'V','011':'W','1001':'X','1011':'Y','1100':'Z','01111':'1','00111':'2','00011':'3','00001':'4','00000':'5','10000':'6','11000':'7','11100':'8','11110':'9','11111':'0','001100':'?','10010':'/','101101':'()','100001':'-','010101':'.','110011':',','011010':'@','111000':':','101010':':','10001':'=','011110':"'",'101011':'!','001101':'_','010010':'"','10110':'(','1111011':'{','1111101':'}'}

摩斯密码一般由 .- 或者 01 这样的重复字符组成,其实只对应一种字符做密码表即可,另一种字符完全可以通过python的maketrans()方法进行替换,以上为数值型摩斯密码表,已经做成了字典 下面进行编写一个解密脚本,并用这个脚本来解下面的示例题目密文密码:

题目一:

.... . .-.. .-.. ---

题目二:

0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 0111 000 001101 00 10 1 0 010 000 1 01111 10 11110 101011 1111101

题目三:

..-. .-.. .- --. . --... .---- -.-. .- ..... -.-. -.. -....- --... -.. -... ---- . -....- ....- -... .- ...-- -....- ----. ...-- ---.. ...-- -....- .---- .- ..-. ---.. -.... --... ---.. ---.. .---- ..-. ----- --...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
txt = input().strip()   #接收数据避免两次有多余的空格,strip()方法处理空格
if '.' in txt:   #如果txt存在点.符号
#如果存在,定义一个转换列表把.替换成0-替换成1
  table = ''.maketrans('.-','01')
#用translate方法把字符串进行转换,再使用split()方法进行分割赋值给txt变量
  txt = txt.translate(table).split()  
else:   #如果不是.-的密码则进行0101的直接进行遍历解密
  txt = txt.split()
#key变量定义为密码表,格式是字典
key={'01':'A','1000':'B','1010':'C','100':'D','0':'E','0010':'F','110':'G','0000':'H','00':'I','0111':'J','101':'K','0100':'L','11':'M','10':'N','111':'O','0110':'P','1101':'Q','010':'R','000':'S','1':'T','001':'U','0001':'V','011':'W','1001':'X','1011':'Y','1100':'Z','01111':'1','00111':'2','00011':'3','00001':'4','00000':'5','10000':'6','11000':'7','11100':'8','11110':'9','11111':'0','001100':'?','10010':'/','101101':'()','100001':'-','010101':'.','110011':',','011010':'@','111000':':','101010':':','10001':'=','011110':"'",'101011':'!','001101':'_','010010':'"','10110':'(','1111011':'{','1111101':'}'} 
for i in txt:   #对txt进行遍历依次取值txt内的字符
  print(key.get(i),end='')   #key为字典,通过get方法进行找出对应遍历密文密码的值并输出

正确密码: 题目一:HELLO 题目二:FLAG{M0RSE_CODE_JS_INTERST1N9!} 题目三:FLAGE71CA5CD-7DBNoneE-4BA3-9383-1AF867881F07

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CTF-摩斯电码解密
发生了点事,大半夜睡不着,胡乱写一些东西,这是前段时间看到的一个密码学的题目,有一说一,怪有意思的
Elapse
2020/08/17
1.8K0
摩斯密码转换器_摩斯密码怎么表示中文
上传附件(支持ppt,pdf,zip,rar,tar,gzip,7z,bz2)
全栈程序员站长
2022/09/20
8410
Java MorseCoder - Java 语言实现的摩尔斯电码编码解码器
最近在看《编码-隐匿在计算机软件背后的语言》这本书,看到了一张译码表很有意思:
Fisherman渔夫
2020/02/19
9200
在线摩斯电码转换,支持中文的摩斯密码转换
在线转换:https://oktools.net/morse 摩斯电码和Unicode映射 const standard = { 'A': '01', 'B': '1000', 'C': '1010', 'D': '100', 'E': '0', 'F': '0010', 'G': '110', 'H': '0000', 'I': '00', 'J': '0111', 'K': '101', 'L': '0100
vivec
2019/08/20
11.9K0
计算机编码规则之:Base64编码
我们知道计算机中的文件可以分为两种,一种是人肉眼可读的文本类文件,一种是肉眼不可读的二进制文件。一般来说二进制文件如果用文本编辑器打开的话会显示乱码,并且二进制文件和文本文件的存储和传输方式是不一样的,那么有没有什么办法将二进制文件转换成为文本文件进行传输或者存储呢?答案是肯定的。
程序那些事
2022/04/11
8930
常见密码类型
通过几次比赛发现掌握必备的常见密码类型以及常见的文件头类型必不可少,在这里记录一下!
故里[TRUE]
2023/04/16
7380
java实现英文转摩尔斯电码传输(一)
摩尔斯电码(Morse code)也被称作摩斯密码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,是一种早期的数字化通信形式。不同于现代化的数字通讯,摩尔斯电码只使用零和一两种状态的二进制代码,它的代码包括五种:短促的点信号“・”,保持一定时间的长信号“—”,表示点和划之间的停顿、每个词之间中等的停顿,以及句子之间长的停顿。
GeekLiHua
2025/01/21
1100
java实现英文转摩尔斯电码传输(一)
ctf之旅—解密摩斯密码
下载后打开,是一个音乐三分钟的音频,插上耳机听了一分钟都没有起伏的音乐,当开始感觉厌倦的时候左耳通道突然传来一个抗战时期的电报的声音,第一反应—摩尔斯电码。然后就准备用记事本听声音按声音长短用(1,0)计下来(现实是脑子跟不上节奏,没写几个就乱了)。最后还是打开了AU提取出左耳音频,按照图形界面用0和1写出了这段隐藏的密码。
ittongluren
2019/11/20
5.5K0
ctf之旅—解密摩斯密码
C++ 格雷码位置变化序列 Gray Code
两个代码之间的 海明距离 (Hamming distance) 是对应位不等的数量。 例如:100和010的海明距离是2。 一个(二进制)格雷码是一个代码序列,其中任意相邻的两个代码之间的海明距离是1。 子集生成的序列 000,100,010,001...111 不是格雷码,因为100,010海明距离是2。 而三位代码序列 000,100,110,010,011,111,101,001是格雷码。
雪碧君
2023/02/15
5740
nginx中的哈夫曼编解码算法[上]-编码
在http2以前的http头部报文都是文本形式发送,http2为了优化网络对头部报文进行压缩编码使其内容更精简,发送更少的数据加快网络传输,采用压缩算法就是hpack。其中hpack算法在进行http header名字和值的压缩的使用使用了静态哈夫曼编码算法,因此nginx为了支持http2,实现了哈夫曼压缩的编解码来对http2进行支持。
码农心语
2024/05/08
1570
nginx中的哈夫曼编解码算法[上]-编码
神奇的德布鲁因序列
数学中存在这样一个序列,它充满魔力,在实际工程中也有一部分的应用。今天就打算分享一下这个序列,它在 Google S2 中是如何使用的以及它在图论中,其他领域中的应用。这个序列就是德布鲁因序列 De Bruijn。
一缕殇流化隐半边冰霜
2018/08/30
2.6K0
神奇的德布鲁因序列
Web安全学习笔记之DES算法实例详解
转自http://www.hankcs.com/security/des-algorithm-illustrated.html
Jetpropelledsnake21
2018/12/04
1K0
Web安全学习笔记之DES算法实例详解
ZIP压缩算法详细分析及解压实例解释(下)
来源:esingchan - 博客园 链接:www.cnblogs.com/esingchan/p/3958962.html(点击尾部阅读原文前往) 7、ZIP中对CL进行再次压缩的方法 这里仍然沿用Huffman的想法,因为CL也是一堆整数,那么当然可以再次应用Huffman编码。不过在这之前,PK对CL序列进行了一点处理。这个处理也是很精巧的。 CL序列表示一系列整数对应的码字长度,对于literal/length来说,总共有0-285这么多符号,所以这个序列长度为286,每个符号都有一个码字长度,当然
智能算法
2018/04/02
2.9K0
ZIP压缩算法详细分析及解压实例解释(下)
SCTF-2021 部分WriteUp
题目一般不会无缘无故做一些无意义操作,所以猜测composer引入的包是有助于做题的,百度找了下这两个模块作用如下:
Timeline Sec
2022/01/05
1.9K0
SCTF-2021 部分WriteUp
bugkuCTF之web题目
将a2V5cy50eHQ这个明显是Base64编码,进行解码知道是keys.txt,虽然不知道这个key.txt里面是什么,先复制出来。尝试用修改参数filename的值为index.php ,这个时候我们什么都看不到,
十二惊惶
2024/02/28
1910
BJDCTF2020
一个简单的隐写题目, 压缩包里面有个hello.zip,用winhex打开,可以知道这是一张图片,改成png,打开发现是一个二维码,扫二维码得到flag:xaflag{i_am_a_tupian}
十二惊惶
2024/02/28
1570
单周期CPU
1、理解 MIPS 常用的指令系统并掌握单周期 CPU 的工作原理与逻辑功能实现。
ttony0
2022/12/26
2.5K0
单周期CPU
C++ 数学与算法系列之认识格雷码
程序中所涉及到的任何数据,计算机底层均需转换成二进制数值后方可存储,这个过程也称为编码。反之,把底层二进制数据转换成应用数据称为解码,
一枚大果壳
2022/12/20
1.1K0
C++ 数学与算法系列之认识格雷码
CTF必会-古典密码与常见编码大全(全网最全)
本文属于OneTS安全团队成员flatcc的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
OneTS安全团队
2025/02/07
7520
CTF必会-古典密码与常见编码大全(全网最全)
代码数字
---- layout: default title: 代码数字 category: [技术, 编码] comments: true --- 文章介绍 有时候长时间没有使用一些代码,然后就忘记了.这里整理一下之后,方便后面随时查阅,如果有需要添加的,可以随时评论下. ASCII介绍 ASCII产生 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@
@坤的
2018/06/04
1.3K0
相关推荐
CTF-摩斯电码解密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验