Added challenge 8 files, done 8a
authorNeil Smith <neil.git@njae.me.uk>
Fri, 19 Dec 2014 14:42:48 +0000 (14:42 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 19 Dec 2014 14:42:48 +0000 (14:42 +0000)
2014-challenge8.ipynb [new file with mode: 0644]
2014/8a.ciphertext [new file with mode: 0644]
2014/8b.ciphertext [new file with mode: 0644]
SIGNED.md

diff --git a/2014-challenge8.ipynb b/2014-challenge8.ipynb
new file mode 100644 (file)
index 0000000..5b5d5dc
--- /dev/null
@@ -0,0 +1,2031 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:e375a3faf5213c9f51d99f7c22948b1a55e592a6d8b6156a30b0fb490ea337a1"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "import matplotlib.pyplot as plt\n",
+      "import pandas as pd\n",
+      "import collections\n",
+      "import string\n",
+      "%matplotlib inline\n",
+      "\n",
+      "from cipherbreak import *\n",
+      "\n",
+      "c8a = open('2014/8a.ciphertext').read()\n",
+      "c8b = open('2014/8b.ciphertext').read().strip()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "freqs = pd.Series(english_counts)\n",
+      "freqs.plot(kind='bar')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 2,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7fe302243fd0>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7fe32d0cc0f0>"
+       ]
+      }
+     ],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "freqs_8a = pd.Series(collections.Counter([l.lower() for l in c8a if l in string.ascii_letters]))\n",
+      "freqs_8a.plot(kind='bar')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 3,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7fe301119be0>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7fe301154198>"
+       ]
+      }
+     ],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "c8as = sanitise(c8a)\n",
+      "c8as"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 4,
+       "text": [
+        "'nyvlggsyglchxfeuytqcesqxpziufiggrbjhpayncruyfpsxufiupskyrectmmcncruyregxigrlglbtiblmecebzsvrlpuxpbibjajrljreobajrlufigjehbezywtmgjyxfqxictsgrdgtbjafyoocwtmjblctwwucqmgofrlfmrfrlfwlbtijlwuypmchjqxicrfchumtsmzjbimyvhcuvyrugxjcwpdtpuisrlfdhbaencyqumufeogrhcrjmytqsmsxjmrcsxjrmttiswzvjrfpecjitnidgemdssaitasvjhuyofgxpsxgmvvqfvrxiyxxmymbxfjpufigbeufeuuiiyzfavbaofbxicmsamqfisqwpgrtribbmtskhcwuuimcxufinbitrvpwxsmnbljppytuixgpmlifbgpmtfpeugsodvpkxicsnyrjeswcvokioreoyvnchggkirishiuyrerlfdpjeluasorvpjwzqxfkwgpsnyhsmrfkiblaigpfuiociersflwvpiuusufmoewpliufeuuiemrprwflhdpmuggbjmodsskeugsoygsmwtrlfzecypnyreyftrvbgxblhuusufeuuivqiblsoavjrmdyplcchcrfpeugsonvprsdmpplxiyxdfeolimemwcrufimczfjsgasnkmukiorxicjeylbtitfsxlmobiwcppnmoexigwqjeogenqyscxiyxufizummjvfgrtreucxictpuisqyqnpzumufmoyjfuqplxiqfvrajrlmsglrlfwajjpomxhsitqxiyxxcoomabzsvrmuyreuixgpmnyugxpsxpdfvqmocwtdssjsoeiomyhfxpasncyqumufeqjeomjpsvpurumiynppgxjrmorlfkiblxjkixcrpuoomaufeurlfgvigkicwuqidsvjrcdmqnsrjaeugsoqescioavznxfbytgrhygbbioswdgticvtmafaeoqxbpxisrugrhrlsmyhfxichbrecywfdssmxicvjlxfpgfnxtuidyrdpedixigwnycccxicfscelrlsmyhfaffewcffcrmmslgrhdssgrufiggkirehymoqxufigbemcxtlsuqgscajryqypmrlfzitrlbpvz'"
+       ]
+      }
+     ],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "key_a, score = vigenere_frequency_break(c8as)\n",
+      "key_a, score"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 5,
+       "text": [
+        "('bye', -1461.9840974270046)"
+       ]
+      }
+     ],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "' '.join(segment(vigenere_decipher(c8as, key_a)))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 6,
+       "text": [
+        "'mark i cracked what appears to be the final document about the trojan deployment and i think i have an idea about how to deal with it and with the flag day associates the principal weakness of any system like the one they have installed is the need to provide large quantities of power the fda came up with an ingenious solution but it is very vulnerable special forces could take it out for us but that would tell the fda that we have cracked their ciphers so instead i suggest we let them destroy trojan for us we will need cooperation from the omani government an armed fighter jet and the flight control systems from a drone meanwhile we need to ensure two things one that we do not send critical information across the ba balm and abstrait and two that we use an on critical key generation protocol on that channel given the level of commitment the fda have shown in developing this plan i am sure that they will reinstate the powersupply within a few months but with luck they will not guess that we know about it and we will put it out of business for long enough to come up with a plan of our own to exploit it in the meantime we now know that their highest security communications are encrypted using a caden us cipher so we can start hunting through the database for other intercepts we can crack this maybe the breakthrough we have been looking for in the fight against the fda lets not screw it up all the best harry'"
+       ]
+      }
+     ],
+     "prompt_number": 6
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(c8b) / 8"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 12,
+       "text": [
+        "875.0"
+       ]
+      }
+     ],
+     "prompt_number": 12
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[c for c in chunks(c8b, 8)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "['00000001',\n",
+        " '01000100',\n",
+        " '00000010',\n",
+        " '01010001',\n",
+        " '11010011',\n",
+        " '10011000',\n",
+        " '00000101',\n",
+        " '00110011',\n",
+        " '11000101',\n",
+        " '00001110',\n",
+        " '01011001',\n",
+        " '00100110',\n",
+        " '00101001',\n",
+        " '00010010',\n",
+        " '00110011',\n",
+        " '00111100',\n",
+        " '10001111',\n",
+        " '00111000',\n",
+        " '10000000',\n",
+        " '11101010',\n",
+        " '11000011',\n",
+        " '10100010',\n",
+        " '11110010',\n",
+        " '11000100',\n",
+        " '11000100',\n",
+        " '01110000',\n",
+        " '00000110',\n",
+        " '11110111',\n",
+        " '10100101',\n",
+        " '10100110',\n",
+        " '01011100',\n",
+        " '11001001',\n",
+        " '00010110',\n",
+        " '10010000',\n",
+        " '10100100',\n",
+        " '01110001',\n",
+        " '01010000',\n",
+        " '11101000',\n",
+        " '11001110',\n",
+        " '01000011',\n",
+        " '00011011',\n",
+        " '10001000',\n",
+        " '01001010',\n",
+        " '00110010',\n",
+        " '01000010',\n",
+        " '10001101',\n",
+        " '00001001',\n",
+        " '00010110',\n",
+        " '10010100',\n",
+        " '10010011',\n",
+        " '01011000',\n",
+        " '00000000',\n",
+        " '01011001',\n",
+        " '01001110',\n",
+        " '11001000',\n",
+        " '00100011',\n",
+        " '01100111',\n",
+        " '00011010',\n",
+        " '10111001',\n",
+        " '11001101',\n",
+        " '00100100',\n",
+        " '01001111',\n",
+        " '01000000',\n",
+        " '00011110',\n",
+        " '00100000',\n",
+        " '10101001',\n",
+        " '00100010',\n",
+        " '01000010',\n",
+        " '01001110',\n",
+        " '01010101',\n",
+        " '10010010',\n",
+        " '00001000',\n",
+        " '10110011',\n",
+        " '10101101',\n",
+        " '11010010',\n",
+        " '10011000',\n",
+        " '11011100',\n",
+        " '00000101',\n",
+        " '10111011',\n",
+        " '00000000',\n",
+        " '00100100',\n",
+        " '10011000',\n",
+        " '11010110',\n",
+        " '10001101',\n",
+        " '00000110',\n",
+        " '01101011',\n",
+        " '01100010',\n",
+        " '01110111',\n",
+        " '00011100',\n",
+        " '11110011',\n",
+        " '10010011',\n",
+        " '01000000',\n",
+        " '11100100',\n",
+        " '00101101',\n",
+        " '10100010',\n",
+        " '01101100',\n",
+        " '10100100',\n",
+        " '10000001',\n",
+        " '01000100',\n",
+        " '10000000',\n",
+        " '01101011',\n",
+        " '01001000',\n",
+        " '01000100',\n",
+        " '00100001',\n",
+        " '00000100',\n",
+        " '10001101',\n",
+        " '10100110',\n",
+        " '00000110',\n",
+        " '10010010',\n",
+        " '01010001',\n",
+        " '10101011',\n",
+        " '10001100',\n",
+        " '10000010',\n",
+        " '00100011',\n",
+        " '00010110',\n",
+        " '10010100',\n",
+        " '10000110',\n",
+        " '01100111',\n",
+        " '11010101',\n",
+        " '11001000',\n",
+        " '00000010',\n",
+        " '00100100',\n",
+        " '00000111',\n",
+        " '00000000',\n",
+        " '10001110',\n",
+        " '00000001',\n",
+        " '00000111',\n",
+        " '00010110',\n",
+        " '10100010',\n",
+        " '01110001',\n",
+        " '01101101',\n",
+        " '11001000',\n",
+        " '10000011',\n",
+        " '01000101',\n",
+        " '11110010',\n",
+        " '10010001',\n",
+        " '11000000',\n",
+        " '00110011',\n",
+        " '10001110',\n",
+        " '01101110',\n",
+        " '01000011',\n",
+        " '11000000',\n",
+        " '00001001',\n",
+        " '10010010',\n",
+        " '11100100',\n",
+        " '01101011',\n",
+        " '01001001',\n",
+        " '00100000',\n",
+        " '00011010',\n",
+        " '00101110',\n",
+        " '00001100',\n",
+        " '11010110',\n",
+        " '01001001',\n",
+        " '01000101',\n",
+        " '10110001',\n",
+        " '01110010',\n",
+        " '00100011',\n",
+        " '10000111',\n",
+        " '10000100',\n",
+        " '11000100',\n",
+        " '00011000',\n",
+        " '10010110',\n",
+        " '10110100',\n",
+        " '01011000',\n",
+        " '00001011',\n",
+        " '00000010',\n",
+        " '11001000',\n",
+        " '01000110',\n",
+        " '10100000',\n",
+        " '11010001',\n",
+        " '10001011',\n",
+        " '01101101',\n",
+        " '10001000',\n",
+        " '10101101',\n",
+        " '00001100',\n",
+        " '01011011',\n",
+        " '11100101',\n",
+        " '00110111',\n",
+        " '00101100',\n",
+        " '10000101',\n",
+        " '10011100',\n",
+        " '01000110',\n",
+        " '11001010',\n",
+        " '00000010',\n",
+        " '00101000',\n",
+        " '00100001',\n",
+        " '00001000',\n",
+        " '10000100',\n",
+        " '00000001',\n",
+        " '11001011',\n",
+        " '01101001',\n",
+        " '00101101',\n",
+        " '00100000',\n",
+        " '00111000',\n",
+        " '11110001',\n",
+        " '10011010',\n",
+        " '11100101',\n",
+        " '00110111',\n",
+        " '00000100',\n",
+        " '10010011',\n",
+        " '01101100',\n",
+        " '10010111',\n",
+        " '01010010',\n",
+        " '10100010',\n",
+        " '10100011',\n",
+        " '01110101',\n",
+        " '01100110',\n",
+        " '11110111',\n",
+        " '00000000',\n",
+        " '10000100',\n",
+        " '01000100',\n",
+        " '10000100',\n",
+        " '10000111',\n",
+        " '00011101',\n",
+        " '00001111',\n",
+        " '10010001',\n",
+        " '00101010',\n",
+        " '01000010',\n",
+        " '00001110',\n",
+        " '01100100',\n",
+        " '10110001',\n",
+        " '01000001',\n",
+        " '00010110',\n",
+        " '10011100',\n",
+        " '10000001',\n",
+        " '01011001',\n",
+        " '00000000',\n",
+        " '11101001',\n",
+        " '10111000',\n",
+        " '11110011',\n",
+        " '10011100',\n",
+        " '11001000',\n",
+        " '11110110',\n",
+        " '10001001',\n",
+        " '01000000',\n",
+        " '01110011',\n",
+        " '01001111',\n",
+        " '01100010',\n",
+        " '01001101',\n",
+        " '10010101',\n",
+        " '11000011',\n",
+        " '11100011',\n",
+        " '00010010',\n",
+        " '00111001',\n",
+        " '10101101',\n",
+        " '00000100',\n",
+        " '10001100',\n",
+        " '00110010',\n",
+        " '00001101',\n",
+        " '11000100',\n",
+        " '00100001',\n",
+        " '00011100',\n",
+        " '00000000',\n",
+        " '00110010',\n",
+        " '01100010',\n",
+        " '01000000',\n",
+        " '10100111',\n",
+        " '00110100',\n",
+        " '00010101',\n",
+        " '10100000',\n",
+        " '00011100',\n",
+        " '01001001',\n",
+        " '00101000',\n",
+        " '11001110',\n",
+        " '01000100',\n",
+        " '10001011',\n",
+        " '10100100',\n",
+        " '01001001',\n",
+        " '11000100',\n",
+        " '11100010',\n",
+        " '01000000',\n",
+        " '10100110',\n",
+        " '11111001',\n",
+        " '00000000',\n",
+        " '00000100',\n",
+        " '00111010',\n",
+        " '11000110',\n",
+        " '01111001',\n",
+        " '00010110',\n",
+        " '11110010',\n",
+        " '01110000',\n",
+        " '00011101',\n",
+        " '00110001',\n",
+        " '01001100',\n",
+        " '00100001',\n",
+        " '10010011',\n",
+        " '10001000',\n",
+        " '10001000',\n",
+        " '10110110',\n",
+        " '01000000',\n",
+        " '00011010',\n",
+        " '11110001',\n",
+        " '00111000',\n",
+        " '11000110',\n",
+        " '10001101',\n",
+        " '10001000',\n",
+        " '10001000',\n",
+        " '11111001',\n",
+        " '11001100',\n",
+        " '11110001',\n",
+        " '00100101',\n",
+        " '00001110',\n",
+        " '11010101',\n",
+        " '01001100',\n",
+        " '00000010',\n",
+        " '00100000',\n",
+        " '10001000',\n",
+        " '01000101',\n",
+        " '11000110',\n",
+        " '11001101',\n",
+        " '01000100',\n",
+        " '01001000',\n",
+        " '01000010',\n",
+        " '00000000',\n",
+        " '10010010',\n",
+        " '00100001',\n",
+        " '00001000',\n",
+        " '10000001',\n",
+        " '10100010',\n",
+        " '01001110',\n",
+        " '00110000',\n",
+        " '10001000',\n",
+        " '11100110',\n",
+        " '00110110',\n",
+        " '00110011',\n",
+        " '00100010',\n",
+        " '01001110',\n",
+        " '00000011',\n",
+        " '00000000',\n",
+        " '00110010',\n",
+        " '00100011',\n",
+        " '01010001',\n",
+        " '00110101',\n",
+        " '11011010',\n",
+        " '01110001',\n",
+        " '01101000',\n",
+        " '01011000',\n",
+        " '10000010',\n",
+        " '00101110',\n",
+        " '01000000',\n",
+        " '10001001',\n",
+        " '00100110',\n",
+        " '01001001',\n",
+        " '01000101',\n",
+        " '10100110',\n",
+        " '10010011',\n",
+        " '01001110',\n",
+        " '01000000',\n",
+        " '10100001',\n",
+        " '11010010',\n",
+        " '00011010',\n",
+        " '00001000',\n",
+        " '11010000',\n",
+        " '00010101',\n",
+        " '01100100',\n",
+        " '01000100',\n",
+        " '10000000',\n",
+        " '01110111',\n",
+        " '00001001',\n",
+        " '00000101',\n",
+        " '00100101',\n",
+        " '01011000',\n",
+        " '01010000',\n",
+        " '01001100',\n",
+        " '00001101',\n",
+        " '00000100',\n",
+        " '11100010',\n",
+        " '11010100',\n",
+        " '00000000',\n",
+        " '11001101',\n",
+        " '00111000',\n",
+        " '00100110',\n",
+        " '11010110',\n",
+        " '00100000',\n",
+        " '00101101',\n",
+        " '01000101',\n",
+        " '00001010',\n",
+        " '01000110',\n",
+        " '11000110',\n",
+        " '01101110',\n",
+        " '10011100',\n",
+        " '11100010',\n",
+        " '11011100',\n",
+        " '00111100',\n",
+        " '00001000',\n",
+        " '00011110',\n",
+        " '00010000',\n",
+        " '01000011',\n",
+        " '00001101',\n",
+        " '10101100',\n",
+        " '00100100',\n",
+        " '01001110',\n",
+        " '01110100',\n",
+        " '00111010',\n",
+        " '01110001',\n",
+        " '00100100',\n",
+        " '11000100',\n",
+        " '01001001',\n",
+        " '01001000',\n",
+        " '10001000',\n",
+        " '01011000',\n",
+        " '11100010',\n",
+        " '00010001',\n",
+        " '00010001',\n",
+        " '11110001',\n",
+        " '01000001',\n",
+        " '10000000',\n",
+        " '01001001',\n",
+        " '00111000',\n",
+        " '00000011',\n",
+        " '01011100',\n",
+        " '11000000',\n",
+        " '01110100',\n",
+        " '00010010',\n",
+        " '10100100',\n",
+        " '00001100',\n",
+        " '01000100',\n",
+        " '01000110',\n",
+        " '10101100',\n",
+        " '10010101',\n",
+        " '00000100',\n",
+        " '10000000',\n",
+        " '00110110',\n",
+        " '10110110',\n",
+        " '01100111',\n",
+        " '01101001',\n",
+        " '00010001',\n",
+        " '00110010',\n",
+        " '00100001',\n",
+        " '00010010',\n",
+        " '00000001',\n",
+        " '11101000',\n",
+        " '01110011',\n",
+        " '11010000',\n",
+        " '00001100',\n",
+        " '01110011',\n",
+        " '01001000',\n",
+        " '01011100',\n",
+        " '00011101',\n",
+        " '01101110',\n",
+        " '01101101',\n",
+        " '10001110',\n",
+        " '00000010',\n",
+        " '00010000',\n",
+        " '10000100',\n",
+        " '01110100',\n",
+        " '10011010',\n",
+        " '01000010',\n",
+        " '01100000',\n",
+        " '00001101',\n",
+        " '00100010',\n",
+        " '00100100',\n",
+        " '01001001',\n",
+        " '10111000',\n",
+        " '11011000',\n",
+        " '01000100',\n",
+        " '11001001',\n",
+        " '00010101',\n",
+        " '10100000',\n",
+        " '11110011',\n",
+        " '00010011',\n",
+        " '00010000',\n",
+        " '11100100',\n",
+        " '01000100',\n",
+        " '00010001',\n",
+        " '00101000',\n",
+        " '11011100',\n",
+        " '01001001',\n",
+        " '10110101',\n",
+        " '00000111',\n",
+        " '10011011',\n",
+        " '01001000',\n",
+        " '01110100',\n",
+        " '00100001',\n",
+        " '01000000',\n",
+        " '01100100',\n",
+        " '01000110',\n",
+        " '11000110',\n",
+        " '10000000',\n",
+        " '01100000',\n",
+        " '01101000',\n",
+        " '00011100',\n",
+        " '00111001',\n",
+        " '00010010',\n",
+        " '01000100',\n",
+        " '01000110',\n",
+        " '00000100',\n",
+        " '10111001',\n",
+        " '00100000',\n",
+        " '00001101',\n",
+        " '10011000',\n",
+        " '00011100',\n",
+        " '10111001',\n",
+        " '10001001',\n",
+        " '00011000',\n",
+        " '01100010',\n",
+        " '00000110',\n",
+        " '01000110',\n",
+        " '11001110',\n",
+        " '01100111',\n",
+        " '01011100',\n",
+        " '11011010',\n",
+        " '00111011',\n",
+        " '11001110',\n",
+        " '01110011',\n",
+        " '01100000',\n",
+        " '00100100',\n",
+        " '00010101',\n",
+        " '10010000',\n",
+        " '00000100',\n",
+        " '00100100',\n",
+        " '11010110',\n",
+        " '10001001',\n",
+        " '00100010',\n",
+        " '00110011',\n",
+        " '10110100',\n",
+        " '11101001',\n",
+        " '00010111',\n",
+        " '10010100',\n",
+        " '00001000',\n",
+        " '01011100',\n",
+        " '11001000',\n",
+        " '00000111',\n",
+        " '00010000',\n",
+        " '10100100',\n",
+        " '01000100',\n",
+        " '10010000',\n",
+        " '10000100',\n",
+        " '01100001',\n",
+        " '00010010',\n",
+        " '01000010',\n",
+        " '10101011',\n",
+        " '00111011',\n",
+        " '00100010',\n",
+        " '01001111',\n",
+        " '10001000',\n",
+        " '01100100',\n",
+        " '10000110',\n",
+        " '10010001',\n",
+        " '01101111',\n",
+        " '00111100',\n",
+        " '01011000',\n",
+        " '11100011',\n",
+        " '10100000',\n",
+        " '00000110',\n",
+        " '01101010',\n",
+        " '11100100',\n",
+        " '10111010',\n",
+        " '10100010',\n",
+        " '01101110',\n",
+        " '00011000',\n",
+        " '00010001',\n",
+        " '00100001',\n",
+        " '10111101',\n",
+        " '10111000',\n",
+        " '00011000',\n",
+        " '11000100',\n",
+        " '00000000',\n",
+        " '00111010',\n",
+        " '01100000',\n",
+        " '00111000',\n",
+        " '10001000',\n",
+        " '01111001',\n",
+        " '11010000',\n",
+        " '10001000',\n",
+        " '10001100',\n",
+        " '01001000',\n",
+        " '00110000',\n",
+        " '00010000',\n",
+        " '01010011',\n",
+        " '01110100',\n",
+        " '10011011',\n",
+        " '00010011',\n",
+        " '11010101',\n",
+        " '10100000',\n",
+        " '01110000',\n",
+        " '11011100',\n",
+        " '10000101',\n",
+        " '00111000',\n",
+        " '10010011',\n",
+        " '00010010',\n",
+        " '00011010',\n",
+        " '01000110',\n",
+        " '10010010',\n",
+        " '10010001',\n",
+        " '10001010',\n",
+        " '00100100',\n",
+        " '00110001',\n",
+        " '00111010',\n",
+        " '10010001',\n",
+        " '00000001',\n",
+        " '10010111',\n",
+        " '01010100',\n",
+        " '00110001',\n",
+        " '10010100',\n",
+        " '01111011',\n",
+        " '11000110',\n",
+        " '10001001',\n",
+        " '10010000',\n",
+        " '00001101',\n",
+        " '00011010',\n",
+        " '00100110',\n",
+        " '11000000',\n",
+        " '00000001',\n",
+        " '00000000',\n",
+        " '01000001',\n",
+        " '00010110',\n",
+        " '01000111',\n",
+        " '00110101',\n",
+        " '10110001',\n",
+        " '00100001',\n",
+        " '00000110',\n",
+        " '00000111',\n",
+        " '00001100',\n",
+        " '00101110',\n",
+        " '01000101',\n",
+        " '00011000',\n",
+        " '01000101',\n",
+        " '11000101',\n",
+        " '11010011',\n",
+        " '01101100',\n",
+        " '11100111',\n",
+        " '00110011',\n",
+        " '00100010',\n",
+        " '01101101',\n",
+        " '10001010',\n",
+        " '11100010',\n",
+        " '10000010',\n",
+        " '00110101',\n",
+        " '10101000',\n",
+        " '01010010',\n",
+        " '11110001',\n",
+        " '00100111',\n",
+        " '00011010',\n",
+        " '01010011',\n",
+        " '00010010',\n",
+        " '00001011',\n",
+        " '10000111',\n",
+        " '10100001',\n",
+        " '11110101',\n",
+        " '01000000',\n",
+        " '11101011',\n",
+        " '00101001',\n",
+        " '00110001',\n",
+        " '10100010',\n",
+        " '00100010',\n",
+        " '00000001',\n",
+        " '00100100',\n",
+        " '00100010',\n",
+        " '01110010',\n",
+        " '01101011',\n",
+        " '01001000',\n",
+        " '00001001',\n",
+        " '10100010',\n",
+        " '01101110',\n",
+        " '01100100',\n",
+        " '01001110',\n",
+        " '00010110',\n",
+        " '10011101',\n",
+        " '10101000',\n",
+        " '00011011',\n",
+        " '11100010',\n",
+        " '10111000',\n",
+        " '10010001',\n",
+        " '11101110',\n",
+        " '11000011',\n",
+        " '01000000',\n",
+        " '10111001',\n",
+        " '00110110',\n",
+        " '10110010',\n",
+        " '00011011',\n",
+        " '10100100',\n",
+        " '00000110',\n",
+        " '10010010',\n",
+        " '01001000',\n",
+        " '10011001',\n",
+        " '01000000',\n",
+        " '01000110',\n",
+        " '10101110',\n",
+        " '01100110',\n",
+        " '01110000',\n",
+        " '11000001',\n",
+        " '00111001',\n",
+        " '10010000',\n",
+        " '10000000',\n",
+        " '01000100',\n",
+        " '10010000',\n",
+        " '00101000',\n",
+        " '10111001',\n",
+        " '11010011',\n",
+        " '01100100',\n",
+        " '10011000',\n",
+        " '01010011',\n",
+        " '10000010',\n",
+        " '10000100',\n",
+        " '01101010',\n",
+        " '00100011',\n",
+        " '00100011',\n",
+        " '00011111',\n",
+        " '00001101',\n",
+        " '10110001',\n",
+        " '00010000',\n",
+        " '11011001',\n",
+        " '10010000',\n",
+        " '11001110',\n",
+        " '00011010',\n",
+        " '00010000',\n",
+        " '10110010',\n",
+        " '00010000',\n",
+        " '01110011',\n",
+        " '00000100',\n",
+        " '01011010',\n",
+        " '11101001',\n",
+        " '01000100',\n",
+        " '01000000',\n",
+        " '00000001',\n",
+        " '00011010',\n",
+        " '00111001',\n",
+        " '10001010',\n",
+        " '10010011',\n",
+        " '10011001',\n",
+        " '01000111',\n",
+        " '00010000',\n",
+        " '10010000',\n",
+        " '11110011',\n",
+        " '01100001',\n",
+        " '01010001',\n",
+        " '00110111',\n",
+        " '00111010',\n",
+        " '00100011',\n",
+        " '10001101',\n",
+        " '00010000',\n",
+        " '00000111',\n",
+        " '01100000',\n",
+        " '00000000',\n",
+        " '01101011',\n",
+        " '10001000',\n",
+        " '01000101',\n",
+        " '10001101',\n",
+        " '11001000',\n",
+        " '01101001',\n",
+        " '11101001',\n",
+        " '00100011',\n",
+        " '00100010',\n",
+        " '01100100',\n",
+        " '00000011',\n",
+        " '10100010',\n",
+        " '10000010',\n",
+        " '00001000',\n",
+        " '10010101',\n",
+        " '00100011',\n",
+        " '00011011',\n",
+        " '00111000',\n",
+        " '10000010',\n",
+        " '01101100',\n",
+        " '10011001',\n",
+        " '01011110',\n",
+        " '01001010',\n",
+        " '00001010',\n",
+        " '10010011',\n",
+        " '00000001',\n",
+        " '11000000',\n",
+        " '11001001',\n",
+        " '10110100',\n",
+        " '10010110',\n",
+        " '01110011',\n",
+        " '01010000',\n",
+        " '00100001',\n",
+        " '10010000',\n",
+        " '10001100',\n",
+        " '10001011',\n",
+        " '11000000',\n",
+        " '11100101',\n",
+        " '10100010',\n",
+        " '01101110',\n",
+        " '00000001',\n",
+        " '01001001',\n",
+        " '00100111',\n",
+        " '00111010',\n",
+        " '01010010',\n",
+        " '01111001',\n",
+        " '01011010',\n",
+        " '10110110',\n",
+        " '10010000',\n",
+        " '10001110',\n",
+        " '01110100',\n",
+        " '11000000',\n",
+        " '00100011',\n",
+        " '10101101',\n",
+        " '01101000',\n",
+        " '10001100',\n",
+        " '10100101',\n",
+        " '01111001',\n",
+        " '00111000',\n",
+        " '10101111',\n",
+        " '00011001',\n",
+        " '01100110',\n",
+        " '01011000',\n",
+        " '10110101',\n",
+        " '11110001',\n",
+        " '00000001',\n",
+        " '00001000',\n",
+        " '00001100',\n",
+        " '00101101',\n",
+        " '11001101',\n",
+        " '00000001',\n",
+        " '11000001',\n",
+        " '01001001',\n",
+        " '10110110',\n",
+        " '01100010',\n",
+        " '01101100',\n",
+        " '11000100',\n",
+        " '00010000',\n",
+        " '01011001',\n",
+        " '01101110',\n",
+        " '01101001',\n",
+        " '00001011',\n",
+        " '00110111',\n",
+        " '00000010',\n",
+        " '01100100',\n",
+        " '00010101',\n",
+        " '01011101',\n",
+        " '01100001',\n",
+        " '10101110',\n",
+        " '11010101',\n",
+        " '01101011',\n",
+        " '01001000',\n",
+        " '01000001',\n",
+        " '11001101',\n",
+        " '00001000',\n",
+        " '01110010',\n",
+        " '00001101',\n",
+        " '00110010',\n",
+        " '00011001',\n",
+        " '10010011',\n",
+        " '00000001',\n",
+        " '11001000',\n",
+        " '01000000',\n",
+        " '01001100',\n",
+        " '10000101',\n",
+        " '00000000',\n",
+        " '00001000',\n",
+        " '11111000',\n",
+        " '11000100',\n",
+        " '01010001',\n",
+        " '01110100',\n",
+        " '10001110',\n",
+        " '01000010',\n",
+        " '01000110',\n",
+        " '00101111',\n",
+        " '00000010',\n",
+        " '11001000',\n",
+        " '00110100',\n",
+        " '00010001',\n",
+        " '10100110',\n",
+        " '01000000',\n",
+        " '11100011',\n",
+        " '00010010',\n",
+        " '00111010',\n",
+        " '10000111',\n",
+        " '10101001',\n",
+        " '00100101',\n",
+        " '01001000',\n",
+        " '10111011',\n",
+        " '00010011',\n",
+        " '01101100',\n",
+        " '10011101',\n",
+        " '00100100',\n",
+        " '00110110',\n",
+        " '10001000',\n",
+        " '10100010',\n",
+        " '00011100',\n",
+        " '01010111',\n",
+        " '11000100',\n",
+        " '01100000']"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[(int(c, 2)) for c in chunks(c8b, 8)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 20,
+       "text": [
+        "[1,\n",
+        " 68,\n",
+        " 2,\n",
+        " 81,\n",
+        " 211,\n",
+        " 152,\n",
+        " 5,\n",
+        " 51,\n",
+        " 197,\n",
+        " 14,\n",
+        " 89,\n",
+        " 38,\n",
+        " 41,\n",
+        " 18,\n",
+        " 51,\n",
+        " 60,\n",
+        " 143,\n",
+        " 56,\n",
+        " 128,\n",
+        " 234,\n",
+        " 195,\n",
+        " 162,\n",
+        " 242,\n",
+        " 196,\n",
+        " 196,\n",
+        " 112,\n",
+        " 6,\n",
+        " 247,\n",
+        " 165,\n",
+        " 166,\n",
+        " 92,\n",
+        " 201,\n",
+        " 22,\n",
+        " 144,\n",
+        " 164,\n",
+        " 113,\n",
+        " 80,\n",
+        " 232,\n",
+        " 206,\n",
+        " 67,\n",
+        " 27,\n",
+        " 136,\n",
+        " 74,\n",
+        " 50,\n",
+        " 66,\n",
+        " 141,\n",
+        " 9,\n",
+        " 22,\n",
+        " 148,\n",
+        " 147,\n",
+        " 88,\n",
+        " 0,\n",
+        " 89,\n",
+        " 78,\n",
+        " 200,\n",
+        " 35,\n",
+        " 103,\n",
+        " 26,\n",
+        " 185,\n",
+        " 205,\n",
+        " 36,\n",
+        " 79,\n",
+        " 64,\n",
+        " 30,\n",
+        " 32,\n",
+        " 169,\n",
+        " 34,\n",
+        " 66,\n",
+        " 78,\n",
+        " 85,\n",
+        " 146,\n",
+        " 8,\n",
+        " 179,\n",
+        " 173,\n",
+        " 210,\n",
+        " 152,\n",
+        " 220,\n",
+        " 5,\n",
+        " 187,\n",
+        " 0,\n",
+        " 36,\n",
+        " 152,\n",
+        " 214,\n",
+        " 141,\n",
+        " 6,\n",
+        " 107,\n",
+        " 98,\n",
+        " 119,\n",
+        " 28,\n",
+        " 243,\n",
+        " 147,\n",
+        " 64,\n",
+        " 228,\n",
+        " 45,\n",
+        " 162,\n",
+        " 108,\n",
+        " 164,\n",
+        " 129,\n",
+        " 68,\n",
+        " 128,\n",
+        " 107,\n",
+        " 72,\n",
+        " 68,\n",
+        " 33,\n",
+        " 4,\n",
+        " 141,\n",
+        " 166,\n",
+        " 6,\n",
+        " 146,\n",
+        " 81,\n",
+        " 171,\n",
+        " 140,\n",
+        " 130,\n",
+        " 35,\n",
+        " 22,\n",
+        " 148,\n",
+        " 134,\n",
+        " 103,\n",
+        " 213,\n",
+        " 200,\n",
+        " 2,\n",
+        " 36,\n",
+        " 7,\n",
+        " 0,\n",
+        " 142,\n",
+        " 1,\n",
+        " 7,\n",
+        " 22,\n",
+        " 162,\n",
+        " 113,\n",
+        " 109,\n",
+        " 200,\n",
+        " 131,\n",
+        " 69,\n",
+        " 242,\n",
+        " 145,\n",
+        " 192,\n",
+        " 51,\n",
+        " 142,\n",
+        " 110,\n",
+        " 67,\n",
+        " 192,\n",
+        " 9,\n",
+        " 146,\n",
+        " 228,\n",
+        " 107,\n",
+        " 73,\n",
+        " 32,\n",
+        " 26,\n",
+        " 46,\n",
+        " 12,\n",
+        " 214,\n",
+        " 73,\n",
+        " 69,\n",
+        " 177,\n",
+        " 114,\n",
+        " 35,\n",
+        " 135,\n",
+        " 132,\n",
+        " 196,\n",
+        " 24,\n",
+        " 150,\n",
+        " 180,\n",
+        " 88,\n",
+        " 11,\n",
+        " 2,\n",
+        " 200,\n",
+        " 70,\n",
+        " 160,\n",
+        " 209,\n",
+        " 139,\n",
+        " 109,\n",
+        " 136,\n",
+        " 173,\n",
+        " 12,\n",
+        " 91,\n",
+        " 229,\n",
+        " 55,\n",
+        " 44,\n",
+        " 133,\n",
+        " 156,\n",
+        " 70,\n",
+        " 202,\n",
+        " 2,\n",
+        " 40,\n",
+        " 33,\n",
+        " 8,\n",
+        " 132,\n",
+        " 1,\n",
+        " 203,\n",
+        " 105,\n",
+        " 45,\n",
+        " 32,\n",
+        " 56,\n",
+        " 241,\n",
+        " 154,\n",
+        " 229,\n",
+        " 55,\n",
+        " 4,\n",
+        " 147,\n",
+        " 108,\n",
+        " 151,\n",
+        " 82,\n",
+        " 162,\n",
+        " 163,\n",
+        " 117,\n",
+        " 102,\n",
+        " 247,\n",
+        " 0,\n",
+        " 132,\n",
+        " 68,\n",
+        " 132,\n",
+        " 135,\n",
+        " 29,\n",
+        " 15,\n",
+        " 145,\n",
+        " 42,\n",
+        " 66,\n",
+        " 14,\n",
+        " 100,\n",
+        " 177,\n",
+        " 65,\n",
+        " 22,\n",
+        " 156,\n",
+        " 129,\n",
+        " 89,\n",
+        " 0,\n",
+        " 233,\n",
+        " 184,\n",
+        " 243,\n",
+        " 156,\n",
+        " 200,\n",
+        " 246,\n",
+        " 137,\n",
+        " 64,\n",
+        " 115,\n",
+        " 79,\n",
+        " 98,\n",
+        " 77,\n",
+        " 149,\n",
+        " 195,\n",
+        " 227,\n",
+        " 18,\n",
+        " 57,\n",
+        " 173,\n",
+        " 4,\n",
+        " 140,\n",
+        " 50,\n",
+        " 13,\n",
+        " 196,\n",
+        " 33,\n",
+        " 28,\n",
+        " 0,\n",
+        " 50,\n",
+        " 98,\n",
+        " 64,\n",
+        " 167,\n",
+        " 52,\n",
+        " 21,\n",
+        " 160,\n",
+        " 28,\n",
+        " 73,\n",
+        " 40,\n",
+        " 206,\n",
+        " 68,\n",
+        " 139,\n",
+        " 164,\n",
+        " 73,\n",
+        " 196,\n",
+        " 226,\n",
+        " 64,\n",
+        " 166,\n",
+        " 249,\n",
+        " 0,\n",
+        " 4,\n",
+        " 58,\n",
+        " 198,\n",
+        " 121,\n",
+        " 22,\n",
+        " 242,\n",
+        " 112,\n",
+        " 29,\n",
+        " 49,\n",
+        " 76,\n",
+        " 33,\n",
+        " 147,\n",
+        " 136,\n",
+        " 136,\n",
+        " 182,\n",
+        " 64,\n",
+        " 26,\n",
+        " 241,\n",
+        " 56,\n",
+        " 198,\n",
+        " 141,\n",
+        " 136,\n",
+        " 136,\n",
+        " 249,\n",
+        " 204,\n",
+        " 241,\n",
+        " 37,\n",
+        " 14,\n",
+        " 213,\n",
+        " 76,\n",
+        " 2,\n",
+        " 32,\n",
+        " 136,\n",
+        " 69,\n",
+        " 198,\n",
+        " 205,\n",
+        " 68,\n",
+        " 72,\n",
+        " 66,\n",
+        " 0,\n",
+        " 146,\n",
+        " 33,\n",
+        " 8,\n",
+        " 129,\n",
+        " 162,\n",
+        " 78,\n",
+        " 48,\n",
+        " 136,\n",
+        " 230,\n",
+        " 54,\n",
+        " 51,\n",
+        " 34,\n",
+        " 78,\n",
+        " 3,\n",
+        " 0,\n",
+        " 50,\n",
+        " 35,\n",
+        " 81,\n",
+        " 53,\n",
+        " 218,\n",
+        " 113,\n",
+        " 104,\n",
+        " 88,\n",
+        " 130,\n",
+        " 46,\n",
+        " 64,\n",
+        " 137,\n",
+        " 38,\n",
+        " 73,\n",
+        " 69,\n",
+        " 166,\n",
+        " 147,\n",
+        " 78,\n",
+        " 64,\n",
+        " 161,\n",
+        " 210,\n",
+        " 26,\n",
+        " 8,\n",
+        " 208,\n",
+        " 21,\n",
+        " 100,\n",
+        " 68,\n",
+        " 128,\n",
+        " 119,\n",
+        " 9,\n",
+        " 5,\n",
+        " 37,\n",
+        " 88,\n",
+        " 80,\n",
+        " 76,\n",
+        " 13,\n",
+        " 4,\n",
+        " 226,\n",
+        " 212,\n",
+        " 0,\n",
+        " 205,\n",
+        " 56,\n",
+        " 38,\n",
+        " 214,\n",
+        " 32,\n",
+        " 45,\n",
+        " 69,\n",
+        " 10,\n",
+        " 70,\n",
+        " 198,\n",
+        " 110,\n",
+        " 156,\n",
+        " 226,\n",
+        " 220,\n",
+        " 60,\n",
+        " 8,\n",
+        " 30,\n",
+        " 16,\n",
+        " 67,\n",
+        " 13,\n",
+        " 172,\n",
+        " 36,\n",
+        " 78,\n",
+        " 116,\n",
+        " 58,\n",
+        " 113,\n",
+        " 36,\n",
+        " 196,\n",
+        " 73,\n",
+        " 72,\n",
+        " 136,\n",
+        " 88,\n",
+        " 226,\n",
+        " 17,\n",
+        " 17,\n",
+        " 241,\n",
+        " 65,\n",
+        " 128,\n",
+        " 73,\n",
+        " 56,\n",
+        " 3,\n",
+        " 92,\n",
+        " 192,\n",
+        " 116,\n",
+        " 18,\n",
+        " 164,\n",
+        " 12,\n",
+        " 68,\n",
+        " 70,\n",
+        " 172,\n",
+        " 149,\n",
+        " 4,\n",
+        " 128,\n",
+        " 54,\n",
+        " 182,\n",
+        " 103,\n",
+        " 105,\n",
+        " 17,\n",
+        " 50,\n",
+        " 33,\n",
+        " 18,\n",
+        " 1,\n",
+        " 232,\n",
+        " 115,\n",
+        " 208,\n",
+        " 12,\n",
+        " 115,\n",
+        " 72,\n",
+        " 92,\n",
+        " 29,\n",
+        " 110,\n",
+        " 109,\n",
+        " 142,\n",
+        " 2,\n",
+        " 16,\n",
+        " 132,\n",
+        " 116,\n",
+        " 154,\n",
+        " 66,\n",
+        " 96,\n",
+        " 13,\n",
+        " 34,\n",
+        " 36,\n",
+        " 73,\n",
+        " 184,\n",
+        " 216,\n",
+        " 68,\n",
+        " 201,\n",
+        " 21,\n",
+        " 160,\n",
+        " 243,\n",
+        " 19,\n",
+        " 16,\n",
+        " 228,\n",
+        " 68,\n",
+        " 17,\n",
+        " 40,\n",
+        " 220,\n",
+        " 73,\n",
+        " 181,\n",
+        " 7,\n",
+        " 155,\n",
+        " 72,\n",
+        " 116,\n",
+        " 33,\n",
+        " 64,\n",
+        " 100,\n",
+        " 70,\n",
+        " 198,\n",
+        " 128,\n",
+        " 96,\n",
+        " 104,\n",
+        " 28,\n",
+        " 57,\n",
+        " 18,\n",
+        " 68,\n",
+        " 70,\n",
+        " 4,\n",
+        " 185,\n",
+        " 32,\n",
+        " 13,\n",
+        " 152,\n",
+        " 28,\n",
+        " 185,\n",
+        " 137,\n",
+        " 24,\n",
+        " 98,\n",
+        " 6,\n",
+        " 70,\n",
+        " 206,\n",
+        " 103,\n",
+        " 92,\n",
+        " 218,\n",
+        " 59,\n",
+        " 206,\n",
+        " 115,\n",
+        " 96,\n",
+        " 36,\n",
+        " 21,\n",
+        " 144,\n",
+        " 4,\n",
+        " 36,\n",
+        " 214,\n",
+        " 137,\n",
+        " 34,\n",
+        " 51,\n",
+        " 180,\n",
+        " 233,\n",
+        " 23,\n",
+        " 148,\n",
+        " 8,\n",
+        " 92,\n",
+        " 200,\n",
+        " 7,\n",
+        " 16,\n",
+        " 164,\n",
+        " 68,\n",
+        " 144,\n",
+        " 132,\n",
+        " 97,\n",
+        " 18,\n",
+        " 66,\n",
+        " 171,\n",
+        " 59,\n",
+        " 34,\n",
+        " 79,\n",
+        " 136,\n",
+        " 100,\n",
+        " 134,\n",
+        " 145,\n",
+        " 111,\n",
+        " 60,\n",
+        " 88,\n",
+        " 227,\n",
+        " 160,\n",
+        " 6,\n",
+        " 106,\n",
+        " 228,\n",
+        " 186,\n",
+        " 162,\n",
+        " 110,\n",
+        " 24,\n",
+        " 17,\n",
+        " 33,\n",
+        " 189,\n",
+        " 184,\n",
+        " 24,\n",
+        " 196,\n",
+        " 0,\n",
+        " 58,\n",
+        " 96,\n",
+        " 56,\n",
+        " 136,\n",
+        " 121,\n",
+        " 208,\n",
+        " 136,\n",
+        " 140,\n",
+        " 72,\n",
+        " 48,\n",
+        " 16,\n",
+        " 83,\n",
+        " 116,\n",
+        " 155,\n",
+        " 19,\n",
+        " 213,\n",
+        " 160,\n",
+        " 112,\n",
+        " 220,\n",
+        " 133,\n",
+        " 56,\n",
+        " 147,\n",
+        " 18,\n",
+        " 26,\n",
+        " 70,\n",
+        " 146,\n",
+        " 145,\n",
+        " 138,\n",
+        " 36,\n",
+        " 49,\n",
+        " 58,\n",
+        " 145,\n",
+        " 1,\n",
+        " 151,\n",
+        " 84,\n",
+        " 49,\n",
+        " 148,\n",
+        " 123,\n",
+        " 198,\n",
+        " 137,\n",
+        " 144,\n",
+        " 13,\n",
+        " 26,\n",
+        " 38,\n",
+        " 192,\n",
+        " 1,\n",
+        " 0,\n",
+        " 65,\n",
+        " 22,\n",
+        " 71,\n",
+        " 53,\n",
+        " 177,\n",
+        " 33,\n",
+        " 6,\n",
+        " 7,\n",
+        " 12,\n",
+        " 46,\n",
+        " 69,\n",
+        " 24,\n",
+        " 69,\n",
+        " 197,\n",
+        " 211,\n",
+        " 108,\n",
+        " 231,\n",
+        " 51,\n",
+        " 34,\n",
+        " 109,\n",
+        " 138,\n",
+        " 226,\n",
+        " 130,\n",
+        " 53,\n",
+        " 168,\n",
+        " 82,\n",
+        " 241,\n",
+        " 39,\n",
+        " 26,\n",
+        " 83,\n",
+        " 18,\n",
+        " 11,\n",
+        " 135,\n",
+        " 161,\n",
+        " 245,\n",
+        " 64,\n",
+        " 235,\n",
+        " 41,\n",
+        " 49,\n",
+        " 162,\n",
+        " 34,\n",
+        " 1,\n",
+        " 36,\n",
+        " 34,\n",
+        " 114,\n",
+        " 107,\n",
+        " 72,\n",
+        " 9,\n",
+        " 162,\n",
+        " 110,\n",
+        " 100,\n",
+        " 78,\n",
+        " 22,\n",
+        " 157,\n",
+        " 168,\n",
+        " 27,\n",
+        " 226,\n",
+        " 184,\n",
+        " 145,\n",
+        " 238,\n",
+        " 195,\n",
+        " 64,\n",
+        " 185,\n",
+        " 54,\n",
+        " 178,\n",
+        " 27,\n",
+        " 164,\n",
+        " 6,\n",
+        " 146,\n",
+        " 72,\n",
+        " 153,\n",
+        " 64,\n",
+        " 70,\n",
+        " 174,\n",
+        " 102,\n",
+        " 112,\n",
+        " 193,\n",
+        " 57,\n",
+        " 144,\n",
+        " 128,\n",
+        " 68,\n",
+        " 144,\n",
+        " 40,\n",
+        " 185,\n",
+        " 211,\n",
+        " 100,\n",
+        " 152,\n",
+        " 83,\n",
+        " 130,\n",
+        " 132,\n",
+        " 106,\n",
+        " 35,\n",
+        " 35,\n",
+        " 31,\n",
+        " 13,\n",
+        " 177,\n",
+        " 16,\n",
+        " 217,\n",
+        " 144,\n",
+        " 206,\n",
+        " 26,\n",
+        " 16,\n",
+        " 178,\n",
+        " 16,\n",
+        " 115,\n",
+        " 4,\n",
+        " 90,\n",
+        " 233,\n",
+        " 68,\n",
+        " 64,\n",
+        " 1,\n",
+        " 26,\n",
+        " 57,\n",
+        " 138,\n",
+        " 147,\n",
+        " 153,\n",
+        " 71,\n",
+        " 16,\n",
+        " 144,\n",
+        " 243,\n",
+        " 97,\n",
+        " 81,\n",
+        " 55,\n",
+        " 58,\n",
+        " 35,\n",
+        " 141,\n",
+        " 16,\n",
+        " 7,\n",
+        " 96,\n",
+        " 0,\n",
+        " 107,\n",
+        " 136,\n",
+        " 69,\n",
+        " 141,\n",
+        " 200,\n",
+        " 105,\n",
+        " 233,\n",
+        " 35,\n",
+        " 34,\n",
+        " 100,\n",
+        " 3,\n",
+        " 162,\n",
+        " 130,\n",
+        " 8,\n",
+        " 149,\n",
+        " 35,\n",
+        " 27,\n",
+        " 56,\n",
+        " 130,\n",
+        " 108,\n",
+        " 153,\n",
+        " 94,\n",
+        " 74,\n",
+        " 10,\n",
+        " 147,\n",
+        " 1,\n",
+        " 192,\n",
+        " 201,\n",
+        " 180,\n",
+        " 150,\n",
+        " 115,\n",
+        " 80,\n",
+        " 33,\n",
+        " 144,\n",
+        " 140,\n",
+        " 139,\n",
+        " 192,\n",
+        " 229,\n",
+        " 162,\n",
+        " 110,\n",
+        " 1,\n",
+        " 73,\n",
+        " 39,\n",
+        " 58,\n",
+        " 82,\n",
+        " 121,\n",
+        " 90,\n",
+        " 182,\n",
+        " 144,\n",
+        " 142,\n",
+        " 116,\n",
+        " 192,\n",
+        " 35,\n",
+        " 173,\n",
+        " 104,\n",
+        " 140,\n",
+        " 165,\n",
+        " 121,\n",
+        " 56,\n",
+        " 175,\n",
+        " 25,\n",
+        " 102,\n",
+        " 88,\n",
+        " 181,\n",
+        " 241,\n",
+        " 1,\n",
+        " 8,\n",
+        " 12,\n",
+        " 45,\n",
+        " 205,\n",
+        " 1,\n",
+        " 193,\n",
+        " 73,\n",
+        " 182,\n",
+        " 98,\n",
+        " 108,\n",
+        " 196,\n",
+        " 16,\n",
+        " 89,\n",
+        " 110,\n",
+        " 105,\n",
+        " 11,\n",
+        " 55,\n",
+        " 2,\n",
+        " 100,\n",
+        " 21,\n",
+        " 93,\n",
+        " 97,\n",
+        " 174,\n",
+        " 213,\n",
+        " 107,\n",
+        " 72,\n",
+        " 65,\n",
+        " 205,\n",
+        " 8,\n",
+        " 114,\n",
+        " 13,\n",
+        " 50,\n",
+        " 25,\n",
+        " 147,\n",
+        " 1,\n",
+        " 200,\n",
+        " 64,\n",
+        " 76,\n",
+        " 133,\n",
+        " 0,\n",
+        " 8,\n",
+        " 248,\n",
+        " 196,\n",
+        " 81,\n",
+        " 116,\n",
+        " 142,\n",
+        " 66,\n",
+        " 70,\n",
+        " 47,\n",
+        " 2,\n",
+        " 200,\n",
+        " 52,\n",
+        " 17,\n",
+        " 166,\n",
+        " 64,\n",
+        " 227,\n",
+        " 18,\n",
+        " 58,\n",
+        " 135,\n",
+        " 169,\n",
+        " 37,\n",
+        " 72,\n",
+        " 187,\n",
+        " 19,\n",
+        " 108,\n",
+        " 157,\n",
+        " 36,\n",
+        " 54,\n",
+        " 136,\n",
+        " 162,\n",
+        " 28,\n",
+        " 87,\n",
+        " 196,\n",
+        " 96]"
+       ]
+      }
+     ],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "bytes([(int(c, 2)) for c in chunks(c8b, 8)])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "b'\\x01D\\x02Q\\xd3\\x98\\x053\\xc5\\x0eY&)\\x123<\\x8f8\\x80\\xea\\xc3\\xa2\\xf2\\xc4\\xc4p\\x06\\xf7\\xa5\\xa6\\\\\\xc9\\x16\\x90\\xa4qP\\xe8\\xceC\\x1b\\x88J2B\\x8d\\t\\x16\\x94\\x93X\\x00YN\\xc8#g\\x1a\\xb9\\xcd$O@\\x1e \\xa9\"BNU\\x92\\x08\\xb3\\xad\\xd2\\x98\\xdc\\x05\\xbb\\x00$\\x98\\xd6\\x8d\\x06kbw\\x1c\\xf3\\x93@\\xe4-\\xa2l\\xa4\\x81D\\x80kHD!\\x04\\x8d\\xa6\\x06\\x92Q\\xab\\x8c\\x82#\\x16\\x94\\x86g\\xd5\\xc8\\x02$\\x07\\x00\\x8e\\x01\\x07\\x16\\xa2qm\\xc8\\x83E\\xf2\\x91\\xc03\\x8enC\\xc0\\t\\x92\\xe4kI \\x1a.\\x0c\\xd6IE\\xb1r#\\x87\\x84\\xc4\\x18\\x96\\xb4X\\x0b\\x02\\xc8F\\xa0\\xd1\\x8bm\\x88\\xad\\x0c[\\xe57,\\x85\\x9cF\\xca\\x02(!\\x08\\x84\\x01\\xcbi- 8\\xf1\\x9a\\xe57\\x04\\x93l\\x97R\\xa2\\xa3uf\\xf7\\x00\\x84D\\x84\\x87\\x1d\\x0f\\x91*B\\x0ed\\xb1A\\x16\\x9c\\x81Y\\x00\\xe9\\xb8\\xf3\\x9c\\xc8\\xf6\\x89@sObM\\x95\\xc3\\xe3\\x129\\xad\\x04\\x8c2\\r\\xc4!\\x1c\\x002b@\\xa74\\x15\\xa0\\x1cI(\\xceD\\x8b\\xa4I\\xc4\\xe2@\\xa6\\xf9\\x00\\x04:\\xc6y\\x16\\xf2p\\x1d1L!\\x93\\x88\\x88\\xb6@\\x1a\\xf18\\xc6\\x8d\\x88\\x88\\xf9\\xcc\\xf1%\\x0e\\xd5L\\x02 \\x88E\\xc6\\xcdDHB\\x00\\x92!\\x08\\x81\\xa2N0\\x88\\xe663\"N\\x03\\x002#Q5\\xdaqhX\\x82.@\\x89&IE\\xa6\\x93N@\\xa1\\xd2\\x1a\\x08\\xd0\\x15dD\\x80w\\t\\x05%XPL\\r\\x04\\xe2\\xd4\\x00\\xcd8&\\xd6 -E\\nF\\xc6n\\x9c\\xe2\\xdc<\\x08\\x1e\\x10C\\r\\xac$Nt:q$\\xc4IH\\x88X\\xe2\\x11\\x11\\xf1A\\x80I8\\x03\\\\\\xc0t\\x12\\xa4\\x0cDF\\xac\\x95\\x04\\x806\\xb6gi\\x112!\\x12\\x01\\xe8s\\xd0\\x0csH\\\\\\x1dnm\\x8e\\x02\\x10\\x84t\\x9aB`\\r\"$I\\xb8\\xd8D\\xc9\\x15\\xa0\\xf3\\x13\\x10\\xe4D\\x11(\\xdcI\\xb5\\x07\\x9bHt!@dF\\xc6\\x80`h\\x1c9\\x12DF\\x04\\xb9 \\r\\x98\\x1c\\xb9\\x89\\x18b\\x06F\\xceg\\\\\\xda;\\xces`$\\x15\\x90\\x04$\\xd6\\x89\"3\\xb4\\xe9\\x17\\x94\\x08\\\\\\xc8\\x07\\x10\\xa4D\\x90\\x84a\\x12B\\xab;\"O\\x88d\\x86\\x91o<X\\xe3\\xa0\\x06j\\xe4\\xba\\xa2n\\x18\\x11!\\xbd\\xb8\\x18\\xc4\\x00:`8\\x88y\\xd0\\x88\\x8cH0\\x10St\\x9b\\x13\\xd5\\xa0p\\xdc\\x858\\x93\\x12\\x1aF\\x92\\x91\\x8a$1:\\x91\\x01\\x97T1\\x94{\\xc6\\x89\\x90\\r\\x1a&\\xc0\\x01\\x00A\\x16G5\\xb1!\\x06\\x07\\x0c.E\\x18E\\xc5\\xd3l\\xe73\"m\\x8a\\xe2\\x825\\xa8R\\xf1\\'\\x1aS\\x12\\x0b\\x87\\xa1\\xf5@\\xeb)1\\xa2\"\\x01$\"rkH\\t\\xa2ndN\\x16\\x9d\\xa8\\x1b\\xe2\\xb8\\x91\\xee\\xc3@\\xb96\\xb2\\x1b\\xa4\\x06\\x92H\\x99@F\\xaefp\\xc19\\x90\\x80D\\x90(\\xb9\\xd3d\\x98S\\x82\\x84j##\\x1f\\r\\xb1\\x10\\xd9\\x90\\xce\\x1a\\x10\\xb2\\x10s\\x04Z\\xe9D@\\x01\\x1a9\\x8a\\x93\\x99G\\x10\\x90\\xf3aQ7:#\\x8d\\x10\\x07`\\x00k\\x88E\\x8d\\xc8i\\xe9#\"d\\x03\\xa2\\x82\\x08\\x95#\\x1b8\\x82l\\x99^J\\n\\x93\\x01\\xc0\\xc9\\xb4\\x96sP!\\x90\\x8c\\x8b\\xc0\\xe5\\xa2n\\x01I\\':RyZ\\xb6\\x90\\x8et\\xc0#\\xadh\\x8c\\xa5y8\\xaf\\x19fX\\xb5\\xf1\\x01\\x08\\x0c-\\xcd\\x01\\xc1I\\xb6bl\\xc4\\x10Yni\\x0b7\\x02d\\x15]a\\xae\\xd5kHA\\xcd\\x08r\\r2\\x19\\x93\\x01\\xc8@L\\x85\\x00\\x08\\xf8\\xc4Qt\\x8eBF/\\x02\\xc84\\x11\\xa6@\\xe3\\x12:\\x87\\xa9%H\\xbb\\x13l\\x9d$6\\x88\\xa2\\x1cW\\xc4`'"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf-8', 'replace')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 25,
+       "text": [
+        "'\\x01D\\x02Q\u04d8\\x053\ufffd\\x0eY&)\\x123<\ufffd8\ufffd\ufffd\u00e2\ufffd\ufffd\ufffdp\\x06\ufffd\ufffd\ufffd\\\\\ufffd\\x16\ufffd\ufffdqP\ufffd\ufffdC\\x1b\ufffdJ2B\ufffd\\t\\x16\ufffd\ufffdX\\x00YN\ufffd#g\\x1a\ufffd\ufffd$O@\\x1e \ufffd\"BNU\ufffd\\x08\ufffd\ufffd\u0498\ufffd\\x05\ufffd\\x00$\ufffd\\u058d\\x06kbw\\x1c\ufffd@\ufffd-\ufffdl\ufffd\ufffdD\ufffdkHD!\\x04\ufffd\ufffd\\x06\ufffdQ\ufffd\ufffd\ufffd#\\x16\ufffd\ufffdg\ufffd\ufffd\\x02$\\x07\\x00\ufffd\\x01\\x07\\x16\ufffdqm\u0203E\ufffd\ufffd3\ufffdnC\ufffd\\t\ufffd\ufffdkI \\x1a.\\x0c\ufffdIE\ufffdr#\ufffd\ufffd\ufffd\\x18\ufffd\ufffdX\\x0b\\x02\ufffdF\ufffd\u044bm\ufffd\ufffd\\x0c[\ufffd7,\ufffd\ufffdF\ufffd\\x02(!\\x08\ufffd\\x01\ufffdi- 8\ufffd\ufffd7\\x04\ufffdl\ufffdR\ufffd\ufffduf\ufffd\\x00\ufffdD\ufffd\ufffd\\x1d\\x0f\ufffd*B\\x0ed\ufffdA\\x16\ufffd\ufffdY\\x00\ufffd\ufffd\ufffd\ufffd\ufffd@sObM\ufffd\ufffd\ufffd\\x129\ufffd\\x04\ufffd2\\r\ufffd!\\x1c\\x002b@\ufffd4\\x15\ufffd\\x1cI(\ufffdD\ufffd\ufffdI\ufffd\ufffd@\ufffd\ufffd\\x00\\x04:\ufffdy\\x16\ufffdp\\x1d1L!\ufffd\ufffd\ufffd\ufffd@\\x1a\ufffd8\u018d\ufffd\ufffd\ufffd\ufffd\ufffd%\\x0e\ufffdL\\x02 \ufffdE\ufffd\ufffdDHB\\x00\ufffd!\\x08\ufffd\ufffdN0\ufffd\ufffd63\"N\\x03\\x002#Q5\ufffdqhX\ufffd.@\ufffd&IE\ufffd\ufffdN@\ufffd\ufffd\\x1a\\x08\ufffd\\x15dD\ufffdw\\t\\x05%XPL\\r\\x04\ufffd\ufffd\\x00\ufffd8&\ufffd -E\\nF\ufffdn\ufffd\ufffd\ufffd<\\x08\\x1e\\x10C\\r\ufffd$Nt:q$\ufffdIH\ufffdX\ufffd\\x11\\x11\ufffdA\ufffdI8\\x03\\\\\ufffdt\\x12\ufffd\\x0cDF\ufffd\ufffd\\x04\ufffd6\ufffdgi\\x112!\\x12\\x01\ufffds\ufffd\\x0csH\\\\\\x1dnm\ufffd\\x02\\x10\ufffdt\ufffdB`\\r\"$I\ufffd\ufffdD\ufffd\\x15\ufffd\ufffd\\x13\\x10\ufffdD\\x11(\ufffdI\ufffd\\x07\ufffdHt!@dF\u0180`h\\x1c9\\x12DF\\x04\ufffd \\r\ufffd\\x1c\ufffd\ufffd\\x18b\\x06F\ufffdg\\\\\ufffd;\ufffds`$\\x15\ufffd\\x04$\u0589\"3\ufffd\ufffd\\x17\ufffd\\x08\\\\\ufffd\\x07\\x10\ufffdD\ufffd\ufffda\\x12B\ufffd;\"O\ufffdd\ufffd\ufffdo<X\ufffd\\x06j\u4ea2n\\x18\\x11!\ufffd\ufffd\\x18\ufffd\\x00:`8\ufffdy\u0408\ufffdH0\\x10St\ufffd\\x13\\u0560p\u07058\ufffd\\x12\\x1aF\ufffd\ufffd\ufffd$1:\ufffd\\x01\ufffdT1\ufffd{\u0189\ufffd\\r\\x1a&\ufffd\\x01\\x00A\\x16G5\ufffd!\\x06\\x07\\x0c.E\\x18E\ufffd\ufffdl\ufffd3\"m\ufffd\ufffd5\ufffdR\ufffd\\'\\x1aS\\x12\\x0b\ufffd\ufffd\ufffd@\ufffd)1\ufffd\"\\x01$\"rkH\\t\ufffdndN\\x16\ufffd\ufffd\\x1b\u2e11\ufffd\ufffd@\ufffd6\ufffd\\x1b\ufffd\\x06\ufffdH\ufffd@F\ufffdfp\ufffd9\ufffd\ufffdD\ufffd(\ufffd\ufffdd\ufffdS\ufffd\ufffdj##\\x1f\\r\ufffd\\x10\u0650\ufffd\\x1a\\x10\ufffd\\x10s\\x04Z\ufffdD@\\x01\\x1a9\ufffd\ufffd\ufffdG\\x10\ufffd\ufffdaQ7:#\ufffd\\x10\\x07`\\x00k\ufffdE\ufffd\ufffdi\ufffd#\"d\\x03\ufffd\ufffd\\x08\ufffd#\\x1b8\ufffdl\ufffd^J\\n\ufffd\\x01\ufffd\u0274\ufffdsP!\ufffd\ufffd\ufffd\ufffd\ufffdn\\x01I\\':RyZ\ufffd\ufffd\ufffdt\ufffd#\ufffdh\ufffd\ufffdy8\ufffd\\x19fX\ufffd\ufffd\\x01\\x08\\x0c-\ufffd\\x01\ufffdI\ufffdbl\ufffd\\x10Yni\\x0b7\\x02d\\x15]a\ufffd\ufffdkHA\ufffd\\x08r\\r2\\x19\ufffd\\x01\ufffd@L\ufffd\\x00\\x08\ufffd\ufffdQt\ufffdBF/\\x02\ufffd4\\x11\ufffd@\ufffd\\x12:\ufffd\ufffd%H\ufffd\\x13l\ufffd$6\ufffd\ufffd\\x1cW\ufffd`'"
+       ]
+      }
+     ],
+     "prompt_number": 25
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf_32', 'replace')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 29,
+       "text": [
+        "'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\\U00072402\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd'"
+       ]
+      }
+     ],
+     "prompt_number": 29
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": []
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
diff --git a/2014/8a.ciphertext b/2014/8a.ciphertext
new file mode 100644 (file)
index 0000000..56e7884
--- /dev/null
@@ -0,0 +1 @@
+NYVLG GSYGL CHXFE UYTQC ESQXP ZIUFI GGRBJ HPAYN CRUYF PSXUF IUPSK YRECT MMCNC RUYRE GXIGR LGLBT IBLME CEBZS VRLPU XPBIB JAJRL JREOB AJRLU FIGJE HBEZY WTMGJ YXFQX ICTSG RDGTB JAFYO OCWTM JBLCT WWUCQ MGOFR LFMRF RLFWL BTIJL WUYPM CHJQX ICRFC HUMTS MZJBI MYVHC UVYRU GXJCW PDTPU ISRLF DHBAE NCYQU MUFEO GRHCR JMYTQ SMSXJ MRCSX JRMTT ISWZV JRFPE CJITN IDGEM DSSAI TASVJ HUYOF GXPSX GMVVQ FVRXI YXXMY MBXFJ PUFIG BEUFE UUIIY ZFAVB AOFBX ICMSA MQFIS QWPGR TRIBB MTSKH CWUUI MCXUF INBIT RVPWX SMNBL JPPYT UIXGP MLIFB GPMTF PEUGS ODVPK XICSN YRJES WCVOK IOREO YVNCH GGKIR ISHIU YRERL FDPJE LUASO RVPJW ZQXFK WGPSN YHSMR FKIBL AIGPF UIOCI ERSFL WVPIU USUFM OEWPL IUFEU UIEMR PRWFL HDPMU GGBJM ODSSK EUGSO YGSMW TRLFZ ECYPN YREYF TRVBG XBLHU USUFE UUIVQ IBLSO AVJRM DYPLC CHCRF PEUGS ONVPR SDMPP LXIYX DFEOL IMEMW CRUFI MCZFJ SGASN KMUKI ORXIC JEYLB TITFS XLMOB IWCPP NMOEX IGWQJ EOGEN QYSCX IYXUF IZUMM JVFGR TREUC XICTP UISQY QNPZU MUFMO YJFUQ PLXIQ FVRAJ RLMSG LRLFW AJJPO MXHSI TQXIY XXCOO MABZS VRMUY REUIX GPMNY UGXPS XPDFV QMOCW TDSSJ SOEIO MYHFX PASNC YQUMU FEQJE OMJPS VPURU MIYNP PGXJR MORLF KIBLX JKIXC RPUOO MAUFE URLFG VIGKI CWUQI DSVJR CDMQN SRJAE UGSOQ ESCIO AVZNX FBYTG RHYGB BIOSW DGTIC VTMAF AEOQX BPXIS RUGRH RLSMY HFXIC HBREC YWFDS SMXIC VJLXF PGFNX TUIDY RDPED IXIGW NYCCC XICFS CELRL SMYHF AFFEW CFFCR MMSLG RHDSS GRUFI GGKIR EHYMO QXUFI GBEMC XTLSU QGSCA JRYQY PMRLF ZITRL BPVZ
diff --git a/2014/8b.ciphertext b/2014/8b.ciphertext
new file mode 100644 (file)
index 0000000..9be6e62
--- /dev/null
@@ -0,0 +1 @@
+0000000101000100000000100101000111010011100110000000010100110011110001010000111001011001001001100010100100010010001100110011110010001111001110001000000011101010110000111010001011110010110001001100010001110000000001101111011110100101101001100101110011001001000101101001000010100100011100010101000011101000110011100100001100011011100010000100101000110010010000101000110100001001000101101001010010010011010110000000000001011001010011101100100000100011011001110001101010111001110011010010010001001111010000000001111000100000101010010010001001000010010011100101010110010010000010001011001110101101110100101001100011011100000001011011101100000000001001001001100011010110100011010000011001101011011000100111011100011100111100111001001101000000111001000010110110100010011011001010010010000001010001001000000001101011010010000100010000100001000001001000110110100110000001101001001001010001101010111000110010000010001000110001011010010100100001100110011111010101110010000000001000100100000001110000000010001110000000010000011100010110101000100111000101101101110010001000001101000101111100101001000111000000001100111000111001101110010000111100000000001001100100101110010001101011010010010010000000011010001011100000110011010110010010010100010110110001011100100010001110000111100001001100010000011000100101101011010001011000000010110000001011001000010001101010000011010001100010110110110110001000101011010000110001011011111001010011011100101100100001011001110001000110110010100000001000101000001000010000100010000100000000011100101101101001001011010010000000111000111100011001101011100101001101110000010010010011011011001001011101010010101000101010001101110101011001101111011100000000100001000100010010000100100001110001110100001111100100010010101001000010000011100110010010110001010000010001011010011100100000010101100100000000111010011011100011110011100111001100100011110110100010010100000001110011010011110110001001001101100101011100001111100011000100100011100110101101000001001000110000110010000011011100010000100001000111000000000000110010011000100100000010100111001101000001010110100000000111000100100100101000110011100100010010001011101001000100100111000100111000100100000010100110111110010000000000000100001110101100011001111001000101101111001001110000000111010011000101001100001000011001001110001000100010001011011001000000000110101111000100111000110001101000110110001000100010001111100111001100111100010010010100001110110101010100110000000010001000001000100001000101110001101100110101000100010010000100001000000000100100100010000100001000100000011010001001001110001100001000100011100110001101100011001100100010010011100000001100000000001100100010001101010001001101011101101001110001011010000101100010000010001011100100000010001001001001100100100101000101101001101001001101001110010000001010000111010010000110100000100011010000000101010110010001000100100000000111011100001001000001010010010101011000010100000100110000001101000001001110001011010100000000001100110100111000001001101101011000100000001011010100010100001010010001101100011001101110100111001110001011011100001111000000100000011110000100000100001100001101101011000010010001001110011101000011101001110001001001001100010001001001010010001000100001011000111000100001000100010001111100010100000110000000010010010011100000000011010111001100000001110100000100101010010000001100010001000100011010101100100101010000010010000000001101101011011001100111011010010001000100110010001000010001001000000001111010000111001111010000000011000111001101001000010111000001110101101110011011011000111000000010000100001000010001110100100110100100001001100000000011010010001000100100010010011011100011011000010001001100100100010101101000001111001100010011000100001110010001000100000100010010100011011100010010011011010100000111100110110100100001110100001000010100000001100100010001101100011010000000011000000110100000011100001110010001001001000100010001100000010010111001001000000000110110011000000111001011100110001001000110000110001000000110010001101100111001100111010111001101101000111011110011100111001101100000001001000001010110010000000001000010010011010110100010010010001000110011101101001110100100010111100101000000100001011100110010000000011100010000101001000100010010010000100001000110000100010010010000101010101100111011001000100100111110001000011001001000011010010001011011110011110001011000111000111010000000000110011010101110010010111010101000100110111000011000000100010010000110111101101110000001100011000100000000000011101001100000001110001000100001111001110100001000100010001100010010000011000000010000010100110111010010011011000100111101010110100000011100001101110010000101001110001001001100010010000110100100011010010010100100011000101000100100001100010011101010010001000000011001011101010100001100011001010001111011110001101000100110010000000011010001101000100110110000000000000100000000010000010001011001000111001101011011000100100001000001100000011100001100001011100100010100011000010001011100010111010011011011001110011100110011001000100110110110001010111000101000001000110101101010000101001011110001001001110001101001010011000100100000101110000111101000011111010101000000111010110010100100110001101000100010001000000001001001000010001001110010011010110100100000001001101000100110111001100100010011100001011010011101101010000001101111100010101110001001000111101110110000110100000010111001001101101011001000011011101001000000011010010010010010001001100101000000010001101010111001100110011100001100000100111001100100001000000001000100100100000010100010111001110100110110010010011000010100111000001010000100011010100010001100100011000111110000110110110001000100001101100110010000110011100001101000010000101100100001000001110011000001000101101011101001010001000100000000000001000110100011100110001010100100111001100101000111000100001001000011110011011000010101000100110111001110100010001110001101000100000000011101100000000000000110101110001000010001011000110111001000011010011110100100100011001000100110010000000011101000101000001000001000100101010010001100011011001110001000001001101100100110010101111001001010000010101001001100000001110000001100100110110100100101100111001101010000001000011001000010001100100010111100000011100101101000100110111000000001010010010010011100111010010100100111100101011010101101101001000010001110011101001100000000100011101011010110100010001100101001010111100100111000101011110001100101100110010110001011010111110001000000010000100000001100001011011100110100000001110000010100100110110110011000100110110011000100000100000101100101101110011010010000101100110111000000100110010000010101010111010110000110101110110101010110101101001000010000011100110100001000011100100000110100110010000110011001001100000001110010000100000001001100100001010000000000001000111110001100010001010001011101001000111001000010010001100010111100000010110010000011010000010001101001100100000011100011000100100011101010000111101010010010010101001000101110110001001101101100100111010010010000110110100010001010001000011100010101111100010001100000
index 9d954cf00f0a4cf1ca2e728ea34321c840b70732..304513abbc5689f93688c9894548981510c54d0b 100644 (file)
--- a/SIGNED.md
+++ b/SIGNED.md
@@ -3,19 +3,19 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQIcBAABAgAGBQJUkP0EAAoJEJPB2e07PgbqWS0QAK3JVAZrCqcb18BPzPHVZBdb
-EZCbhq8bnujTkwlR/WtQRG1DfTiY4T06lQmvyLqbWB975SoycjxJu46phosFcE0F
-my67mZFDgnbzKOSl+R6O1lB5oMsoUPDVOZ+5VIy/265lNAOUZKS6AdZqrT0yqfez
-ZIG9TtEMeE1X5JGqmDagm+ZWMu5TqcRjHq+RE1t4FOubJ7Mz++casMo5wIAd9aVm
-1dtTFmKMLqiiaYoLUt4B52Jv1Zk8u/+aqi8kB8pqH8c4jj9NqJTtSnNesOs7Gr/6
-qdkh61Le1EnkGwMWsdgkZApxXQXKOZn+4VVfD5/tmlDCEr2f0AM9UBliCIeZknpu
-0xM6Ficom/EOgegLxcQiHIcs5TKJorwKPQTEkfBxR1aecFPSk32dTvAMffEcD7DL
-nzRY4JP7bGQX6ZnLqR6+GsaF0d/rlyT9JfhSpWAcNKFf6hVMTDMSUSE39MoaNJTX
-MvoNtzbW3qEWkKiGBj3wOT5AXkfiZFSI5wsxkz4T+ELyx+jd5YFoxJ6g8z0IrI4M
-Q7yWVbQNM8eXzKOyn82GzjR5SXJvHts4T3qVTVQLpXEyudB4ylo+uMkuwsjpzwFF
-YFYvIfLX1/+3//9gypfJdo49YJJa6gqM6f8gVNQHdUWB+0YzqOz6a5b3LWFHTGyY
-6kj6ud1HYjI6rGFIhb+x
-=nbsm
+iQIcBAABAgAGBQJUlDlsAAoJEJPB2e07PgbqdygQAIr93N/1xV9Ag7rNSIB7Pgz1
+zpvnYeuz0uC0EgvgBiTBTiL4obNFeS0B4AnYzxtZekYdP9fpFgAFdytaKq4Pacja
+v/wLJlwyaNLyEiGTwEpcqEwopwcMLM/F0TM7brXFZSPBRhsUZ755SIyavkPKfGA6
+NFfTq9WjprAAEq9XSv6ehgiGJkwsTXbP0rM3X7QhyY6FRL41G6fpxAsrlgvLdQDj
+tup8VibhEUFuctvAsQbtfVocWpmWSEnYUHRusMlrc8LY6crCXydnQvV3sbIggtsz
+yQoCtxzE6HF4eKgjGO2cd+NHIA7BB2vgzz6xymPrMVXxhx3hPyAg2a9k+MCUdmzd
+SCeWOpEtG+rVP1tIiSM5VHWlluok2o40dUhfUT563M0Gvo/jhLm9OPkM4SddJG+U
+Q/A0/CBtu9eWizzh+2N1mG6F5ryUFTAmDVTTLFYCMgCurTcwIkX2HUKAsbW65U0q
+JAM7qJg7bYVIoJ0B6keO3iDnPiEk9IRsP7quU2F7/Vjn1keWdJ0SeeI9vy5Ws5/S
+sW7A+v0lVx2gey3Y3X9fRpzyDdY82eitaKUa8CT7IhhhWjB4XvSTDygsO637AZS1
+s7EFPc9vppGKa1CIyD/2VKHvl8iXs+DarWzy/jutdPvc9qcM/V8Pmu88Fq6nL5Nk
+R5UvOSoqssCptx2rgaDF
+=m8Bf
 -----END PGP SIGNATURE-----
 
 ```
@@ -101,6 +101,8 @@ size     exec  file                                               contents
 634                6b.ciphertext                                  6049395e22af4f76540970c90faf301cf2999cefbc008a651ab36fe413e8aedc                                                                 
 1650               7a.ciphertext                                  8a856dc907c04dea27d7d12f530c1c3e11dff6b51fb593bea10a8d68e0240cf6                                                                 
 988                7b.ciphertext                                  cfb66667a8011226be0be7c98e9deb7efa02e9a53cad67743baf166c20136ada                                                                 
+1391               8a.ciphertext                                  ac2b18d13ef44be0fb233d2455c51897b4df59491bbdd23ef82fbd9490bc86b1                                                                 
+7001               8b.ciphertext                                  8d7e366e8fbb5766717481eeec77b089d3e8f9e708ac198d56176cb0882a9472                                                                 
 3882             2014-challenge1.ipynb                            07715f100d97af32ad5a13b56ade2f5753e17e32404e2eda0dcb9634736298f5                                                                 
 28071            2014-challenge2.ipynb                            1535404ae5a412160c82d19e38f7069a2eaca600bd433e77877bd13e14929e6b                                                                 
 29190            2014-challenge3.ipynb                            1454c5e5014eac93c42e88611f3f6b3f014bf70a8e9d8e87ef4725f8d12a27b7                                                                 
@@ -108,6 +110,7 @@ size     exec  file                                               contents
 23322            2014-challenge5.ipynb                            fb3bb531c62ed943528715cc19e800293e3cd4a176ce3a3fe01e7e585386907e                                                                 
 40307            2014-challenge6.ipynb                            5085a4ae2a562c87983cbff817ac89826973341551980563ae0c77ab747a5dff                                                                 
 44472            2014-challenge7.ipynb                            9800d39c881f22f67f1182f6ca73bbf40a123d0deb598a6009f545f421955241                                                                 
+77771            2014-challenge8.ipynb                            908dec38d100f5d4f41261068a5d07358ba28d48c93a5d21ce43bea31841b3e5                                                                 
 18025            LICENSE                                          a01259a1b522cf0de95824f9860613b453153eebac468e96196d5d7dba84786c                                                                 
 7999             LJ!-Qt!-Fghxft-dferts%3B-hsjeukaxxn-sfedw.ipynb  429b6c6995096ff19c28a5ee342bef8ea4774200bdf9aaf6268de3cb8b28df28                                                                 
 61               README.md                                        277247b410300ee16477b12ca54ad878d81c8061f6134e2e1cadccaf299de3a3