一个谜机模拟包。
crypto-enigma的Python项目详细描述
为Python2.7提供了一个带有状态和编码显示的谜机模拟器。
目前大多数情况下只支持那些machine models 在战争年代普遍使用的有I、M3、和M4。
功能:包api
该包提供生成计算机配置的功能 从传统的规范,检查配置的状态,模拟 通过在状态之间进行步进来操作机器,和 编码消息:
创建计算机配置(请参阅documentation中的config_enigma_from_string
):
>>> from crypto_enigma import * >>> cfg = EnigmaConfig.config_enigma_from_string(u'B-I-III-I EMO UX.MO.AY 13.04.11')
编码消息(请参见documentation中的enigma_encoding
):
>>> cfg.enigma_encoding(u'TESTINGXTESTINGUD') u'OZQKPFLPYZRPYTFVU' >>> cfg.enigma_encoding(u'OZQKPFLPYZRPYTFVU') u'TESTINGXTESTINGUD'
显示配置详细信息(有关config_string
,请参见documentation):
>>> print(cfg.config_string(letter=u'X', format='internal', mark_func=lambda c: '(' + c + ')')) X > ABCDEFGHIJKLMNOPQRSTUVW(X)YZ P YBCDEFGHIJKLONMPQRSTXVW(U)AZ UX.MO.AY 1 HCZMRVJPKSUDTQOLWEXN(Y)FAGIB O 05 I 2 KOMQEPVZNXRBDLJHFSUWYACT(G)I M 10 III 3 AXIQJZ(K)RMSUNTOLYDHVBWEGPFC E 19 I R YRUHQSLDPX(N)GOKMIEBFZCWVJAT B 3 ATZQVYWRCEGOI(L)NXDHJMKSUBPF I 2 VLWMEQYPZOA(N)CIBFDKRXSGTJUH III 1 WZBLRVXAYGIPD(T)OHNEJMKFQSUC I P YBCDEFGHIJKLONMPQRS(T)XVWUAZ UX.MO.AY T < CNAUJVQSLEMIKBZRGPHXDFY(T)WO
模拟机器操作(有关print_operation
,请参见documentation):
>>> cfg.print_operation(message=u'TESTING', show_step=True, mark_func=lambda c: '(' + c + ')') 0000 CNAUJVQSLEMIKBZRGPHXDFYTWO EMO 19 10 05 0001 T > UNXKGVERLYDIQBTWMHZ(O)AFPCJS EMP 19 10 06 0002 E > QTYJ(Z)XUPKDIMLSWHAVNBGROFCE EMQ 19 10 07 0003 S > DMXAPTRWKYINBLUESG(Q)FOZHCJV ENR 19 11 08 0004 T > IUSMHRPEAQTVDYWGJFC(K)BLOZNX ENS 19 11 09 0005 I > WMVXQRLS(P)YOGBTKIEFHNZCADJU ENT 19 11 10 0006 N > WKIQXNRSCVBOY(F)LUDGHZPJAEMT ENU 19 11 11 0007 G > RVPTWS(L)KYXHGNMQCOAFDZBEJIU ENV 19 11 12
观察机器运行500步:
>>> cfg.print_operation(steps=500, show_step=True, format='internal', overwrite=True)
功能:命令行
命令行脚本enigma.py
提供了api的几乎所有功能。
编码消息:
$ enigma.py encode "B-I-III-I EMO UX.MO.AY 13.04.11" "TESTINGXTESTINGUD" OZQKPFLPYZRPYTFVU $ enigma.py encode "B-I-III-I EMO UX.MO.AY 13.04.11" "OZQKPFLPYZRPYTFVU" TESTINGXTESTINGUD
显示配置详细信息(在命令行帮助中详细说明):
$ enigma.py show "B-I-III-I EMO UX.MO.AY 13.04.11" -l 'X' -H'()' -f internal X > ABCDEFGHIJKLMNOPQRSTUVW(X)YZ P YBCDEFGHIJKLONMPQRSTXVW(U)AZ UX.MO.AY 1 HCZMRVJPKSUDTQOLWEXN(Y)FAGIB O 05 I 2 KOMQEPVZNXRBDLJHFSUWYACT(G)I M 10 III 3 AXIQJZ(K)RMSUNTOLYDHVBWEGPFC E 19 I R YRUHQSLDPX(N)GOKMIEBFZCWVJAT B 3 ATZQVYWRCEGOI(L)NXDHJMKSUBPF I 2 VLWMEQYPZOA(N)CIBFDKRXSGTJUH III 1 WZBLRVXAYGIPD(T)OHNEJMKFQSUC I P YBCDEFGHIJKLONMPQRS(T)XVWUAZ UX.MO.AY T < CNAUJVQSLEMIKBZRGPHXDFY(T)WO
模拟机器操作(在更详细的命令行帮助中解释):
$ enigma.py run "B-I-III-I EMO UX.MO.AY 13.04.11" -m "TESTING" -t -H'()' 0000 CNAUJVQSLEMIKBZRGPHXDFYTWO EMO 19 10 05 0001 T > UNXKGVERLYDIQBTWMHZ(O)AFPCJS EMP 19 10 06 0002 E > QTYJ(Z)XUPKDIMLSWHAVNBGROFCE EMQ 19 10 07 0003 S > DMXAPTRWKYINBLUESG(Q)FOZHCJV ENR 19 11 08 0004 T > IUSMHRPEAQTVDYWGJFC(K)BLOZNX ENS 19 11 09 0005 I > WMVXQRLS(P)YOGBTKIEFHNZCADJU ENT 19 11 10 0006 N > WKIQXNRSCVBOY(F)LUDGHZPJAEMT ENU 19 11 11 0007 G > RVPTWS(L)KYXHGNMQCOAFDZBEJIU ENV 19 11 12
观察机器运行500步:
$ enigma.py run "c-β-VIII-VII-VI QMLI 'UX.MO.AY 01.13.04.11" -s 500 -t -f internal -o
限制
请注意,用于表示 组件(薄的海军旋翼)支持Unicode,而一些 机器状态显示的几个方面取决于对组合的支持 Unicode编码。这是一个known limitation那个 将在以后的版本中解决。
还要注意,在使用此软件包的任何脚本的开头,您都应该
from __future__ import unicode_literals
在使用api的任何代码之前,或者使用
确认ipython(inipython_config.py
)
c.InteractiveShellApp.exec_lines += ["from __future__ import unicode_literals"]
或者显式地支持unicode字符串(例如,在上面的例子中使用u'TESTING'
)。
开发状态
这个包还处于开发的早期阶段,我不能保证 development version会起作用的。有关计划发布和活动的更多详细信息 可以在调度的列表milestones和open issues中找到。 各种test versions可以用于安装或问题检查,但这些 可能无法按预期工作。