示例#1
0
    def test_error_states_parser(self):
        settings = Settings()
        data = EnigmaMachineData()
        data.set_machine("m3")
        i = data.get_rotor("i")
        v = data.get_rotor("v")
        viii = data.get_rotor("viii")
        i.update({"start_position": "P", "position": 1})
        v.update({"start_position": "Y", "position": 2})
        viii.update({"start_position": "Z", "position": 3})
        settings.add_entry_wheel(data.get_entry_wheel("etw"))
        settings.add_rotors([i, v, viii])
        settings.add_reflector(data.get_reflector("b"))
        enigma = Enigma(settings=settings,
                        error_checks=True,
                        correct_case=False)

        with self.assertRaises(TypeError):
            enigma.parse(123)

        with self.assertRaises(TypeError):
            enigma.parse(['a', 23])

        with self.assertRaises(SyntaxError):
            enigma.parse("abc")

        with self.assertRaises(SyntaxError):
            enigma.parse("123")
示例#2
0
def example_2():
    rotor_1 = machine_data.get_rotor("iv")
    rotor_2 = machine_data.get_rotor("v")
    rotor_3 = machine_data.get_rotor("beta")
    rotor_4 = machine_data.get_rotor("i")
    etw = machine_data.get_entry_wheel('etw')
    reflector = machine_data.get_reflector("a")

    rotor_1.update({'start_position': 'E', 'position': 1, 'ring_setting': 18})
    rotor_2.update({'start_position': 'Z', 'position': 2, 'ring_setting': 24})
    rotor_3.update({'start_position': 'G', 'position': 3, 'ring_setting': 3})
    rotor_4.update({'start_position': 'P', 'position': 4, 'ring_setting': 5})

    settings = Settings()
    settings.add_entry_wheel(etw)
    settings.add_rotors([rotor_1, rotor_2, rotor_3, rotor_4])
    settings.add_reflector(reflector)
    settings.set_switchboard_pairs(
        ['PC', 'XZ', 'FM', 'QA', 'ST', 'NB', 'HY', 'OR', 'EV', 'IU'])

    enigma = Enigma(settings=settings)

    print(
        enigma.parse(
            "BUPXWJCDPFASXBDHLBBIBSRNWCSZXQOLBNXYAXVHOGCUUIBCVMPUZYUUKHI"))
示例#3
0
 def test_m3(self):
     settings = Settings()
     data = EnigmaMachineData()
     data.set_machine("m3")
     i = data.get_rotor("i")
     v = data.get_rotor("v")
     viii = data.get_rotor("viii")
     i.update({"start_position": "P", "position": 1})
     v.update({"start_position": "Y", "position": 2})
     viii.update({"start_position": "Z", "position": 3})
     settings.add_entry_wheel(data.get_entry_wheel("etw"))
     settings.add_rotors([i, v, viii])
     settings.add_reflector(data.get_reflector("b"))
     enigma = Enigma(settings=settings)
     self.assertEqual("ZMOIR", enigma.parse("AAAAA"))
示例#4
0
 def test_sondermaschine(self):
     settings = Settings()
     data = EnigmaMachineData()
     data.set_machine("sondermaschine")
     i = data.get_rotor("i")
     ii = data.get_rotor("ii")
     iii = data.get_rotor("iii")
     i.update({"start_position": "P", "position": 1})
     ii.update({"start_position": "D", "position": 2})
     iii.update({"start_position": "U", "position": 3})
     settings.add_entry_wheel(data.get_entry_wheel("etw"))
     settings.add_rotors([i, ii, iii])
     settings.add_reflector(data.get_reflector("ukw"))
     enigma = Enigma(settings=settings)
     self.assertEqual("WEPKI", enigma.parse("AAAAA"))
示例#5
0
 def test_norenigma(self):
     settings = Settings()
     data = EnigmaMachineData()
     data.set_machine("norenigma")
     i = data.get_rotor("i")
     iii = data.get_rotor("iii")
     v = data.get_rotor("v")
     i.update({"start_position": "A", "position": 1})
     iii.update({"start_position": "A", "position": 2})
     v.update({"start_position": "A", "position": 3})
     settings.add_entry_wheel(data.get_entry_wheel("etw"))
     settings.add_rotors([i, iii, v])
     settings.add_reflector(data.get_reflector("ukw"))
     enigma = Enigma(settings=settings)
     self.assertEqual("DBMZX", enigma.parse("AAAAA"))
