You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:45:05