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")
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"))
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"))
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"))
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"))
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"))
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"))
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"))
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"))
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" ))
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"))
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"))