示例#6
0
def multiple_rotors_4():
    rotor_1 = machine_data.get_rotor("iv")
    rotor_2 = machine_data.get_rotor("v")
    rotor_3 = machine_data.get_rotor("beta")
    etw = machine_data.get_entry_wheel('etw')
    reflector = machine_data.get_reflector("b")

    rotor_1.update({'start_position': 'A', 'position': 1, 'ring_setting': 14})
    rotor_2.update({'start_position': 'A', 'position': 2, 'ring_setting': 9})
    rotor_3.update({'start_position': 'A', 'position': 3, 'ring_setting': 24})

    settings = Settings()
    settings.add_entry_wheel(etw)
    settings.add_rotors([rotor_1, rotor_2, rotor_3])
    settings.add_reflector(reflector)

    enigma = Enigma(settings=settings)

    print(enigma.parse("H"))
示例#7
0
def multiple_rotors_3():
    rotor_1 = machine_data.get_rotor("i")
    rotor_2 = machine_data.get_rotor("ii")
    rotor_3 = machine_data.get_rotor("iii")
    etw = machine_data.get_entry_wheel('etw')
    reflector = machine_data.get_reflector("b")

    rotor_1.update({'start_position': 'Q', 'position': 1})
    rotor_2.update({'start_position': 'E', 'position': 2})
    rotor_3.update({'start_position': 'V', 'position': 3})

    settings = Settings()
    settings.add_entry_wheel(etw)
    settings.add_rotors([rotor_1, rotor_2, rotor_3])
    settings.add_reflector(reflector)

    enigma = Enigma(settings=settings)

    print(enigma.parse("A"))
示例#8
0
def multiple_rotors_5():
    rotor_1 = machine_data.get_rotor("I")
    rotor_2 = machine_data.get_rotor("ii")
    rotor_3 = machine_data.get_rotor("III")
    rotor_4 = machine_data.get_rotor("iv")
    etw = machine_data.get_entry_wheel('etw')
    reflector = machine_data.get_reflector("c")

    rotor_1.update({'start_position': 'Q', 'position': 1, 'ring_setting': 7})
    rotor_2.update({'start_position': 'e', 'position': 2, 'ring_setting': 11})
    rotor_3.update({'start_position': 'V', 'position': 3, 'ring_setting': 15})
    rotor_4.update({'start_position': 'Z', 'position': 4, 'ring_setting': 19})

    settings = Settings()
    settings.add_entry_wheel(etw)
    settings.add_rotors([rotor_1, rotor_2, rotor_3, rotor_4])
    settings.add_reflector(reflector)

    enigma = Enigma(settings=settings)

    print(enigma.parse("Z"))
示例#9
0
def example_1():
    rotor_1 = machine_data.get_rotor("i")
    rotor_2 = machine_data.get_rotor("ii")
    rotor_3 = machine_data.get_rotor("iii")
    etw = machine_data.get_entry_wheel('etw')
    reflector = machine_data.get_reflector("b")

    rotor_1.update({'start_position': 'A', 'position': 1})
    rotor_2.update({'start_position': 'A', 'position': 2})
    rotor_3.update({'start_position': 'Z', 'position': 3})

    settings = Settings()
    settings.add_entry_wheel(etw)
    settings.add_rotors([rotor_1, rotor_2, rotor_3])
    settings.add_reflector(reflector)
    settings.set_switchboard_pairs(
        ['HL', 'MO', 'AJ', 'CX', 'BZ', 'SR', 'NI', 'YW', 'DG', 'PK'])

    enigma = Enigma(settings=settings)

    print(enigma.parse("HELLOWORLD"))
