Challenge 6
[cipher-training.git] / 2014-challenge7.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:3a4749bad5690e746e43cddb887ed31282398e12c90470d01010a2e6a024c527"
5 },
6 "nbformat": 3,
7 "nbformat_minor": 0,
8 "worksheets": [
9 {
10 "cells": [
11 {
12 "cell_type": "code",
13 "collapsed": false,
14 "input": [
15 "import matplotlib.pyplot as plt\n",
16 "import pandas as pd\n",
17 "import collections\n",
18 "import string\n",
19 "%matplotlib inline\n",
20 "\n",
21 "from cipherbreak import *\n",
22 "\n",
23 "c7a = open('2014/7a.ciphertext').read()\n",
24 "c7b = open('2014/7b.ciphertext').read()"
25 ],
26 "language": "python",
27 "metadata": {},
28 "outputs": [],
29 "prompt_number": 1
30 },
31 {
32 "cell_type": "code",
33 "collapsed": false,
34 "input": [
35 "freqs = pd.Series(english_counts)\n",
36 "freqs.plot(kind='bar')"
37 ],
38 "language": "python",
39 "metadata": {},
40 "outputs": [
41 {
42 "metadata": {},
43 "output_type": "pyout",
44 "prompt_number": 2,
45 "text": [
46 "<matplotlib.axes.AxesSubplot at 0x7f51e347e1d0>"
47 ]
48 },
49 {
50 "metadata": {},
51 "output_type": "display_data",
52 "png": "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\n",
53 "text": [
54 "<matplotlib.figure.Figure at 0x7f521042a0f0>"
55 ]
56 }
57 ],
58 "prompt_number": 2
59 },
60 {
61 "cell_type": "code",
62 "collapsed": false,
63 "input": [
64 "freqs_7a = pd.Series(collections.Counter([l.lower() for l in c7a if l in string.ascii_letters]))\n",
65 "freqs_7a.plot(kind='bar')"
66 ],
67 "language": "python",
68 "metadata": {},
69 "outputs": [
70 {
71 "metadata": {},
72 "output_type": "pyout",
73 "prompt_number": 3,
74 "text": [
75 "<matplotlib.axes.AxesSubplot at 0x7f51e3496278>"
76 ]
77 },
78 {
79 "metadata": {},
80 "output_type": "display_data",
81 "png": "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\n/Os4hwAAAABJRU5ErkJggg==\n",
82 "text": [
83 "<matplotlib.figure.Figure at 0x7f51e349fda0>"
84 ]
85 }
86 ],
87 "prompt_number": 3
88 },
89 {
90 "cell_type": "code",
91 "collapsed": false,
92 "input": [
93 "freqs_7b = pd.Series(collections.Counter([l.lower() for l in c7b if l in string.ascii_letters]))\n",
94 "freqs_7b.plot(kind='bar')"
95 ],
96 "language": "python",
97 "metadata": {},
98 "outputs": [
99 {
100 "metadata": {},
101 "output_type": "pyout",
102 "prompt_number": 4,
103 "text": [
104 "<matplotlib.axes.AxesSubplot at 0x7f51e33869e8>"
105 ]
106 },
107 {
108 "metadata": {},
109 "output_type": "display_data",
110 "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD+CAYAAAAnIY4eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGORJREFUeJzt3X+QJGV9x/H3wikgd+vdVvT4aRaJiFgqiqAppVyQI8RS\noGJMJFFvScVKpCJqKMOBSVhSJblgqVeamMQfcEcElCghYAkBgVEUxFKZ4+A4fulFIHVnyGHuMBEw\nXP54em5nZ2dnunu6Z/rpfb+qpnamZ77zPE9v9zM9n+mdBUmSJEmSJEmSJEmSJEmSpEJdAmwHNnW5\n7xzgWWCibdl5wIPAFuDk0nsnSerreODVzJ/IDwVuAH7M7ER+FNAEngNMAg8Bew2ll5K0iPWbaG8D\nnuiy/BPAn3UsOw24EngG2EqYyI8bsH+SpD7yHDGfBjwK3N2x/KBkecujwME5+yVJSmlJxsc/Dzgf\nWNW2bKzH43dn7pEkKZOsE/nhhPx7Y3L7EOAHwOuAxwjZOW33PTbvCQ4/fPfDDz+cuaOStMhtBI7O\nWzxJ97NWoPuHnc8FDgMepvvR+u6FXHDBBQve14t11lm3OOpi6GNZdfRIOPpl5FcCtwNHAI8AZ3ZO\nym3XNwNXJT+vB87q1XA3W7duzfJw66yzbpHVxdDHUdT1i1bO6HP/iztuX5RclBgfn2DXrtkTfzZs\n2LDn+rJlK9i5c8couiWpRvYeQZszMzMzXe9Yvnw5k5OTmZ+wynXnn7+G8MZkBpgC1ifXZ3j66TUs\ntC6G3U/rrIuhLoY+llV34YUXAlzY7b5eZ5yUJYl7FoexsTEWTpjGWEzrQlJ+YS7pPmdX6i8vG41G\nretguO1ZZ13d6mLo4yjqKjWRS5KyM1opmdGKpCJEE61IkrKr1EQeSx5lRm6ddaOpi6GPo6ir1EQu\nScrOjLxkZuSSimBGLkk1VqmJPJY8yozcOutGUxdDH0dRV6mJXJKUnRl5yczIJRXBjFySaqxSE3ks\neZQZuXXWjaYuhj6Ooq5SE7kkKTsz8pKZkUsqghm5JNVYpSbyWPIoM3LrrBtNXQx9HEVdpSZySVJ2\nZuQlMyOXVAQzckmqsUpN5LHkUWbk1lk3mroY+jiKun4T+SXAdmBT27KPAfcBG4Grgee33Xce8CCw\nBTg5V48kSZn0y8iPB54ELgNekSxbBdwMPAusTZatAY4CrgCOBQ4GvgEckTyunRn57L1m5JJSGSQj\nvw14omPZTcxOzncChyTXTwOuBJ4BtgIPAcdl7q0kKZNBM/I/AL6eXD8IeLTtvkcJR+apxZJHmZFb\nZ91o6mLo4yjqBpnIPwI8TYhTFmJuIEklW5Kzbhp4C/DmtmWPAYe23T4kWTa/eHqayclJAJYvX87R\nRx/N1NQUU1NTe16RpqamAFLfbslSP4z2kkcBU8mlVV+P8dme7Q2zvdayrP3Le3uU7TUaDdavXw+w\nZ75cSJo/CJoErmP2w85TgI8DbwIeb3tc68PO45j9sPPXmH9U7oeds/f6YaekVAb5sPNK4HbgpcAj\nhEz808BSwoeedwGfSR67Gbgq+Xk9cBYZo5XOV/e61ZmRW2fdYHUx9HEUdf2ilTO6LLukx+MvSi6S\npCHxu1ZKZrQiqQh+14ok1VilJvJY8igzcuusG01dDH0cRV2lJnJJUnZm5CUzI5dUBDNySaqxSk3k\nseRRZuTWWTeauhj6OIq6Sk3kkqTszMhLZkYuqQhm5JJUY5WayGPJo8zIrbNuNHUx9HEUdZWayCVJ\n2ZmRl8yMXFIRzMglqcYqNZHHkkeZkVtn3WjqYujjKOoqNZFLkrIzIy+ZGbmkIpiRS1KNVWoijyWP\nMiO3zrrR1MXQx1HUVWoilyRlZ0ZeMjNySUUwI5ekGqvURB5LHmVGbp11o6mLoY+jqOs3kV8CbAc2\ntS2bAG4CHgBuBJa33Xce8CCwBTg5V48kSZn0y8iPB54ELgNekSy7GHg8+XkusAJYAxwFXAEcCxwM\nfAM4Ani24znNyGfvNSOXlMogGfltwBMdy04FNiTXNwCnJ9dPA64EngG2Ag8Bx2XurSQpkzwZ+UpC\n3ELyc2Vy/SDg0bbHPUo4Mk8tljzKjNw660ZTF0MfR1E36Iedu1k4N2Ch+6anp5mZmWFmZoZ169bN\n6Xyj0ch8u9lsDlRfZnvJ0o7r9Rmf7dneMNtrNpulj6cq7TUaDaanp/fMl72kOY98EriO2Yx8CzAF\nbAMOBG4FjiTk5ABrk583ABcAd3Y8nxn57L1m5JJSKfo88muB1cn11cA1bcvfCTwXOAx4CfC9HM8v\nScqg30R+JXA78FLgEeBMwhH3KsLphycyewS+Gbgq+Xk9cBa9Y5d52t9i1LFubsRSfnvWWVe3uhj6\nOIq6JX3uP2OB5SctsPyi5CJJGhK/a6VkZuSSiuB3rUhSjVVqIo8ljzIjt8660dTF0MdR1FVqIpck\nZWdGXjIzcklFMCOXpBqr1EQeSx5lRm6ddaOpi6GPo6ir1EQuScrOjLxkZuSSimBGLkk1VqmJPJY8\nyozcOutGUxdDH0dRV6mJXJKUnRl5yczIJRXBjFySaqxSE3kseZQZuXXWjaYuhj6Ooq5SE7kkKTsz\n8pKZkUvB+PgEu3Y90fW+ZctWsHPnjiH3KC69MnIn8pI5kUuB+8JgovmwM5Y8yozcOusGr8uzP8Qy\nNjNySVImRisl8+2kFLgvDCaaaEWSlF2lJvJY8igzcuusG7zOjLy4ukEm8vOAe4FNwBXAPsAEcBPw\nAHAjsHyA55ckpZA3I58EbgFeBjwFfBn4OvBy4HHgYuBcYAWwpqPWjHz2XnNBLRruC4MpIyPfCTwD\nPA9Ykvz8D+BUYEPymA3A6TmfX5KUUt6JfAfwceAnhAn8Z4RIZSWwPXnM9uR2arHkUWbk1lk3eJ0Z\neXF1eSfyw4EPEiKWg4ClwLs6HrObBd5HTU9PMzMzw8zMDOvWrZvT+Uajkfl2s9kcqL7M9pKlHdfr\nMz7bs71s+0ODQfaHZrNZ+niq0l6j0WB6enrPfNlL3oz8d4FVwB8mt98NvB44ETgB2AYcCNwKHNlR\na0Y+e6+5oBYN94XBlJGRbyFM3PslT3wSsBm4DlidPGY1cE3O55ckpZR3It8IXAZ8H7g7WfZZYC3h\nSP0BwtH52ixPOvctWP3q5r6lLL8966yrcl2e/SGWsQ27bkmuquDi5NJuB+HoXJI0JH7XSsnMBaXA\nfWEwfteKJNVYpSbyWPIoM3LrrBu8zoy8uLpKTeSSpOzMyEtmLigF7guDMSOXpBqr1EQeSx5lRm6d\ndYPXmZEXV1epiVySlJ0ZecnMBaXAfWEwZuSSVGOVmshjyaPMyK2zbvA6M/Li6io1kUuSsjMjL5m5\noBS4LwzGjFySaqxSE3kseZQZuXXWDV5nRl5cXaUmcklSdmbkJTMXlAL3hcGYkUtSjVVqIo8ljzIj\nt866wevMyIurq9RELknKzoy8ZOaCUuC+MBgzckmqsUpN5LHkUWbk1lk3eJ0ZeXF1g0zky4GvAPcB\nm4HXARPATcADwI3JYyRJJRokI98AfBO4BFgC7A98BHgcuBg4F1gBrOmoMyOfvddcUIuG+8JgemXk\neSfy5wN3AS/uWL4FeBOwHTiA8N7pyI7HOJHP3uvGq0XDfWEwZXzYeRjwn8ClwA+BzxGOyFcSJnGS\nnyuzPGkseZQZuXXWDV5nRl5cXd6JfAnwGuAzyc+f0yVCYYGX3+npaWZmZpiZmWGfffZjbGyMsbEx\nTjjhhD3Xx8bGGB+foNFozBlct9vNZrPn/UXfztJesrTjenntDXt8tmd72faHBoPsD81ms/TxVKW9\nRqPB9PT0nvmyl7zRygHAHYQjc4A3AucRopYTgG3AgcCt9IlW6v52q+7jk9JyXxhMGdHKNuAR4Ijk\n9knAvcB1wOpk2WrgmpzPL0lKaZDTD98PXA5sBF4JfBRYC6winH54YnI7g0aujsx961bdurqPzzrr\nMlYOra261y3JVRVsBI7tsvykAZ5TkpTRyL9rpe65Wd3Hp+KMj0+wa9cTXe9btmwFO3fuiLo994XB\nlHEe+SCcyGfvjX58Ks6wt5W6t1c3EX1pViNfVSQ5Vt3HZ12xdcPeXmJoL5bf3bDrKjaRS5KyMlop\nWd3Hp+LUPepwXxhMRNGKJCmrik3kjXxVkeRYdR+fdcXWxZBZD7u9WH53ZuSSpEzMyEtW9/GpOHXP\nrN0XBmNGLkk1VrGJvJGvKpIcq+7js67Yuhgy62G3F8vvLqbvWpHUxbD/9F0yIy9Z3cen+fL+zuue\nWbsvDMaMXJJqrGITeSNfVSQ5Vt3HZ92ClUOti2X7NCMvrq5iE7kkKSsz8pLVfXx+sDdf3TPyvL/z\nuu8LZfP7yEfI8cU9vjzqPpHHMr66iejDzka+qkhyLMdXbHux1NU9Ix9mXSy/c88j10gYkUjxMlop\nWSzj8+1ycWJZl0YrcYkoWqmu8fEJxsbGul7GxydG3T1Ji1jFJvJGvqoh5FEhdtidXG5tu757wUii\nS4vZOtiqMtONui6W9WlGHm/doBP53sBdwHXJ7QngJuAB4EZg+YDPL0nqY9CM/E+BY4BlwKnAxcDj\nyc9zgRXAmo6aKDPyuueCdR/fMMWyLs3I41JWRn4I8Bbg821PfiqwIbm+ATh9gOeXJKUwyET+SeDD\nwLNty1YC25Pr25PbGTRydcTMs9i6uo/P9Vlse2bko6/Lex75W4GfEvLxqQUe0/o0cJ7p6WkmJyfb\nljTanqaR/Ay3WwObmlr4drPZ7Hl/Ebfn9rXZpb90rXd81RhfddZneMxC9Z3rr9/6H3R8edtrewTD\nHF+z2ex5f7/+Zv19jrK9RqPB+vXrATrmy/nyZuQXAe8GfgnsC4wDVwPHEn5D24ADCad3HNlRa0ae\nom7Y6j6+YYplXZqRx6WMjPx84FDgMOCdwC2Eif1aYHXymNXANTmfX5KUUlHnkbdeStcCqwinH56Y\n3M6gkavxYedRsWSejq8adbGsTzPyeOuK+K6VbyYXgB3ASQU8pyQpJb9rJaW654J1H98wxbIuzcjj\n4netSFKNVWwib+SrMvMstK7u43N9FtueGfno6yo2kUuSsjIjT6nuuWDdxzdMsaxLM/K4mJFLUo1V\nbCJv5Ksy8yy0ru7jc30W254Z+ejrKjaRS5KyMiNPqe65YN3HN0yxrEsz8riYkUtSjVVsIm/kqzLz\nLLSu7uNzfRbbnhn56OsqNpFLkrIyI0+p7rlg3cc3TLGsSzPyuJiRS1KNVWwib+SrMvMstK5u4xsf\nn2BsbKzrZXx8ovR+xrI+zcjjravYRC4Vb9euJ5j9F7K7Cf+BMFwP90lxW3QZ+fj4xII777JlK9i5\nc0f3ntQ8F6zz+OqePedlRh6XXhl5Ef8hKCqzR2fd7hvF65okDaZi0UojX1WNM0EwIy+6ru7bWSz9\nNCMvrq5iE7kkKatFl5GbC3ZX5/HVfRvLy30hLp5HLkkpFXW66jBVbCJv5KuqcSYI8WTIdR9fVddn\ncRNPuvZGWTeMbWXu6aq3tl1Pf7pqLBn5oYQR3gvcA5ydLJ8AbgIeAG4Elud8fkkpeZ688mbkBySX\nJrAU+AFwOnAm8DhwMXAusAJY01FrRp6ibtjqPD63sbjrhq2q/SwjI99GmMQBngTuAw4GTgU2JMs3\nECZ3SVKJisjIJ4FXA3cCK4HtyfLtye0MGrk6UNXssqi6WDLkuo8vlvVZ57q6byt56wb9y86lwFeB\nDwC7Ou5rBXbzTE9PMzk52bakAUy1XWfP7dbApqYWvt1sNnve3347b3tza5td6im0vbzjy3t78Y4v\nPKYq7XWuv37rf7G017rdbDZ73t+vv9l/f63gYWrPkjTbS9b2uo2v0Wiwfv16gI75cr5BziN/DvA1\n4HpgXbJsC2HE24ADCZ+6HNlRZ0aeom7Y6jw+t7G464atqv0sIyMfA74AbGZ2Ege4FlidXF8NXJPz\n+SVJKeWdyN8AvAs4AbgruZwCrAVWEU4/PDG5nUEjV2fqnl3GkgvWfXyxrM8619V9W8lblzcj/zYL\nvwiclPM5JUk5+F0rKdszF4x3fHn7GMt319e9btiq2k+/j1zKwe+uVyz8rpUI6mLJBR2fdWXXxbKt\nDLufFZvIJUlZmZGnbM9cMN7xxfI7t2702wpUt59+H7kk1VjFJvJGvqqaZ6Wx5IKOz7oy6vJ+33ox\n39Oero/zqszIJWlW3n/0UMQ/iIiFGXnK9swF4x1fLL9z6+KuK5sZeYRG+3ZSUkwqNpE38lXVMCsd\n7dvJ9P0sos6M3LpqtpW/zoxckpSJGXnK9qyLK0+c04tI1ol1cdeVzYxckmqsYhN5I1+VWWnUdWbk\n1lWzrfx1WbbNIk5QqNhELkmLSxEnKESbkftd0XHXDVMs68S6uOvyStteLb+P3O+KlqSgYtFKw7pF\nWGdGbl0128pfN+xtM9ojci0+eeM0qe6izciti7suj1jGZt3irMuriIy8YtGKJCmrMibyU4AtwIPA\nudlKGzmbtC7mOrNu66rZVv66YW/TRU/kewN/S5jMjwLOAF6WvryZs1nrYq5rNuPop3VVqIuhj8Pf\npoueyI8DHgK2As8AXwJOS1/+s5zNWhdTXedfsn3oQx/K+VW71RyfdWXWVbeP7dt1+zadbbvO18+i\nJ/KDgUfabj+aLJP2mPuXbLuBC/Zcr9t/btHiMXe7voD2bbzs7broiXzAj3O3WmedddZVpK146oo+\n/fD1wAwhIwc4D3gW+Ju2xzSBVxXcriTV3Ubg6GE0tAR4GJgEnkuYtDN82ClJqoLfBO4nfOh53oj7\nIkmSJFVbFb4mcAJ4CbBP27Jv9anZDzgLeCPhA9bbgL8HflFw385pu76b2fXV+lD3E33q9wJ+HzgM\n+CvgRcABwPcK7GO7c5jfz/8GfkDvE1T3Bd5OiMRa37+zm9DnIn0HeAPwJPM/GN8N7AA+BvzdAvXH\nEMbS7q3A1wrsY7tjgfOZv15e2adukPV5NHA8s9v1xhQ1efaHMeAQ5p5lVkUXdFlWxrYZtVH/if57\ngW8CNwAXAv9G+LC0n8sIf3D0KcIfIL0c+KeUdSvabk8Al/R4/DJgKWECeR9wEOF0yj8GXpOivc8A\nvw78XnL7yWTZQlpj+GCK5+7mmKRvrX7+ESHq+hy9/8r2X4FTCef+P5lcft7j8d9Jfj4J7Oq47OxR\n94bk51LCum2/jCf9P7tH/eeAV7TdPgP4yx6P79a/NP1suRy4lDApvy25nJqiLuv6bPkA8EXgBcDK\n5Hqv9dGSd3+4PsVjuvkdwu8L4C+AfyHd/vA3KZe1+zmz6/D/CNvzZIq2ziHfqc9fJMxLR2asO6rL\nsqkUdWczd06K0j2Eo4nW0eKRhI2in80pl3XqdlSa5k+pbiNMNi3LkmX93NXxE3ofYW0mTMJ3E15k\nOi9p+rm07fZSwrub5wH39ai7J8VzD8tBPe57MfBDwnbyXsJ4n19iX77T/yFd5V2fm4D9227vnyzr\nJ+/+sIHwR3xZtfr0RsLflL8VuDNF3V1dlqUZX7t9CAd//cwA9wLfBv6E8MKYxomEdwE3AT8Gvkq6\nA6t7CAdLY4T97dPAd1PUfZTweeJVhLP9qpCSZPb95GeT8HYU0m2AXyQc6ba8nnRHIBuZOyFOkG5D\nur+tfyTX709RdyfhawtaG/AL6L4xt5xNmHCfImxE7ZcfpWhvC+FsoZZ92vrZq93P0j8uqIqXEtbR\nDYQdpkwnA18gHPm/Pbn8Voq6vOtzE+HApmU/0m2fefeH+wlHuT9K2tlEOIjop3Xws5YQHULv7et9\nyXP/T1s7mwgnTV+eor12E4SJL61XESbL+4GbU9YsIazD84GfkG5f35/wbui7hEn9fNInHnsRJvEv\nEcZ2EXB4yto9HR6lRwhvK64hvAI+Qe8z4lsb9RLC0dIjhLzsRaRb2R8H7iC8+o0B7yD8kvu5jJBr\nX53UnU44munn04R3GC8k/HJ+G/jzHo//VHL5B0JEktXlhBePa5J+vg24grCRdXuBbK3PvYEzCS8Y\nTyXL0mTBw9I5mU0QNv47KbefqwkvHEsIfw/RcnWfuuPJtz4vJYypfTvrFf21vJbu+8OmPu3+Rorn\n7uYxwovVKsJkvi+9J60rCDHOWmaPWiFEXP/Vp6323/1ehH0pSz7+U2Bb0s4LUjz+ZsL+cgfhaP61\nyXP080vgfwkvvvsSXhyf7Vkx69mkj9sJL6wrgK8A3wA+nOYJqnQYP0XI3W4Anl7gMZM96ncD/56i\nnZcT3j7tBm4h3TsACPlt60Oob9H7CKTdy4A3J9dvpnfEUYRjCVn0bsLO/f0ej53s81xbi+nSwCb7\n3L+1pHbvJ8Q4Wf9ieXKB5VtT1B7D3A8t02xnC7WXpd0s9iccQd5N+JbTAwmfXdxYcDswd2y/JEx2\nz6SoO4uQ5b8Q+Gfgy6Tb1z9JmLx/AdxOiHHuIEzSvWwEriW8yPwK8I+EF/F39Kn7APAewgvN5wkH\nfs8QXrQeJOORuaT5LiW88Cs+f81gfwW5DHg/4eDwqT6PhXAA1ek9KeouBH51gfu6fYDaVZWOyKWq\n2UI4Iqpq5KTivZ/wzvsYwu/9tuRyyyg71c+oM3Kpyk7p/xDVzL6Ez9J+SLoIR5IkSZIkSZIkSZIk\nSVqk/h/e+2Rlj0saNgAAAABJRU5ErkJggg==\n",
111 "text": [
112 "<matplotlib.figure.Figure at 0x7f51e339d7b8>"
113 ]
114 }
115 ],
116 "prompt_number": 4
117 },
118 {
119 "cell_type": "code",
120 "collapsed": false,
121 "input": [
122 "c7as = sanitise(c7a)\n",
123 "c7as"
124 ],
125 "language": "python",
126 "metadata": {},
127 "outputs": [
128 {
129 "metadata": {},
130 "output_type": "pyout",
131 "prompt_number": 5,
132 "text": [
133 "'veyjmyjkrzilysyjeydorulcsrcjnmoiddeugurlogfsnwcrlhckhghmwkejxlyktlagflalvtmgkyyomvlmgkyjosfdrzepwaqgnrzeqzinoaqforkcsltjwdussrzarlhcnajneqzabbakeebatjgoiklgcerzebjidlwmgdussnmljwdgftmlhceeazalasksnbtlmukcvtfwilderhrckuksbjqtfwcpwwfsdydrcsdwsbyfdmfeblhcneqkejohguhussjmciqfmjuqoirzosltfwsfapuwwmmlbzatwhyvnmadcstfstrzedvafsdzwelgpcjaraneanrzeqwwylepkscshmjscaslglmfgcjakqsrwrwlhcuurswyqollhcktyjbmsrbkibwcjwapwdyfapwamxapgulvfgnekwtcjsqiuyjeuatfsdgktgfcravcharlepfodtojlsdssrwncvtmjegffmjccvdcukndarwsgkaukokwtfanediiwtfasmfaqmbpwsamekasqaolscmmpjwodqeyjsyyouzellhcqfgltcvajgcydsfapuatfsjsjypagewdgfsnwcraolkyqleklhcveacpjstckcyfcyjrwscpsncveqaglwdrgdchlmqaljotsrceorwonwrylebnefacjwdckiefebxopmnbwrqwamhepstggnqawykajjeyvyagnawrlwdytosltfwrcxepwnawtmlhcuazdeqanrzejssrhaplodlhcxdydoeturlhcfevlscutggnfsskwrcsljqwmjrgwdgliqwnajynleboirzakgrckeamrceobafgwdyesagtpsnqhoqatggnaapfwryfdrwljkuqohyltfwyuwrcjeydlwmprgwfstgvollulvepktyfdgkhmotfwwfglcssqwmzdygkpmoepwdrzeqgrrgfagmnmtgfgrzeweuqlbcvogfggkrcsljqillelkitwalvwmmlbtupftfjosyhytarlepqilvawkillhyltgeerzegjillepuenlmgyhrforuaruhyfyrzilyuqwfsdbsltfwyasnfsrbdyfsvczihsciwdydoaslqgciwtgftfwmgvdjwodlhcgccsnasnwguewtkwaazaplsfgwgfgrzebwenkeyuazdeqanrzepwgggngvolliksggferzeskwgdlzwanjozdekturatksylwebkokwdghlmeaaqtmyerlhcxujdcmnepsgceankfpgmrzemealagmnepfmcftgxiyergyhratgkillhcarzwsranrwrcktqlondawslmfguwajdhyneydorlojgsczepw'"
134 ]
135 }
136 ],
137 "prompt_number": 5
138 },
139 {
140 "cell_type": "code",
141 "collapsed": false,
142 "input": [
143 "c7bs = sanitise(c7b)\n",
144 "c7bs"
145 ],
146 "language": "python",
147 "metadata": {},
148 "outputs": [
149 {
150 "metadata": {},
151 "output_type": "pyout",
152 "prompt_number": 6,
153 "text": [
154 "'anwaecnndrtwtanireoahsrdntieerdctewayerevaaarpioerobsedescrehlaoitithsdtrinosepeplthtnidtwsduledlhotpeaterhaaredeoaiodtahregerothwhtsureteeinwigiresetpowicooonitseudseechacteofiileonewiotacteodteuneahsedaptryemronmomlexontkemeoyvitsteenhantrertieineotndlhpoplyitewitrsedeevdycfrmnsnaypinmteeneeinahinepritedehveleaorelllvmocnahncepherohjuuvehautathttetoasipowwneedselopgdeslfedterfcaatehjasdtrprleseeretetecneorrsgckamiiwaefutiashaongcthsrenrehtrsthhaceinwtprloghetodaeraloeedeatsomldwedtwefsbelevpdteonoignsavftegsebomcehatietnrsptonthusorecredendcetlwaehesedrncveracuhoihaleinaemeunherdesttstasipedeyleeemtiisiigothntssfolnitretrwhemtkhhswtorcssnererohteencsapeblircnthuleofenrsromrnshmaddaodeatihioroutwevthapeceetovterdleaditewdottttcatkmbhtheicwantnisedwatxankeabovoanmswlprgaispodfogndpedeswrdacttrefhdesyaberretlavod'"
155 ]
156 }
157 ],
158 "prompt_number": 6
159 },
160 {
161 "cell_type": "code",
162 "collapsed": false,
163 "input": [
164 "key_a, score = vigenere_frequency_break(c7as)\n",
165 "key_a, score"
166 ],
167 "language": "python",
168 "metadata": {},
169 "outputs": [
170 {
171 "metadata": {},
172 "output_type": "pyout",
173 "prompt_number": 7,
174 "text": [
175 "('say', -1726.4679903722085)"
176 ]
177 }
178 ],
179 "prompt_number": 7
180 },
181 {
182 "cell_type": "code",
183 "collapsed": false,
184 "input": [
185 "' '.join(segment(vigenere_decipher(c7as, key_a)))"
186 ],
187 "language": "python",
188 "metadata": {},
189 "outputs": [
190 {
191 "metadata": {},
192 "output_type": "pyout",
193 "prompt_number": 8,
194 "text": [
195 "'dear mark things area lot clearer now i flew out to inspect the ship myself last night and took a good look around the reason the ship was not scuttled was that the valves had jammed it looks like the driftwood was pulled into the mechanism and blocked the inlet presumably the crew had already abandoned the vessel which was lucky for us without the ship we would have had no idea that the fda had been operating in these waters seahorse is no longer a mystery the cutaway on the starboard side cleared an area of around five meters square with a distinctive pattern of bolts fastened to reinforced deck plates i saw something like this on a sub rescue mission a couple of years ago when they fitted a local ship with a jury rigged inspection system the deck plates can carry a crane designed to deploy an rova remote operated vehicle designed for undersea operations i was already concerned about the reference to the cables in the last part of the fda log but the next section has me really worried it is encrypted with a more secure modified amsco transposition cipher and tells us what they were really up to what i dont understand is how the whole assembly is powered the sort of computing they must be doing is really intensive and would burn through a battery in days in that time their intercept might not catch anything useful but they can hardly have hijacked a local socket in the middle of the ocean can you get me a chart showing the deepsea cables in the region i dont imagine the us will be a problem but it may need some diplomacy to get the full coverage maps from the omani government if i am right it is in their best interests to playalong we all have alot to lose here'"
196 ]
197 }
198 ],
199 "prompt_number": 8
200 },
201 {
202 "cell_type": "code",
203 "collapsed": false,
204 "input": [
205 "key_b, score = amsco_break(c7bs)\n",
206 "key_b, score"
207 ],
208 "language": "python",
209 "metadata": {},
210 "outputs": [
211 {
212 "metadata": {},
213 "output_type": "pyout",
214 "prompt_number": 9,
215 "text": [
216 "(((1, 2, 0, 4, 3), (2, 1)), -1902.8377732825452)"
217 ]
218 }
219 ],
220 "prompt_number": 9
221 },
222 {
223 "cell_type": "code",
224 "collapsed": false,
225 "input": [
226 "' '.join(segment(amsco_transposition_decipher(c7bs, key_b[0], fillpattern=key_b[1])))"
227 ],
228 "language": "python",
229 "metadata": {},
230 "outputs": [
231 {
232 "metadata": {},
233 "output_type": "pyout",
234 "prompt_number": 10,
235 "text": [
236 "'phase seven we approached the cable junction undercover of night with nautilus at an elevation of three feet towing seahorse to starboard comms interception showed that we remained undetected and seahorse was deployed at operating depth the various layers of armoured protection were removed from the cable and as expected once the steel jacket was removed the other layers provided little resistance the divers entered the water and cut into the core to insert the optical repeaters linking them back to the man in the middle unit which was powered up and fully tested initial tests showed that it was operating as expected and three keys have already been recovered from the omani transmissions with daylight approaching the remaining tests were postponed for the following night and the ship returned to deeper waters where it remained at low deck height the divers were left at seahorse to decompress slowly and will be recovered tomorrow once the final tests have been concluded'"
237 ]
238 }
239 ],
240 "prompt_number": 10
241 },
242 {
243 "cell_type": "code",
244 "collapsed": false,
245 "input": [
246 "transpositions[key_b[0]]"
247 ],
248 "language": "python",
249 "metadata": {},
250 "outputs": [
251 {
252 "metadata": {},
253 "output_type": "pyout",
254 "prompt_number": 12,
255 "text": [
256 "['cable',\n",
257 " 'facto',\n",
258 " 'facts',\n",
259 " 'gabon',\n",
260 " 'hafts',\n",
261 " 'hefts',\n",
262 " 'ibexs',\n",
263 " 'kabul',\n",
264 " 'lacys',\n",
265 " 'ladys',\n",
266 " 'laius',\n",
267 " 'lefts',\n",
268 " 'macon',\n",
269 " 'macro',\n",
270 " 'macys',\n",
271 " 'malts',\n",
272 " 'melon',\n",
273 " 'melts',\n",
274 " 'negro',\n",
275 " 'oahus',\n",
276 " 'obeys',\n",
277 " 'obits',\n",
278 " 'odets',\n",
279 " 'pacts',\n",
280 " 'pants',\n",
281 " 'pelts',\n",
282 " 'pints',\n",
283 " 'piotr',\n",
284 " 'pious',\n",
285 " 'plots',\n",
286 " 'plows',\n",
287 " 'ploys',\n",
288 " 'rafts',\n",
289 " 'rants',\n",
290 " 'remus',\n",
291 " 'rents',\n",
292 " 'riots',\n",
293 " 'scout',\n",
294 " 'shout',\n",
295 " 'snout',\n",
296 " 'cabbed',\n",
297 " 'cabbie',\n",
298 " 'cabbys',\n",
299 " 'cabral',\n",
300 " 'dabble',\n",
301 " 'faeroe',\n",
302 " 'gabbro',\n",
303 " 'ibexes',\n",
304 " 'jaguar',\n",
305 " 'kaboom',\n",
306 " 'kaftan',\n",
307 " 'lacuna',\n",
308 " 'lagoon',\n",
309 " 'lefter',\n",
310 " 'legume',\n",
311 " 'macaws',\n",
312 " 'magyar',\n",
313 " 'malays',\n",
314 " 'maltas',\n",
315 " 'mellon',\n",
316 " 'negevs',\n",
317 " 'nellys',\n",
318 " 'nelson',\n",
319 " 'odious',\n",
320 " 'paddys',\n",
321 " 'panzas',\n",
322 " 'peggys',\n",
323 " 'pelves',\n",
324 " 'pennys',\n",
325 " 'photos',\n",
326 " 'pinups',\n",
327 " 'qantas',\n",
328 " 'rabats',\n",
329 " 'rallys',\n",
330 " 'refuse',\n",
331 " 'refute',\n",
332 " 'remuss',\n",
333 " 'renews',\n",
334 " 'repute',\n",
335 " 'scouts',\n",
336 " 'shouts',\n",
337 " 'snouts',\n",
338 " 'cabbage',\n",
339 " 'cabrera',\n",
340 " 'dabbled',\n",
341 " 'gadwall',\n",
342 " 'ladonna',\n",
343 " 'leftest',\n",
344 " 'madonna',\n",
345 " 'malayan',\n",
346 " 'million',\n",
347 " 'papacys',\n",
348 " 'pellets',\n",
349 " 'penneys',\n",
350 " 'qantass',\n",
351 " 'ragtags',\n",
352 " 'refuses',\n",
353 " 'refuter',\n",
354 " 'regrets',\n",
355 " 'rennets',\n",
356 " 'renters',\n",
357 " 'reroute',\n",
358 " 'sallust',\n",
359 " 'macassar',\n",
360 " 'mahatmas',\n",
361 " 'mahayana',\n",
362 " 'nanettes',\n",
363 " 'palatals',\n",
364 " 'phosphor',\n",
365 " 'reenters',\n",
366 " 'phosphors',\n",
367 " 'sinusitis',\n",
368 " 'malayalams',\n",
369 " 'sinusitiss']"
370 ]
371 }
372 ],
373 "prompt_number": 12
374 },
375 {
376 "cell_type": "code",
377 "collapsed": false,
378 "input": [],
379 "language": "python",
380 "metadata": {},
381 "outputs": []
382 }
383 ],
384 "metadata": {}
385 }
386 ]
387 }