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
..-. .-.. .- --. . --... .---- -.-. .- ..... -.-. -.. -....- --... -.. -... ---- . -....- ....- -... .- ...-- -....- ----. ...-- ---.. ...-- -....- .---- .- ..-. ---.. -.... --... ---.. ---.. .---- ..-. ----- --...
#!/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
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有