示例#10
0
 def test_B_II_IV_Beta_Gamma_4_24_17_7(self):
     settings = Settings()
     data = EnigmaMachineData()
     data.set_machine("example_machine")
     ii = data.get_rotor("ii")
     iv = data.get_rotor("iv")
     beta = data.get_rotor("beta")
     gamma = data.get_rotor("gamma")
     ii.update({"start_position": "V", "ring_setting": 4, "position": 1})
     iv.update({"start_position": "E", "ring_setting": 24, "position": 2})
     beta.update({"start_position": "Q", "ring_setting": 17, "position": 3})
     gamma.update({"start_position": "J", "ring_setting": 7, "position": 4})
     settings.add_entry_wheel(data.get_entry_wheel("etw"))
     settings.add_rotors([ii, iv, beta, gamma])
     settings.add_reflector(data.get_reflector("b"))
     settings.set_switchboard_pairs(["AT", "LU", "NR", "IG"])
     enigma = Enigma(settings=settings)
     self.assertEqual(
         "ACOMPUTERWOULDDESERVETOBECALLEDINTELLIGENTIFITCOULDDECEIVEAHUMANINTOBELIEVINGTHATITWASHUMANSOMETIMESITSTHEVERYPEOPLEWHONOONEIMAGINESANYTHINGOFWHODOTHETHINGSNOONECANIMAGINESOMETIMESITISTHEPEOPLENOONECANIMAGINEANYTHINGOFWHODOTHETHINGSNOONECANIMAGINETHOSEWHOCANIMAGINEANYTHINGCANCREATETHEIMPOSSIBLEALANTURING",
         enigma.parse(
             "BHCHRJCBLHJBPWXCAPXQCUAZRKBBTFEXBQWJFGVATZUJLXEMZRLOJHFWTMFUCAGFOHNNCPIOCJKAHJTWLWVHFJAQCZDXAHHMLSCRKXMJTXYFPKMBJFFLSNAOYYWCUOOPCBJGJUHFVOZOJNSNAWYMTCKBKAHQPYCUDPFZGAGIOHLKYTSXUOBDCJSGLMDCOIXJHFIUTCBVWOXKROVLBFVSYXBDJPUOIWAZEPHNUXRDVDKFFRXOXXHOVFUGZNAPNNJEOACFBSXUDDBCDWVFVIOOBISLKCDMRPDDCTZXNVWMFZDGJXUGC"
         ))
示例#11
0
 def test_IV_V_Beta_I_A_EZGP_18_24_03_05(self):
     settings = Settings()
     data = EnigmaMachineData()
     data.set_machine("example_machine")
     iv = data.get_rotor("iv")
     v = data.get_rotor("v")
     beta = data.get_rotor("beta")
     i = data.get_rotor("i")
     iv.update({"start_position": "E", "ring_setting": 18, "position": 1})
     v.update({"start_position": "Z", "ring_setting": 24, "position": 2})
     beta.update({"start_position": "G", "ring_setting": 3, "position": 3})
     i.update({"start_position": "P", "ring_setting": 5, "position": 4})
     settings.add_entry_wheel(data.get_entry_wheel("etw"))
     settings.add_rotors([iv, v, beta, i])
     settings.add_reflector(data.get_reflector("a"))
     settings.set_switchboard_pairs(
         ["PC", "XZ", "FM", "QA", "ST", "NB", "HY", "OR", "EV", "IU"])
     enigma = Enigma(settings=settings)
     self.assertEqual(
         "CONGRATULATIONSONPRODUCINGYOURWORKINGENIGMAMACHINESIMULATOR",
         enigma.parse(
             "BUPXWJCDPFASXBDHLBBIBSRNWCSZXQOLBNXYAXVHOGCUUIBCVMPUZYUUKHI"))
示例#12
0
from utils import EnigmaMachineData, Enigma, Settings

machine_data = EnigmaMachineData()
settings = Settings()

machine_data.set_machine("m4")
etw = machine_data.get_entry_wheel('etw')
rotor_1 = machine_data.get_rotor("gamma")
rotor_2 = machine_data.get_rotor("iv")
rotor_3 = machine_data.get_rotor("vii")
rotor_4 = machine_data.get_rotor("i")
ref = machine_data.get_reflector("b-thin")
rotor_1.update({'start_position': 'A', 'position': 1})
rotor_2.update({'start_position': 'A', 'position': 2})
rotor_3.update({'start_position': 'A', 'position': 3})
rotor_4.update({'start_position': 'A', 'position': 4})

settings.add_entry_wheel(etw)
settings.add_rotors([rotor_1, rotor_2, rotor_3, rotor_4])
settings.add_reflector(ref)
settings.set_switchboard_pairs(['AB', 'XW'])

enigma = Enigma(settings=settings)

print(enigma.parse("HELLOWORLD"))