首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python实现摩斯密码解密脚本

Python实现摩斯密码解密脚本

作者头像
张旭博客
发布于 2022-12-27 14:52:23
发布于 2022-12-27 14:52:23
3.4K0
举报
文章被收录于专栏:zxbkzxbk

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
复制
#!/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 删除
目录
  • 摩斯密码表
    • 题目一:
    • 题目二:
    • 题目三:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档