如何修改Python摩尔斯暴力破解代码 新增数字和标点解码支持
支持数字、标点的摩尔斯密码暴力解码实现
以下修改后的代码补全了数字、常用标点的摩尔斯映射规则,同时调整了原代码的最大匹配长度限制(原代码最多匹配4位摩尔斯,无法适配5位长度的数字和最长6位的标点),可直接运行使用:
# 补全字母、数字、常用标点的摩尔斯映射表 morseFile="""A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .--- K -.- L .-.. M -- N -. O --- P .--. Q --.- R .-. S ... T - U ..- V ...- W .-- X -..- Y -.-- Z --.. 0 ----- 1 .---- 2 ..--- 3 ...-- 4 ....- 5 ..... 6 -.... 7 --... 8 ---.. 9 ----. . .-.-.- , --..-- ? ..--.. ! -.-.-- / -..-. ( -.--. ) -.--.- : ---... ; -.-.-. = -...- + .-.-. - -....- _ ..--.- " .-..-. @ .--.-. """ morse = {code:letter for line in morseFile.split("\n") for letter,code in [line.split()]} def decode(coded,maxLen=10): if not maxLen: return # 最大匹配长度调整为6,适配数字、标点的摩尔斯长度 for size in range(1,min(6,len(coded))+1): code = coded[:size] if code not in morse: continue remaining = coded[size:] if not remaining: yield morse[code] for rest in decode(remaining,maxLen-1): yield morse[code] + rest # 示例:解码无空格版本摩尔斯,可调整maxLen参数过滤结果长度 for string in decode("--...--.------.-----------", maxLen=8): print(string) # 解码带空格分隔版本可放开以下注释运行,分块解码复杂度更低 # parts = "--...--.-- ----.---- -------".split(" ") # for part in parts: # print(f"\n{part}的可能解码结果:") # for res in decode(part, maxLen=5): # print(res)
使用说明:
- 调整
decode函数的maxLen参数可控制输出结果的最大长度,建议设置为3-6,减少无效结果输出,更容易筛选有意义的内容 - 带空格分隔的摩尔斯建议分块解码,可大幅降低匹配计算量,快速定位正确结果
内容的提问来源于stack exchange,提问作者Clava Brighteagle
相关产品推荐
相关产品推荐

