X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=bombe.ipynb;h=59442e4f4da5bf6481be0f923171939245d2c938;hb=ea80d31dac330167760e2dd7850d3bf6ed9036fc;hp=ab1b457c441d51cb55d4e6a5d2385a37379fc6c2;hpb=628c83045960e5d94ea55fe90437b465a860d4c7;p=cipher-tools.git diff --git a/bombe.ipynb b/bombe.ipynb index ab1b457..59442e4 100644 --- a/bombe.ipynb +++ b/bombe.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 797, + "execution_count": 1, "metadata": { "collapsed": true }, @@ -17,100 +17,7 @@ }, { "cell_type": "code", - "execution_count": 798, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# wheel_i_spec = 'ekmflgdqvzntowyhxuspaibrcj'\n", - "# wheel_ii_spec = 'ajdksiruxblhwtmcqgznpyfvoe'\n", - "# wheel_iii_spec = 'bdfhjlcprtxvznyeiwgakmusqo'\n", - "# wheel_iv_spec = 'esovpzjayquirhxlnftgkdcmwb'\n", - "# wheel_v_spec = 'vzbrgityupsdnhlxawmjqofeck'\n", - "# wheel_vi_spec = 'jpgvoumfyqbenhzrdkasxlictw'\n", - "# wheel_vii_spec = 'nzjhgrcxmyswboufaivlpekqdt'\n", - "# wheel_viii_spec = 'fkqhtlxocbjspdzramewniuygv'\n", - "# beta_wheel_spec = 'leyjvcnixwpbqmdrtakzgfuhos'\n", - "# gamma_wheel_spec = 'fsokanuerhmbtiycwlqpzxvgjd'\n", - "\n", - "# wheel_i_pegs = ['q']\n", - "# wheel_ii_pegs = ['e']\n", - "# wheel_iii_pegs = ['v']\n", - "# wheel_iv_pegs = ['j']\n", - "# wheel_v_pegs = ['z']\n", - "# wheel_vi_pegs = ['z', 'm']\n", - "# wheel_vii_pegs = ['z', 'm']\n", - "# wheel_viii_pegs = ['z', 'm']\n", - "\n", - "# reflector_b_spec = 'ay br cu dh eq fs gl ip jx kn mo tz vw'\n", - "# reflector_c_spec = 'af bv cp dj ei go hy kr lz mx nw tq su'" - ] - }, - { - "cell_type": "code", - "execution_count": 799, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "class Bank(object):\n", - " def __init__(self):\n", - " self.signals = dict(zip(string.ascii_lowercase, [False]*len(string.ascii_lowercase)))" - ] - }, - { - "cell_type": "code", - "execution_count": 800, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': False,\n", - " 'b': False,\n", - " 'c': False,\n", - " 'd': False,\n", - " 'e': False,\n", - " 'f': False,\n", - " 'g': False,\n", - " 'h': False,\n", - " 'i': False,\n", - " 'j': False,\n", - " 'k': False,\n", - " 'l': False,\n", - " 'm': False,\n", - " 'n': False,\n", - " 'o': False,\n", - " 'p': False,\n", - " 'q': False,\n", - " 'r': False,\n", - " 's': False,\n", - " 't': False,\n", - " 'u': False,\n", - " 'v': False,\n", - " 'w': False,\n", - " 'x': False,\n", - " 'y': False,\n", - " 'z': False}" - ] - }, - "execution_count": 800, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "c1 = Bank()\n", - "c1.signals" - ] - }, - { - "cell_type": "code", - "execution_count": 801, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -123,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 802, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -168,15 +75,17 @@ }, { "cell_type": "code", - "execution_count": 803, + "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "class Bombe(object):\n", + " \n", " def __init__(self, wheel1_spec, wheel2_spec, wheel3_spec, reflector_spec,\n", - " menu=None, start_signal=None, use_diagonal_board=True, verify_plugboard=True):\n", + " menu=None, start_signal=None, use_diagonal_board=True, \n", + " verify_plugboard=True):\n", " self.connections = []\n", " self.wheel1_spec = wheel1_spec\n", " self.wheel2_spec = wheel2_spec\n", @@ -198,9 +107,10 @@ " return object.__getattribute__(self, name)\n", " \n", " def __call__(self, start_positions):\n", - " return start_positions, self.test(start_positions=start_positions, \n", - " use_diagonal_board=self.use_diagonal_board,\n", - " verify_plugboard=self.verify_plugboard)\n", + " return start_positions, self.test(initial_signal=self.test_start,\n", + " start_positions=start_positions, \n", + " use_diagonal_board=self.use_diagonal_board,\n", + " verify_plugboard=self.verify_plugboard)\n", " \n", " def add_connection(self, bank_before, bank_after, scrambler):\n", " self.connections += [Connection([bank_before, bank_after], scrambler)]\n", @@ -284,12 +194,12 @@ " possibles = possibles.union({frozenset((b, active[0]))})\n", " if len(inactive) == 1:\n", " possibles = possibles.union({frozenset((b, inactive[0]))})\n", - " return possibles" + " return possibles\n" ] }, { "cell_type": "code", - "execution_count": 804, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -301,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 805, + "execution_count": 6, "metadata": { "collapsed": true }, @@ -317,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 806, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -328,7 +238,7 @@ "'opgndxcrwomnlnecjz'" ] }, - "execution_count": 806, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -342,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": 807, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -353,7 +263,7 @@ "'aas'" ] }, - "execution_count": 807, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -364,7 +274,7 @@ }, { "cell_type": "code", - "execution_count": 808, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -392,7 +302,7 @@ " MenuIem(before='e', after='z', number=18)]" ] }, - "execution_count": 808, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -404,7 +314,7 @@ }, { "cell_type": "code", - "execution_count": 809, + "execution_count": 10, "metadata": { "collapsed": true }, @@ -417,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 810, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -445,7 +355,7 @@ " MenuIem(before='e', after='z', number=18)]" ] }, - "execution_count": 810, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -456,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 811, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -467,7 +377,7 @@ "'s'" ] }, - "execution_count": 811, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -478,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 812, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -489,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 813, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -500,7 +410,7 @@ "18" ] }, - "execution_count": 813, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -511,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 814, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -548,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 815, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -559,7 +469,7 @@ "False" ] }, - "execution_count": 815, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -570,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 816, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -606,7 +516,7 @@ " 'z': True}" ] }, - "execution_count": 816, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -617,7 +527,7 @@ }, { "cell_type": "code", - "execution_count": 817, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -668,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 818, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -679,7 +589,7 @@ "('a', 'a', 'a')" ] }, - "execution_count": 818, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -690,7 +600,7 @@ }, { "cell_type": "code", - "execution_count": 819, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -728,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 820, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -740,7 +650,7 @@ }, { "cell_type": "code", - "execution_count": 821, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -794,7 +704,7 @@ }, { "cell_type": "code", - "execution_count": 822, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -848,7 +758,7 @@ }, { "cell_type": "code", - "execution_count": 823, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -859,7 +769,7 @@ "1" ] }, - "execution_count": 823, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +780,7 @@ }, { "cell_type": "code", - "execution_count": 824, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -883,7 +793,7 @@ }, { "cell_type": "code", - "execution_count": 825, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -896,7 +806,7 @@ }, { "cell_type": "code", - "execution_count": 826, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -907,7 +817,7 @@ "('a', 'a', 'b')" ] }, - "execution_count": 826, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -918,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": 827, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -929,7 +839,7 @@ "False" ] }, - "execution_count": 827, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -940,7 +850,7 @@ }, { "cell_type": "code", - "execution_count": 828, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -951,7 +861,7 @@ "('p', 'p', 'p')" ] }, - "execution_count": 828, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -962,7 +872,7 @@ }, { "cell_type": "code", - "execution_count": 829, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1013,7 +923,7 @@ }, { "cell_type": "code", - "execution_count": 830, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -1024,7 +934,7 @@ "17576" ] }, - "execution_count": 830, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1036,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 831, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1047,7 +957,7 @@ "(('a', 'a', 'b'), True)" ] }, - "execution_count": 831, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1059,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": 832, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1070,7 +980,7 @@ }, { "cell_type": "code", - "execution_count": 833, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1081,7 +991,7 @@ "[('a', 'a', 'b')]" ] }, - "execution_count": 833, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1097,7 +1007,7 @@ }, { "cell_type": "code", - "execution_count": 857, + "execution_count": 35, "metadata": { "collapsed": true }, @@ -1119,7 +1029,7 @@ }, { "cell_type": "code", - "execution_count": 835, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1130,7 +1040,7 @@ "[('a', 'a', 'b')]" ] }, - "execution_count": 835, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1141,7 +1051,7 @@ }, { "cell_type": "code", - "execution_count": 836, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1160,7 +1070,7 @@ }, { "cell_type": "code", - "execution_count": 837, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1171,7 +1081,7 @@ "('e', 'l', 'e')" ] }, - "execution_count": 837, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1183,7 +1093,7 @@ }, { "cell_type": "code", - "execution_count": 838, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1194,7 +1104,7 @@ "'dhnpforeeimgg'" ] }, - "execution_count": 838, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1208,7 +1118,7 @@ }, { "cell_type": "code", - "execution_count": 839, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1219,7 +1129,7 @@ "('j', 'e', 'o')" ] }, - "execution_count": 839, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1230,7 +1140,7 @@ }, { "cell_type": "code", - "execution_count": 840, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1253,7 +1163,7 @@ " MenuIem(before='t', after='g', number=13)]" ] }, - "execution_count": 840, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1265,7 +1175,7 @@ }, { "cell_type": "code", - "execution_count": 841, + "execution_count": 42, "metadata": { "collapsed": false, "scrolled": true @@ -1338,7 +1248,7 @@ " ('z', 'z', 'k')]" ] }, - "execution_count": 841, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1355,7 +1265,7 @@ }, { "cell_type": "code", - "execution_count": 842, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -1366,7 +1276,7 @@ "62" ] }, - "execution_count": 842, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1377,7 +1287,7 @@ }, { "cell_type": "code", - "execution_count": 843, + "execution_count": 44, "metadata": { "collapsed": false, "scrolled": true @@ -1401,7 +1311,7 @@ " ('y', 'n', 'c')]" ] }, - "execution_count": 843, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1418,7 +1328,7 @@ }, { "cell_type": "code", - "execution_count": 858, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -1441,7 +1351,7 @@ " ('y', 'n', 'c')]" ] }, - "execution_count": 858, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1452,7 +1362,7 @@ }, { "cell_type": "code", - "execution_count": 844, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -1469,7 +1379,7 @@ }, { "cell_type": "code", - "execution_count": 845, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -1480,7 +1390,7 @@ "13" ] }, - "execution_count": 845, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1491,7 +1401,7 @@ }, { "cell_type": "code", - "execution_count": 846, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -1503,7 +1413,7 @@ }, { "cell_type": "code", - "execution_count": 847, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -1514,7 +1424,7 @@ "Signal(bank='e', wire='e')" ] }, - "execution_count": 847, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1525,7 +1435,7 @@ }, { "cell_type": "code", - "execution_count": 848, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -1536,7 +1446,7 @@ "True" ] }, - "execution_count": 848, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1547,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 849, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -1558,7 +1468,7 @@ "True" ] }, - "execution_count": 849, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1569,7 +1479,7 @@ }, { "cell_type": "code", - "execution_count": 850, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1623,7 +1533,7 @@ }, { "cell_type": "code", - "execution_count": 851, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -1677,7 +1587,7 @@ }, { "cell_type": "code", - "execution_count": 852, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -1685,15 +1595,15 @@ { "data": { "text/plain": [ - "{frozenset({'e', 'y'}),\n", - " frozenset({'t', 'x'}),\n", + "{frozenset({'m'}),\n", " frozenset({'i', 'n'}),\n", - " frozenset({'m'}),\n", - " frozenset({'b', 'g'}),\n", - " frozenset({'f', 'p'})}" + " frozenset({'f', 'p'}),\n", + " frozenset({'t', 'x'}),\n", + " frozenset({'e', 'y'}),\n", + " frozenset({'b', 'g'})}" ] }, - "execution_count": 852, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1705,7 +1615,7 @@ }, { "cell_type": "code", - "execution_count": 853, + "execution_count": 55, "metadata": { "collapsed": false }, @@ -1716,7 +1626,7 @@ "True" ] }, - "execution_count": 853, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1727,7 +1637,7 @@ }, { "cell_type": "code", - "execution_count": 854, + "execution_count": 56, "metadata": { "collapsed": false }, @@ -1735,13 +1645,13 @@ { "data": { "text/plain": [ - "({frozenset({1, 2}), frozenset({2, 3}), frozenset({3, 4})},\n", + "({frozenset({1, 2}), frozenset({3, 4}), frozenset({2, 3})},\n", " frozenset({1, 2}),\n", " frozenset({3, 4}),\n", " frozenset({2, 3}))" ] }, - "execution_count": 854, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1760,7 +1670,7 @@ }, { "cell_type": "code", - "execution_count": 855, + "execution_count": 57, "metadata": { "collapsed": false }, @@ -1771,7 +1681,7 @@ "False" ] }, - "execution_count": 855, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1782,7 +1692,7 @@ }, { "cell_type": "code", - "execution_count": 856, + "execution_count": 58, "metadata": { "collapsed": false }, @@ -1793,7 +1703,7 @@ "False" ] }, - "execution_count": 856, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -1828,7 +1738,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1+" + "version": "3.4.3+" } }, "nbformat": 4,