Done challenge 5
authorNeil Smith <neil.git@njae.me.uk>
Fri, 20 Nov 2015 15:44:00 +0000 (15:44 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 20 Nov 2015 15:44:00 +0000 (15:44 +0000)
2015-challenge4.ipynb
2015-challenge5.ipynb [new file with mode: 0644]
2015/4b.ciphertext
2015/5a.ciphertext [new file with mode: 0644]
2015/5b.ciphertext [new file with mode: 0644]
SIGNED.md

index 201aa9c3e9bf147dd8c80b3909b9510e915a1c68..ec3147acdb3632500b6c40df87e2e6e3c544ac8a 100644 (file)
@@ -19,7 +19,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 2,
    "metadata": {
     "collapsed": false
    },
@@ -30,7 +30,7 @@
        "(('reanimates', <KeywordWrapAlphabet.from_last: 2>), -911.6411317751041)"
       ]
      },
-     "execution_count": 6,
+     "execution_count": 2,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -62,7 +62,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 3,
    "metadata": {
     "collapsed": false
    },
@@ -98,7 +98,7 @@
        " 'z': 'n'}"
       ]
      },
-     "execution_count": 17,
+     "execution_count": 3,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 4,
    "metadata": {
     "collapsed": false
    },
        " ('q', 'z')]"
       ]
      },
-     "execution_count": 21,
+     "execution_count": 4,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 5,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": 6,
    "metadata": {
     "collapsed": false
    },
     {
      "data": {
       "text/plain": [
-       "(('francois', <KeywordWrapAlphabet.from_last: 2>), -1032.067747212964)"
+       "(('francois', <KeywordWrapAlphabet.from_last: 2>), -1082.7018217012803)"
       ]
      },
-     "execution_count": 26,
+     "execution_count": 6,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 27,
+   "execution_count": 7,
    "metadata": {
     "collapsed": false
    },
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "r friends they plan to infiltrate the rat i lines and to try to turn the high value targets for themselves they have a particular interest in nazi scientists from the die alchemist en project if you want to break the reichs doktor network before they can do so take care not to share any intelligence with them you have been warned i think it is time to begin negotiations i have a number in mind and i think once you know what i am offering you will find it very reasonable as a sign of good faith ioffer you the following information one of the local rat i line coordinators will be leaving the us sector tomorrow night in a black limousine under the backseat of his car you will find hidden a juniors s officer who is trying to escape and in the trunk you will find a number of papers relating to stolen artworks that he hopes to trade to the french for his freedom you might want to consider carefully whether you can trust your friend charlie with this information after all her husband francois is french\n"
+      "the french maybe your allies but they are not your friends they plan to infiltrate the rat i lines and to try to turn the high value targets for themselves they have a particular interest in nazi scientists from the die alchemist en project if you want to break the reichs doktor network before they can do so take care not to share any intelligence with them you have been warned i think it is time to begin negotiations i have a number in mind and i think once you know what i am offering you will find it very reasonable as a sign of good faith ioffer you the following information one of the local rat i line coordinators will be leaving the us sector tomorrow night in a black limousine under the backseat of his car you will find hidden a juniors s officer who is trying to escape and in the trunk you will find a number of papers relating to stolen artworks that he hopes to trade to the french for his freedom you might want to consider carefully whether you can trust your friend charlie with this information after all her husband francois is french\n"
      ]
     }
    ],
diff --git a/2015-challenge5.ipynb b/2015-challenge5.ipynb
new file mode 100644 (file)
index 0000000..12ba698
--- /dev/null
@@ -0,0 +1,144 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import matplotlib.pyplot as plt\n",
+    "%matplotlib inline\n",
+    "\n",
+    "from cipherbreak import *\n",
+    "\n",
+    "c5a = open('2015/5a.ciphertext').read()\n",
+    "c5b = open('2015/5b.ciphertext').read()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(('cornfield', <KeywordWrapAlphabet.from_largest: 3>), -1557.5551917175146)"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "(key_a_word, key_a_wrap), score = keyword_break_mp(c5a)\n",
+    "(key_a_word, key_a_wrap), score"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "harry, i checked out who transcribed the radio transmission like you asked. it was a junior cipher clerk in room 5. i would have offered to set up a meeting with her, but she has disappeared and hasn’t been seen since last friday. the marines saw her leave at her usual time, and she was booked out for some leave on monday and tuesday so no one noticed she was missing until today. we sent an officer out to her usual haunts and i will get back to you if we find anything. what made you ask? did you have a reason to believe she was involved in something? \n",
+      "\n",
+      "i took another look at the messages. were you referring to the typos? the word ratlines keeps being spelt as ratilines. is that important? what did you mean about our source being close to home? \n",
+      "\n",
+      "also did some digging about the reichsdoktor. seems you were right and it refers to an underground nazi organisation dedicated to rebuilding the reich. maybe they think of it as healing? a bunch of rich nazi sympathisers took over the ratlines from a group of ss officers who set them up at the tail of the war and have been active in shipping scientists, engineers and soldiers to towns across south america. if our source has inside information then maybe we could intercept the lines and pick up some of the high value targets the french are after. what was “die alchemisten project”? \n",
+      "\n",
+      "the enclosed message was handed to the marines, but they didn’t get a name. initial analysis shows it must be a vigenere cipher with period two so it should be reasonably straightforward to crack. \n",
+      "\n",
+      "all the best, charlie \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(keyword_decipher(c5a, key_a_word, wrap_alphabet=key_a_wrap))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "('de', -885.6842458313828)"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "key_b, score = vigenere_frequency_break(c5b, max_key_length=2)\n",
+    "key_b, score"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "the first item in our little auction will be the location of a safehouse in the uk sector of berlin it is a minor stopover on the rat lines but you never know you might get lucky and find someone interesting hiding there at the very least you will inconvenience the reichs doktor if you take possession of it how much would that be worth to you do i hear a bid of five hundred thousand francs from our french friends perhaps the british would pay more or maybe they can not afford to i wonder how they feel about that perhaps you should ask them if you want to outbid your so called friends then leave the money in unmarked treasury bills in locker at the far end of the platform in friedrichstrasse i will leave the details in locker you will find the key in do not try to double cross me it will not work and our little game will end before it has even properly begun\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(' '.join(segment(sanitise(vigenere_decipher(sanitise(c4b), key_b)))))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.4.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
index 9b6d8ac1a0f2f5a7a0677630761ec0a0c31b16d0..be1314de3567367346c0551668ed97666071604b 100644 (file)
@@ -1 +1 @@
-EOETC YNGHS CPBWF YHZTY OTWHE FHCHS CEFHT WTYCG FYNHZ HEPHZ HJEYH SCSTI SKFWJ CHFEI CHGOZ EHSCX GCWKC GHSCP SFKCF BFEHT AJWFE TYHCE CGHTY YFQTG ATCYH TGHGO EZXHS CNTCF WASCX TGHCY BEZUC AHTOP ZJLFY HHZRE CFVHS CECTA SGNZV HZEYC HLZEV RCOZE CHSCP AFYNZ GZHFV CAFEC YZHHZ GSFEC FYPTY HCWWT ICYAC LTHSH SCXPZ JSFKC RCCYL FEYCN THSTY VTHTG HTXCH ZRCIT YYCIZ HTFHT ZYGTS FKCFY JXRCE TYXTY NFYNT HSTYV ZYACP ZJVYZ LLSFH TFXZO OCETY IPZJL TWWOT YNTHK CEPEC FGZYF RWCFG FGTIY ZOIZZ NOFTH STZOO CEPZJ HSCOZ WWZLT YITYO ZEXFH TZYZY CZOHS CWZAF WEFHT WTYCA ZZENT YFHZE GLTWW RCWCF KTYIH SCJGG CAHZE HZXZE EZLYT ISHTY FRWFA VWTXZ JGTYC JYNCE HSCRF AVGCF HZOST GAFEP ZJLTW WOTYN STNNC YFUJY TZEGG ZOOTA CELSZ TGHEP TYIHZ CGAFB CFYNT YHSCH EJYVP ZJLTW WOTYN FYJXR CEZOB FBCEG ECWFH TYIHZ GHZWC YFEHL ZEVGH SFHSC SZBCG HZHEF NCHZH SCOEC YASOZ ESTGO ECCNZ XPZJX TISHL FYHHZ AZYGT NCEAF ECOJW WPLSC HSCEP ZJAFY HEJGH PZJEO ETCYN ASFEW TCLTH SHSTG TYOZE XFHTZ YFOHC EFWWS CESJG RFYNO EFYAZ TGTGO ECYAS
+HSCOE CYASX FPRCP ZJEFW WTCGR JHHSC PFECY ZHPZJ EOETC YNGHS CPBWF YHZTY OTWHE FHCHS CEFHT WTYCG FYNHZ HEPHZ HJEYH SCSTI SKFWJ CHFEI CHGOZ EHSCX GCWKC GHSCP SFKCF BFEHT AJWFE TYHCE CGHTY YFQTG ATCYH TGHGO EZXHS CNTCF WASCX TGHCY BEZUC AHTOP ZJLFY HHZRE CFVHS CECTA SGNZV HZEYC HLZEV RCOZE CHSCP AFYNZ GZHFV CAFEC YZHHZ GSFEC FYPTY HCWWT ICYAC LTHSH SCXPZ JSFKC RCCYL FEYCN THSTY VTHTG HTXCH ZRCIT YYCIZ HTFHT ZYGTS FKCFY JXRCE TYXTY NFYNT HSTYV ZYACP ZJVYZ LLSFH TFXZO OCETY IPZJL TWWOT YNTHK CEPEC FGZYF RWCFG FGTIY ZOIZZ NOFTH STZOO CEPZJ HSCOZ WWZLT YITYO ZEXFH TZYZY CZOHS CWZAF WEFHT WTYCA ZZENT YFHZE GLTWW RCWCF KTYIH SCJGG CAHZE HZXZE EZLYT ISHTY FRWFA VWTXZ JGTYC JYNCE HSCRF AVGCF HZOST GAFEP ZJLTW WOTYN STNNC YFUJY TZEGG ZOOTA CELSZ TGHEP TYIHZ CGAFB CFYNT YHSCH EJYVP ZJLTW WOTYN FYJXR CEZOB FBCEG ECWFH TYIHZ GHZWC YFEHL ZEVGH SFHSC SZBCG HZHEF NCHZH SCOEC YASOZ ESTGO ECCNZ XPZJX TISHL FYHHZ AZYGT NCEAF ECOJW WPLSC HSCEP ZJAFY HEJGH PZJEO ETCYN ASFEW TCLTH SHSTG TYOZE XFHTZ YFOHC EFWWS CESJG RFYNO EFYAZ TGTGO ECYAS
diff --git a/2015/5a.ciphertext b/2015/5a.ciphertext
new file mode 100644 (file)
index 0000000..1d7ad3f
--- /dev/null
@@ -0,0 +1,9 @@
+LCAAP, D RLFRTFN XHG KLX GACWBRADOFN GLF ACNDX GACWBVDBBDXW UDTF PXH CBTFN. DG KCB C SHWDXA RDYLFA RUFAT DW AXXV 5. D KXHUN LCJF XIIFAFN GX BFG HY C VFFGDWE KDGL LFA, OHG BLF LCB NDBCYYFCAFN CWN LCBW’G OFFW BFFW BDWRF UCBG IADNCP. GLF VCADWFB BCK LFA UFCJF CG LFA HBHCU GDVF, CWN BLF KCB OXXTFN XHG IXA BXVF UFCJF XW VXWNCP CWN GHFBNCP BX WX XWF WXGDRFN BLF KCB VDBBDWE HWGDU GXNCP. KF BFWG CW XIIDRFA XHG GX LFA HBHCU LCHWGB CWN D KDUU EFG OCRT GX PXH DI KF IDWN CWPGLDWE. KLCG VCNF PXH CBT? NDN PXH LCJF C AFCBXW GX OFUDFJF BLF KCB DWJXUJFN DW BXVFGLDWE? 
+
+D GXXT CWXGLFA UXXT CG GLF VFBBCEFB. KFAF PXH AFIFAADWE GX GLF GPYXB? GLF KXAN ACGUDWFB TFFYB OFDWE BYFUG CB ACGDUDWFB. DB GLCG DVYXAGCWG? KLCG NDN PXH VFCW COXHG XHA BXHARF OFDWE RUXBF GX LXVF? 
+
+CUBX NDN BXVF NDEEDWE COXHG GLF AFDRLBNXTGXA. BFFVB PXH KFAF ADELG CWN DG AFIFAB GX CW HWNFAEAXHWN WCQD XAECWDBCGDXW NFNDRCGFN GX AFOHDUNDWE GLF AFDRL. VCPOF GLFP GLDWT XI DG CB LFCUDWE? C OHWRL XI ADRL WCQD BPVYCGLDBFAB GXXT XJFA GLF ACGUDWFB IAXV C EAXHY XI BB XIIDRFAB KLX BFG GLFV HY CG GLF GCDU XI GLF KCA CWN LCJF OFFW CRGDJF DW BLDYYDWE BRDFWGDBGB, FWEDWFFAB CWN BXUNDFAB GX GXKWB CRAXBB BXHGL CVFADRC. DI XHA BXHARF LCB DWBDNF DWIXAVCGDXW GLFW VCPOF KF RXHUN DWGFARFYG GLF UDWFB CWN YDRT HY BXVF XI GLF LDEL JCUHF GCAEFGB GLF IAFWRL CAF CIGFA. KLCG KCB “NDF CURLFVDBGFW YAXSFRG”? 
+
+GLF FWRUXBFN VFBBCEF KCB LCWNFN GX GLF VCADWFB, OHG GLFP NDNW’G EFG C WCVF. DWDGDCU CWCUPBDB BLXKB DG VHBG OF C JDEFWFAF RDYLFA KDGL YFADXN GKX BX DG BLXHUN OF AFCBXWCOUP BGACDELGIXAKCAN GX RACRT. 
+
+CUU GLF OFBG, RLCAUDF 
diff --git a/2015/5b.ciphertext b/2015/5b.ciphertext
new file mode 100644 (file)
index 0000000..9fc6ddb
--- /dev/null
@@ -0,0 +1 @@
+WLHJL VVXLX HQLRR YUPLX WPHEX GWMRR ZMOPE IWLHP RGDXL SQSIE VEIIK SXWHM QXKIX OVIFX RVRJE IUPLR LXLWD QLRRV VXRTR ZHVRR WLHVD XOMQI VFXXB SXRHZ HVNRR ABSXQ LKKXJ IWPXG NCDRG JLRGW RQHSQ ILRWI UIVXL RJLLH LRJXK IUIDX WLHZH VBPHE VXBSX ALPOM QGRRY IQMHR FIWLH VHMFL VHROW SUMIC RYWEN ISSVW HWVMR RRJLX KSZQX GKARY OHWLD XEIZS UXKXR CRYGS LLHEU EEMGS IJLZH LXRGV HHWLR YVEQH IVDRF WIVRQ RYUJU IQGKJ UMHRG WSIUL DTVXK IEVLX LWKAR YOHSE BQRVH SUQDC EIWLH CFEQR RXDJI SUHWS LARRG IULRA WLHCI IHPDF RYWXK EWTHV KESWB SXWKS XPGEV OWLHQ LJBSX ADRWX RSXXE MGCRY UWRGD POIGJ UMHRG WWLHR OIDZH XKIPS QIBMQ YQQDV NIGXU IDWXV BFLPO WLROS FOHVD XWLHJ DVHRG SIXKI SPDXI SUQLR IVLIG VLGKW WVDWV ILALP OPHEY IWLHH HXDMO WLROS FOHVB SXALP OJLRG XKINI BMQHR RRXWV BXRHR YEPHG USVWP ILXZM OPQSW ARVNE QHRYU PLXWP HKDQH ALPOI QHEII SUILX KEVIY IQTUS SIUPB FHKXR
index 3d81213ca09e4bd98247f13b978f0f633add4d13..3a869e9c062d39ca48e656e59538a2d62a3153c9 100644 (file)
--- a/SIGNED.md
+++ b/SIGNED.md
@@ -3,19 +3,19 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQIcBAABCAAGBQJWSPX3AAoJEJPB2e07PgbqjqcP/idEOq0lG571tdUusLXbRf4q
-Hj9e05PZFd4f907Gxvi5m5XeRWe51QeP+zSB/wju7Ly+EsmQfygzcoLOUhPkjSu4
-8354g8jtdPLkEBYvJn4RaL5njHxXuPiNnBz8vh53/XAh/skw37SoSBZtwm56C+MZ
-3FCXBhvC69RvEL+I2lzLUhhO04/a5h/+X/vf95mMpQGZ0WzbbUQR1iBVngnr8r41
-fUrR/q/cek3DFtMN8g1u28U+yPXMcAYqU0/iCC9XijJVeLE4RM1tLYOayaMCGccb
-Mld6VYhk3/2GAWfN/Csq+hqoWCnGgzmYEXwJ7Lj0A4GQRRkKDpgwyIKVxujv0z9j
-aqSDmP2c9U4QU1RFSSJQCobeRoy7/zzSPj90S0L77rBosbpkHzkxRxSBwXUdS9h3
-SpxrbGEfHM6U8/UcTt+Xjc71+KHvM3w2xtFfRe/WLxCbO7rpbu+w/YQjqKzZ0faP
-ExCjX/77CKsqFmqN6HWI72NylcpSU3IK2qegl0Exsv+E2wj2smaoGgn0KKjHTmHy
-feRMqDKsQvVZPzQ8Xt5rdYogSVfYUyhh3FHts9ac0QY/SY4t1/YUsZzbYEjS+3Uf
-MoG70cVpxeFGIfzpp+zIjK612yNudJ+cLkrPtN0BPKYel8H9piPjT6NY06HJWtI1
-Jf+29kgKvsPnMEtnaw/c
-=CuEJ
+iQIcBAABCAAGBQJWTz/TAAoJEJPB2e07PgbqmWUP/3Hps+dixX3O6YHcemin0oHv
+q3DFujbaFJK+qHh6ofKMYk/vItdFE5mLXgpoSfCtn9aPyt9A8JuYnsxdpjs3Y6L5
+r+f38QUuMNa9xtqff05My4TSIjWq5XX6pM8sQE2u1t7TZEz1DVDghxb+aaFhbHK1
+fG9GvuOCo/7p+3nXAhg+JIoczYlZkN5huduAA/1w1g87rPCPQKovcQ/d17ZspqU0
+WyClNyAUiFg7sbYp+CqQqhQyYCKOe0fw9JU1Kyh23YeKMqsgS5DOu5ZW7Kl+Bcrl
+qQttbt0TInHhcPMzYTYCr1ylR0uCbCkTXyEfDTjcbd9VKcILIFWLGclkew25AKRr
+wmdbjfvmMpiwE5yqGh5tBpLVNZLJzQ1YoZuilNJnqQTtNN0qSB5SBKXHf+BA01tE
+Ryz1SW7K0ocgyKUf5hcZv+qAfX0EfyrxDnnxgIn80Pwua42m4cYQKqNLUywPdtkE
+wx9UnYirc9WnNW/ctma2b5Y0ANu4YxLMF1l9abjzzLhDXhxHdv6/2wSSPstyKOD1
+iZWHMeVQ4ntq3+S5W/TL2dKBgbDl4QUXs81aGNMQE72p1uoThFPiWWXuEwUVr+H3
+/c+2sIyGTixBKgGdP4k7TxXlhGSeL/rz61TLuziLQEDfYJrvuHKX6kW/CtkpPmIP
+mO/ClCMdn+yaHmn+t07o
+=xfaA
 -----END PGP SIGNATURE-----
 
 ```
@@ -27,139 +27,143 @@ Jf+29kgKvsPnMEtnaw/c
 #### Expect
 
 ```
-size     exec  file                                               contents                                                                                                                         
-               ./                                                                                                                                                                                  
-60               .directory                                       0e83b2cb4dc042236e38c6f8b2575dd0e30b70d4d396795008d5fb3facea2872                                                                 
-384              .gitignore                                       a93de2ae5c2a47a38599751d1f914566569dfa09dd1778e207117db6c71421dd                                                                 
-                 2012/                                                                                                                                                                             
-1678               1a.ciphertext                                  c7c16198650e7d91577683acca664a0e588ac5474046a028dea3d9dc4b388df8                                                                 
-1678               1a.plaintext                                   1b34de5b1d1422a3089c54d751dfd3938449c98526137a0b8b3b6561a700f9b5                                                                 
-3312               1b.ciphertext                                  ec263c5cb415f99924e5744846c618b2566a072ac79f6b3cfdde294b99c491fd                                                                 
-3323               1b.plaintext                                   a7fde879259e64fccca52618a9c008f2111e485ed1c6bfad863c90d8e6ceacae                                                                 
-1716               2a.ciphertext                                  2203112c5b43e09b61d8e2918554831559efc7a1157aafda85c25d5ae67f2f0f                                                                 
-1716               2a.plaintext                                   28afae88a3b3f0e553f326be7efb896587cb4ac43b9fd664d2cc3f9b2489de35                                                                 
-2268               2b.ciphertext                                  587ba7bb4c39d6bd23cbefdcef63d1211d81f6340d401027f9b8e97c97a71b6c                                                                 
-2268               2b.plaintext                                   4ee16e37ec82a6ea5446c3d03689bcf608d7408cf79542accaabc297fe6d9f97                                                                 
-1549               3a.ciphertext                                  fcfff1c90fb5e0cb4240b0617cd7a0bfb1f81ee513a572b44562a0e9db9b4a1b                                                                 
-1549               3a.plaintext                                   54c6b1ec3364c34a824ee693c00fa41c466f4bfccad281c4111ce1966232c9f4                                                                 
-2009               3b.ciphertext                                  4a568ac5e67430cd30a2bfd73214a7b3984b3117be16f649ea99c40d3de551c3                                                                 
-2118               3b.plaintext                                   a2b398c99fe1f00d3e7c558c5a9ea9d6739120d63e84b17f19d8f524ae9adf26                                                                 
-1495               4a.ciphertext                                  4cbf7aa5d463087f40c3ca724a3860f38b8cad1fc281374eb4567df004d3b5ca                                                                 
-1559               4a.plaintext                                   b1c02b4ed9df29fcefb046aec75a7702f6e6c1cd28bd56cc67bec1f4ae2af4fb                                                                 
-2137               4b.ciphertext                                  829ef4812a023567b9652c57f92da6f48c0b854694eac1a7c9452645723e15db                                                                 
-2212               4b.plaintext                                   d811c945afab0212c346531fd557c0f1d9a3fb0207835152a1426deda9e0b2a1                                                                 
-1449               5a.ciphertext                                  9fb9fbe92a26b3d1b2f54909e732a0d1afde90f97483affcfa9bbacb4edf3d77                                                                 
-1524               5a.plaintext                                   203ea3702e17269cbed804f019dd887ae7fc27b2585f1551fc758692e5ba14dd                                                                 
-2561               5b.ciphertext                                  c0bc2532c853e723fb7c3529c60ca859b7d61af238a98ddaabe0c01423e2a3ab                                                                 
-2618               5b.plaintext                                   61431a5bfd9a0e1e21e8ac7ba764ba46cc4b2a3e7adf22fff13153fdc278a451                                                                 
-1225               6a.ciphertext                                  d22c65b2445ab1228c8351239c37310188d4ec9e173825da43f79509d957aada                                                                 
-1285               6a.plaintext                                   27e574c224ad11d7b6258ef6212e8961decac5af3e93c9b08b0919c82c376f98                                                                 
-1478               6b.ciphertext                                  e80fc065648e8a4207a7d698cd0f39722d69df819fdf756a7d30e2886670542c                                                                 
-1544               6b.plaintext                                   424fc647b26f1ef153ec73eda2745896813bc1c6b498a5a0b0b05ff931ec5bf6                                                                 
-1331               7a.ciphertext                                  d73fe6633bafb097a283396bb5a9b8a5f025031453d1df14156f9c41e898fac3                                                                 
-1412               7a.plaintext                                   e13149a6f2df3d7d466f761d58c4a8ca3a82fbbc4f6dca983e83442e5caa748f                                                                 
-2551               7b.ciphertext                                  15200bf858dede4f6cabffaac54c14d37171cd4f7641a059258cd44b6cb98e7d                                                                 
-2661               7b.plaintext                                   430d167225a8f8c98d6e3f69aaca5846ba7d112567b987f3481832b07b03fc05                                                                 
-1125               8a.ciphertext                                  5c47ee5314dc118b515b2ab8dc5ed14c492294e70a67f9329ed10d3486fd9ba6                                                                 
-1195               8a.plaintext                                   a1deee4fa908fb536035435eb066d5c1fed91f962cfd0390f5c51fbb60caceb7                                                                 
-1783               8b.ciphertext                                  c782e2765c9e3cb0ec72cc77f063ad7f90f2a003d5078b452c24ce3a4549f696                                                                 
-1783               8b.plaintext                                   925b270f35dce522f0447085f78795a6f8101013648c836b029f0535f4d752e6                                                                 
-                 2013/                                                                                                                                                                             
-1340               1a.ciphertext                                  6b69f06bd684fdaa79ff35497715af6ded3c176277859d1d774bb2569dd53a97                                                                 
-1340               1a.plaintext                                   cbdaac33a7943a752ba5dd21cf7af23bdbdd22e4a5feb0bccecce45d605d0581                                                                 
-1495               1b.ciphertext                                  2e0389e2c7d3156892f7d361ee79f86eb79d34812fca37d8ce692cb6f3976446                                                                 
-1495               1b.plaintext                                   717b1f8955515a5d5d2f049f0ffe137820d71f8b2a1689e1a29ec30ed7c9d473                                                                 
-1135               2a.ciphertext                                  85ad3dac4751a8db90f391d0f06935a5ef2118d9ac72e05fe0518d7f77bff058                                                                 
-1135               2a.plaintext                                   11cdf7c462c536085daced417023adaeff2f6b7a6162ccd12b340b079bd36b48                                                                 
-926                2b.ciphertext                                  0fc59b28e4cd2db0aa9f28a603e2b25988a6688f05f90a59b205088093721340                                                                 
-973                2b.plaintext                                   019c012f87531e2f9173acae952e7d4a304ed1a62ef341e71455a128d3e7056f                                                                 
-983                3a.ciphertext                                  20ab3ad9342e51d82243a678eaf2bc9187553bcedb50c830541a54f34dc9b3dd                                                                 
-1090               3b.ciphertext                                  c35efccfb68ce3eaa5e7c699ed36a09f23aa719125e4df9f2faef11da1cd5d8a                                                                 
-1134               4a.ciphertext                                  523d35a8b412bf2e2a88b160529cae76c512d08f2a589ba53b2ac3c4d4184858                                                                 
-1061               4b.ciphertext                                  2cdebce220d9d20ef4c85f208999f81940383a9181bbb0e63b37b7031edcb688                                                                 
-875                5a.ciphertext                                  b841414d1fbf8af991df389b1b9466d0401c39074f7433dcf3e90648b4d9ab5f                                                                 
-957                5b.ciphertext                                  5b6303144fde83cdcdb74976da515933444b7c29efd8ad15d33e65edd2ef78fb                                                                 
-712                6a.ciphertext                                  1313d5ffe4e6d2ee82b4f4bbffbe522d5e073775baa53a11bec10c2a693bc7da                                                                 
-1888               6b.ciphertext                                  137618d9d92a8a28b7b7fff9a385c4c2db76dff10e0d326895cb0723a63a6adc                                                                 
-2132               7a.ciphertext                                  d604c136b793701d7501c72821d4069975ce098c2da55fac29331f0045c62b5f                                                                 
-1565               7b.ciphertext                                  adeef9d9e985c534c40acee5c6734d04195895a32efd9452a89cafef1fdc91b8                                                                 
-182                mona-lisa-words.txt                            d7d05c9c86f6282fa66df5f4ca795c89f01cef88a9ce8c921ce4484b3d6078a7                                                                 
-1190               solutions.txt                                  bd14d8cb1b6694ee4b07d7f38f4df7931e89c10247f101878b6056647bf67cee                                                                 
-135303           2013-challenge6.ipynb                            5b37a8b10db4c8d9831827a2acdffdcdb65369557d15b3e08a900ee8e088da73                                                                 
-31542            2013-challenge7.ipynb                            6de8c15b9cca8b166be4ab86df94898544803e7ed46f8042e363414bed1d2dcc                                                                 
-                 2014/                                                                                                                                                                             
-735                1a.ciphertext                                  3adb9e2747c6e3b4033c8042a6dcccb7c2e45988d64c5c78ec0a2c472dc88f95                                                                 
-610                1b.ciphertext                                  bc11485a47af830fa0ded0b07feebf042c0a6956dc71daa60b525067e96c220a                                                                 
-767                2a.ciphertext                                  3881a4f1fc0fadc064bc27d3052800b5eb497e833b208c2cee381b466c9b1db8                                                                 
-398                2b.ciphertext                                  78faf9d7a0aad25a9fa72f886c398bc0b684a389bc5624ab4514e93685157a93                                                                 
-958                3a.ciphertext                                  0d0524b194961bdbe6fe200cfe983a9338abcca5adabb6776769387967a50711                                                                 
-658                3b.ciphertext                                  f75662b32e941df727ef411f522ad348016b82e40f957fd6f51eb1b972c7456d                                                                 
-784                4a.ciphertext                                  44ae2388243a1782045b0d105612696bf3505517aa7a64f84c7b890e311aa54b                                                                 
-798                4b.ciphertext                                  d3c54580f2008f81f3a9d2bbc46ef861da192a5c9828ff79807a02dc20b5f3cb                                                                 
-1191               5a.ciphertext                                  e2bb31d68c7d3359c28f28dabe31ca679f8128903fd91fddc0eceb49483ef169                                                                 
-994                5b.ciphertext                                  b8087115c18209060ba9e0ce1032a9593fdeabbb55a86507c634b64c62a7c290                                                                 
-1168               6a.ciphertext                                  b7718e6b9e2ee029f7987178f702aad2e829d5f96d17a0e48b4365de4f5f1f6b                                                                 
-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                                                                 
-32758            2014-challenge4.ipynb                            1794b0b2c6fd4630f6d9ffe15ffdad52d04af23082eddc920ec02ba4740032e4                                                                 
-23322            2014-challenge5.ipynb                            fb3bb531c62ed943528715cc19e800293e3cd4a176ce3a3fe01e7e585386907e                                                                 
-40307            2014-challenge6.ipynb                            5085a4ae2a562c87983cbff817ac89826973341551980563ae0c77ab747a5dff                                                                 
-44472            2014-challenge7.ipynb                            9800d39c881f22f67f1182f6ca73bbf40a123d0deb598a6009f545f421955241                                                                 
-188080           2014-challenge8.ipynb                            c59bcfbb39e48e6e151cc0c86fe48add67844954cf3c65d560bbda0c972a8376                                                                 
-                 2015/                                                                                                                                                                             
-874                1a.ciphertext                                  5d0d71f24522e1c05127feb601bf8dc82566f3d2795fb51c4a60e22d900bb5eb                                                                 
-394                1b.ciphertext                                  a35e8265aea45ab5f7c5eb141e5e65c85ecc24c7d87f3e8197dfe6795a7d3226                                                                 
-1193               2a.ciphertext                                  412db1381dcb01f858bf848e48ada16aa4603cbb348c1f092ae39b06d2efa5f9                                                                 
-544                2b.ciphertext                                  5ff59d7cff1c4d27dee6414769bdbcfb0b0ab9c5931e772bf9f6442eeb9b6855                                                                 
-898                3a.ciphertext                                  5a9f89002db8520dbad882565a0130d3a462ed967e9cebeca828e9f727a267c4                                                                 
-549                3b.ciphertext                                  efe393ad39849468a04bec4a49d259074fa60c54aa3eac832af5f858fcd06bcd                                                                 
-917                4a.ciphertext                                  9c30e8793c161f3f0e1ef0aeb39c854166f9e8e84c149541c9d71d07ff3d37bd                                                                 
-984                4b.ciphertext                                  5bf05ed499b14dab3668ab0de750cf545f95cf498aa0824a990e7733750359dc                                                                 
-3620             2015-challenge1.ipynb                            2ab544f48c22a3a2e665b03ae094ac2de04aee8bdb37366209276a937d248d6a                                                                 
-4092             2015-challenge2.ipynb                            58c2aeca6c73a8fef71d0cc8321469358803f392c02fd44631dd0b25c2755f4a                                                                 
-3987             2015-challenge3.ipynb                            dfec26ba881c7ad0af54d072aeba4d08162661e863266936963130548ff86b65                                                                 
-7988             2015-challenge4.ipynb                            06b14cb018ba2d3140b68bbd651cdaf780de243228e5be881ac820b92faf9ff2                                                                 
-18025            LICENSE                                          a01259a1b522cf0de95824f9860613b453153eebac468e96196d5d7dba84786c                                                                 
-7999             LJ!-Qt!-Fghxft-dferts%3B-hsjeukaxxn-sfedw.ipynb  429b6c6995096ff19c28a5ee342bef8ea4774200bdf9aaf6268de3cb8b28df28                                                                 
-61               README.md                                        277247b410300ee16477b12ca54ad878d81c8061f6134e2e1cadccaf299de3a3                                                                 
-469              affine_break_parameter_trials.csv                1a9d635d0af2f41fc6f1e83ae87d6372034259321ba288a11fb024e98ed52f4f|dd9c840434de596a30c84e79de26a9824b36c217a84876c2aab0579b76999735
-6488666          big.txt                                          fa066c7d40f0f201ac4144e652aa62430e58a6b3805ec70650f678da5804e87b                                                                 
-16832            cadenus-ciphers.ipynb                            50e49b3ec5e6440b86fe13472b9f4ab9e133e5665c7280b2abf7a6b57bb8a89a                                                                 
-514              caesar_break_parameter_trials.csv                6586223bcc00e06e3ff79d107202d6c29ef962a6dd544add00610c5907407e85|1cb7cc77831ef3ef4f994a9ea77e82a841b38acdde45ede9cedbe7a54f1e8e46
-41380            cipher.py                                        39536843924325b9acdc6aad387c55240fc12a9c23caeaee6ef67e0d7b94e95c                                                                 
-28349            cipherbreak.py                                   2a4cdf810302d5645064e460a4409f32173b02fc4e7c7ce0a84d1458a04007bc                                                                 
-11564            count_1edit.txt                                  3bf563ef032ba151ec1a4b2d1f33f50c49f4a47e4dc5b8152394bc5b63f57655|b5fbacbebcc25f5011ce97bc9ac967a09c50eef28b4aa98379a6c426df6ac08b
-223              count_1l.txt                                     335388d457db6ef1da05d8b55ab879e9be7d4e021085efc8d9dfeac0e4a79aa9                                                                 
-4956241          count_1w.txt                                     51df159fd3de12b20e403c108f526e96dbd723d9cabdd5f17955cdc16059e690                                                                 
-9270             count_2l.txt                                     bc2895f800189070c193907cd8bca956ad65fed2e25c14300d4bb5b6a243ba99                                                                 
-5566017          count_2w.txt                                     781c0596c3eea532d30bef9f3dba1d5137d652f00376260822c761a7584dfb8c                                                                 
-220441           count_3l.txt                                     8702c95530c7d0d182ab94dc03ed7681fcf969819f6db011a58de31411dc6365                                                                 
-320508           count_big.txt                                    3ba257fba1934bd138413d8274e79b56c5992431a27692fd562929aa43ec01a3                                                                 
-3355             find_best_affine_break_parameters.py             6b11004bb93ac26ec7d42d33504e758edbaf9d55365ae2e4ca2fca7589263f25                                                                 
-3027             find_best_caesar_break_parameters.py             0347d80309179d937a88fd1c8684490a513ccd086366c5a0dd55b8a2fe5c565f                                                                 
-1236             find_wikipedia_titles.py                         f040bf855dfec7fff9d8e5eba2fb509179bc53bc02a20b26b7fc61fef983aa45                                                                 
-37128            hill-ciphers.ipynb                               ce802c2be807b4565858b568d3a82c65a3957aa625344189f8f2a055237b3fdd                                                                 
-5516             language_models.py                               9f6c60892b385a8443202edda95074eb28e2b66981e25e27f4153b887e2c9ee3                                                                 
-368              lettercount.py                                   ed36497d62cf75b91994055e4a18848b2fabe5ce793cd76a77fabfc94d81d4f3                                                                 
-592              make-cracking-dictionary.py                      71791e64e4853cd9ca292cb436bbe8c72dd60f509811174df93ed2067683d5c1                                                                 
-7077             norms.py                                         a657a36c1741e6f3a513386b318fcc99e6b11f98ec64a48284b47462ff2acf30                                                                 
-8411             norms.pyc                                        ac7a18765c7bcc27e406d8f38d943408097b3384a271502185d53482e6ec0da7|002b186e716cec64869a00bd2d72e16614931e696daa0cf3529d634a0f270e42
-112847           plot-caesar-parameters.ipynb                     639459b4b2e434f9f0852c012ed9a8a8d87bd1cb6c2d65ca5abfdb0e42c3dea6                                                                 
-23863            railfence-experiment-1.ipynb                     e34a61cef19b3249a3d6d731fe054769c02233b0be661161ebf45bada3b7b97b                                                                 
-18628            railfence-experiment-2.ipynb                     8c4d90c1c934b764deba0956bb4be81868e463789dc8fe02e5621ab3a95c0889                                                                 
-881              segment.py                                       94d257cc6151861ef3d3033c4d2d03d8c121b0a982344abf400f65fd507fed28                                                                 
-4538523          shakespeare.txt                                  6f9c770efced5c3d87efa6197cd3091b982341372e36c6357f865df91ddecde6                                                                 
-451530           spell-errors.txt                                 a4abe6ce6c24280f9a8d0485cbf78ddd2e58279ca01293692630a08ba4b13407                                                                 
-69351            unknown-word-probability-investigation.ipynb     8a9cd7163f10bf2bfb3e286445eddcfc953f80abfdef4e29dac27617a53c3d41                                                                 
-3291641          war-and-peace.txt                                3ed0f41cfdf660846878943bad5b9d575bcae1e4a92ee9a7f43d3c9dba2af344|6799e48d3fd0a6f4c40b9951ec86de6da81f0b9cd36e413490ac511542ca54d3
-868202           words.txt                                        aa77abbcba3c6dee1306d93adcedc2b2ccb8a4e0344a39d0676732ff58ebd5e5                                                                 
-868384           words_2013.txt                                   57faa4841fe28dd82a5da4488b6381c194df6e1ecc04e61fb9f60e842bbca18c                                                                 
+size     exec  file                                                                       contents                                                                                                                         
+               ./                                                                                                                                                                                                          
+60               .directory                                                               0e83b2cb4dc042236e38c6f8b2575dd0e30b70d4d396795008d5fb3facea2872                                                                 
+384              .gitignore                                                               a93de2ae5c2a47a38599751d1f914566569dfa09dd1778e207117db6c71421dd                                                                 
+                 2012/                                                                                                                                                                                                     
+1678               1a.ciphertext                                                          c7c16198650e7d91577683acca664a0e588ac5474046a028dea3d9dc4b388df8                                                                 
+1678               1a.plaintext                                                           1b34de5b1d1422a3089c54d751dfd3938449c98526137a0b8b3b6561a700f9b5                                                                 
+3312               1b.ciphertext                                                          ec263c5cb415f99924e5744846c618b2566a072ac79f6b3cfdde294b99c491fd                                                                 
+3323               1b.plaintext                                                           a7fde879259e64fccca52618a9c008f2111e485ed1c6bfad863c90d8e6ceacae                                                                 
+1716               2a.ciphertext                                                          2203112c5b43e09b61d8e2918554831559efc7a1157aafda85c25d5ae67f2f0f                                                                 
+1716               2a.plaintext                                                           28afae88a3b3f0e553f326be7efb896587cb4ac43b9fd664d2cc3f9b2489de35                                                                 
+2268               2b.ciphertext                                                          587ba7bb4c39d6bd23cbefdcef63d1211d81f6340d401027f9b8e97c97a71b6c                                                                 
+2268               2b.plaintext                                                           4ee16e37ec82a6ea5446c3d03689bcf608d7408cf79542accaabc297fe6d9f97                                                                 
+1549               3a.ciphertext                                                          fcfff1c90fb5e0cb4240b0617cd7a0bfb1f81ee513a572b44562a0e9db9b4a1b                                                                 
+1549               3a.plaintext                                                           54c6b1ec3364c34a824ee693c00fa41c466f4bfccad281c4111ce1966232c9f4                                                                 
+2009               3b.ciphertext                                                          4a568ac5e67430cd30a2bfd73214a7b3984b3117be16f649ea99c40d3de551c3                                                                 
+2118               3b.plaintext                                                           a2b398c99fe1f00d3e7c558c5a9ea9d6739120d63e84b17f19d8f524ae9adf26                                                                 
+1495               4a.ciphertext                                                          4cbf7aa5d463087f40c3ca724a3860f38b8cad1fc281374eb4567df004d3b5ca                                                                 
+1559               4a.plaintext                                                           b1c02b4ed9df29fcefb046aec75a7702f6e6c1cd28bd56cc67bec1f4ae2af4fb                                                                 
+2137               4b.ciphertext                                                          829ef4812a023567b9652c57f92da6f48c0b854694eac1a7c9452645723e15db                                                                 
+2212               4b.plaintext                                                           d811c945afab0212c346531fd557c0f1d9a3fb0207835152a1426deda9e0b2a1                                                                 
+1449               5a.ciphertext                                                          9fb9fbe92a26b3d1b2f54909e732a0d1afde90f97483affcfa9bbacb4edf3d77                                                                 
+1524               5a.plaintext                                                           203ea3702e17269cbed804f019dd887ae7fc27b2585f1551fc758692e5ba14dd                                                                 
+2561               5b.ciphertext                                                          c0bc2532c853e723fb7c3529c60ca859b7d61af238a98ddaabe0c01423e2a3ab                                                                 
+2618               5b.plaintext                                                           61431a5bfd9a0e1e21e8ac7ba764ba46cc4b2a3e7adf22fff13153fdc278a451                                                                 
+1225               6a.ciphertext                                                          d22c65b2445ab1228c8351239c37310188d4ec9e173825da43f79509d957aada                                                                 
+1285               6a.plaintext                                                           27e574c224ad11d7b6258ef6212e8961decac5af3e93c9b08b0919c82c376f98                                                                 
+1478               6b.ciphertext                                                          e80fc065648e8a4207a7d698cd0f39722d69df819fdf756a7d30e2886670542c                                                                 
+1544               6b.plaintext                                                           424fc647b26f1ef153ec73eda2745896813bc1c6b498a5a0b0b05ff931ec5bf6                                                                 
+1331               7a.ciphertext                                                          d73fe6633bafb097a283396bb5a9b8a5f025031453d1df14156f9c41e898fac3                                                                 
+1412               7a.plaintext                                                           e13149a6f2df3d7d466f761d58c4a8ca3a82fbbc4f6dca983e83442e5caa748f                                                                 
+2551               7b.ciphertext                                                          15200bf858dede4f6cabffaac54c14d37171cd4f7641a059258cd44b6cb98e7d                                                                 
+2661               7b.plaintext                                                           430d167225a8f8c98d6e3f69aaca5846ba7d112567b987f3481832b07b03fc05                                                                 
+1125               8a.ciphertext                                                          5c47ee5314dc118b515b2ab8dc5ed14c492294e70a67f9329ed10d3486fd9ba6                                                                 
+1195               8a.plaintext                                                           a1deee4fa908fb536035435eb066d5c1fed91f962cfd0390f5c51fbb60caceb7                                                                 
+1783               8b.ciphertext                                                          c782e2765c9e3cb0ec72cc77f063ad7f90f2a003d5078b452c24ce3a4549f696                                                                 
+1783               8b.plaintext                                                           925b270f35dce522f0447085f78795a6f8101013648c836b029f0535f4d752e6                                                                 
+                 2013/                                                                                                                                                                                                     
+1340               1a.ciphertext                                                          6b69f06bd684fdaa79ff35497715af6ded3c176277859d1d774bb2569dd53a97                                                                 
+1340               1a.plaintext                                                           cbdaac33a7943a752ba5dd21cf7af23bdbdd22e4a5feb0bccecce45d605d0581                                                                 
+1495               1b.ciphertext                                                          2e0389e2c7d3156892f7d361ee79f86eb79d34812fca37d8ce692cb6f3976446                                                                 
+1495               1b.plaintext                                                           717b1f8955515a5d5d2f049f0ffe137820d71f8b2a1689e1a29ec30ed7c9d473                                                                 
+1135               2a.ciphertext                                                          85ad3dac4751a8db90f391d0f06935a5ef2118d9ac72e05fe0518d7f77bff058                                                                 
+1135               2a.plaintext                                                           11cdf7c462c536085daced417023adaeff2f6b7a6162ccd12b340b079bd36b48                                                                 
+926                2b.ciphertext                                                          0fc59b28e4cd2db0aa9f28a603e2b25988a6688f05f90a59b205088093721340                                                                 
+973                2b.plaintext                                                           019c012f87531e2f9173acae952e7d4a304ed1a62ef341e71455a128d3e7056f                                                                 
+983                3a.ciphertext                                                          20ab3ad9342e51d82243a678eaf2bc9187553bcedb50c830541a54f34dc9b3dd                                                                 
+1090               3b.ciphertext                                                          c35efccfb68ce3eaa5e7c699ed36a09f23aa719125e4df9f2faef11da1cd5d8a                                                                 
+1134               4a.ciphertext                                                          523d35a8b412bf2e2a88b160529cae76c512d08f2a589ba53b2ac3c4d4184858                                                                 
+1061               4b.ciphertext                                                          2cdebce220d9d20ef4c85f208999f81940383a9181bbb0e63b37b7031edcb688                                                                 
+875                5a.ciphertext                                                          b841414d1fbf8af991df389b1b9466d0401c39074f7433dcf3e90648b4d9ab5f                                                                 
+957                5b.ciphertext                                                          5b6303144fde83cdcdb74976da515933444b7c29efd8ad15d33e65edd2ef78fb                                                                 
+712                6a.ciphertext                                                          1313d5ffe4e6d2ee82b4f4bbffbe522d5e073775baa53a11bec10c2a693bc7da                                                                 
+1888               6b.ciphertext                                                          137618d9d92a8a28b7b7fff9a385c4c2db76dff10e0d326895cb0723a63a6adc                                                                 
+2132               7a.ciphertext                                                          d604c136b793701d7501c72821d4069975ce098c2da55fac29331f0045c62b5f                                                                 
+1565               7b.ciphertext                                                          adeef9d9e985c534c40acee5c6734d04195895a32efd9452a89cafef1fdc91b8                                                                 
+182                mona-lisa-words.txt                                                    d7d05c9c86f6282fa66df5f4ca795c89f01cef88a9ce8c921ce4484b3d6078a7                                                                 
+1190               solutions.txt                                                          bd14d8cb1b6694ee4b07d7f38f4df7931e89c10247f101878b6056647bf67cee                                                                 
+135303           2013-challenge6.ipynb                                                    5b37a8b10db4c8d9831827a2acdffdcdb65369557d15b3e08a900ee8e088da73                                                                 
+31542            2013-challenge7.ipynb                                                    6de8c15b9cca8b166be4ab86df94898544803e7ed46f8042e363414bed1d2dcc                                                                 
+                 2014/                                                                                                                                                                                                     
+735                1a.ciphertext                                                          3adb9e2747c6e3b4033c8042a6dcccb7c2e45988d64c5c78ec0a2c472dc88f95                                                                 
+610                1b.ciphertext                                                          bc11485a47af830fa0ded0b07feebf042c0a6956dc71daa60b525067e96c220a                                                                 
+767                2a.ciphertext                                                          3881a4f1fc0fadc064bc27d3052800b5eb497e833b208c2cee381b466c9b1db8                                                                 
+398                2b.ciphertext                                                          78faf9d7a0aad25a9fa72f886c398bc0b684a389bc5624ab4514e93685157a93                                                                 
+958                3a.ciphertext                                                          0d0524b194961bdbe6fe200cfe983a9338abcca5adabb6776769387967a50711                                                                 
+658                3b.ciphertext                                                          f75662b32e941df727ef411f522ad348016b82e40f957fd6f51eb1b972c7456d                                                                 
+784                4a.ciphertext                                                          44ae2388243a1782045b0d105612696bf3505517aa7a64f84c7b890e311aa54b                                                                 
+798                4b.ciphertext                                                          d3c54580f2008f81f3a9d2bbc46ef861da192a5c9828ff79807a02dc20b5f3cb                                                                 
+1191               5a.ciphertext                                                          e2bb31d68c7d3359c28f28dabe31ca679f8128903fd91fddc0eceb49483ef169                                                                 
+994                5b.ciphertext                                                          b8087115c18209060ba9e0ce1032a9593fdeabbb55a86507c634b64c62a7c290                                                                 
+1168               6a.ciphertext                                                          b7718e6b9e2ee029f7987178f702aad2e829d5f96d17a0e48b4365de4f5f1f6b                                                                 
+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                                                                 
+32758            2014-challenge4.ipynb                                                    1794b0b2c6fd4630f6d9ffe15ffdad52d04af23082eddc920ec02ba4740032e4                                                                 
+23322            2014-challenge5.ipynb                                                    fb3bb531c62ed943528715cc19e800293e3cd4a176ce3a3fe01e7e585386907e                                                                 
+40307            2014-challenge6.ipynb                                                    5085a4ae2a562c87983cbff817ac89826973341551980563ae0c77ab747a5dff                                                                 
+44472            2014-challenge7.ipynb                                                    9800d39c881f22f67f1182f6ca73bbf40a123d0deb598a6009f545f421955241                                                                 
+188080           2014-challenge8.ipynb                                                    c59bcfbb39e48e6e151cc0c86fe48add67844954cf3c65d560bbda0c972a8376                                                                 
+                 2015/                                                                                                                                                                                                     
+874                1a.ciphertext                                                          5d0d71f24522e1c05127feb601bf8dc82566f3d2795fb51c4a60e22d900bb5eb                                                                 
+394                1b.ciphertext                                                          a35e8265aea45ab5f7c5eb141e5e65c85ecc24c7d87f3e8197dfe6795a7d3226                                                                 
+1193               2a.ciphertext                                                          412db1381dcb01f858bf848e48ada16aa4603cbb348c1f092ae39b06d2efa5f9                                                                 
+544                2b.ciphertext                                                          5ff59d7cff1c4d27dee6414769bdbcfb0b0ab9c5931e772bf9f6442eeb9b6855                                                                 
+898                3a.ciphertext                                                          5a9f89002db8520dbad882565a0130d3a462ed967e9cebeca828e9f727a267c4                                                                 
+549                3b.ciphertext                                                          efe393ad39849468a04bec4a49d259074fa60c54aa3eac832af5f858fcd06bcd                                                                 
+917                4a.ciphertext                                                          9c30e8793c161f3f0e1ef0aeb39c854166f9e8e84c149541c9d71d07ff3d37bd                                                                 
+1032               4b.ciphertext                                                          e99143388a6eacb81442ef594bdb0820992eaf89f3a0def9250b4b60ce7ef04b                                                                 
+1576               5a.ciphertext                                                          73011f47f1412903e23a718da397ed3ba3a0306e72299d5abf401d93fc451205                                                                 
+840                5b.ciphertext                                                          69f3e64a2fa925a84f1f0b09b30bf901564436519f1c8b515121219fcd544638                                                                 
+3620             2015-challenge1.ipynb                                                    2ab544f48c22a3a2e665b03ae094ac2de04aee8bdb37366209276a937d248d6a                                                                 
+4092             2015-challenge2.ipynb                                                    58c2aeca6c73a8fef71d0cc8321469358803f392c02fd44631dd0b25c2755f4a                                                                 
+3987             2015-challenge3.ipynb                                                    dfec26ba881c7ad0af54d072aeba4d08162661e863266936963130548ff86b65                                                                 
+8030             2015-challenge4.ipynb                                                    f77ead0eae7fcd67039d500a31ad1748a4df115905adecd0e93e56f72bbdcfa0                                                                 
+5039             2015-challenge5.ipynb                                                    b0c28829c329d7a2752f4991006e6d78a10415d7609b893b80b3bdb788d6e533                                                                 
+18025            LICENSE                                                                  a01259a1b522cf0de95824f9860613b453153eebac468e96196d5d7dba84786c                                                                 
+7999             LJ!-Qt!-Fghxft-dferts%3B-hsjeukaxxn-sfedw.ipynb                          429b6c6995096ff19c28a5ee342bef8ea4774200bdf9aaf6268de3cb8b28df28                                                                 
+429647           Programming+for+A+level+Computing+through+automated+cipher+breaking.pdf  2f4008ad7217d7902c99bbfc7394c9b9128a3073f4c5d096ef4653d753358b9d|6c1eb93f74c8e3fd5a180e80ce7b315cb642a9f5f66805a4398f6b793dd9b852
+61               README.md                                                                277247b410300ee16477b12ca54ad878d81c8061f6134e2e1cadccaf299de3a3                                                                 
+469              affine_break_parameter_trials.csv                                        1a9d635d0af2f41fc6f1e83ae87d6372034259321ba288a11fb024e98ed52f4f|dd9c840434de596a30c84e79de26a9824b36c217a84876c2aab0579b76999735
+6488666          big.txt                                                                  fa066c7d40f0f201ac4144e652aa62430e58a6b3805ec70650f678da5804e87b                                                                 
+16832            cadenus-ciphers.ipynb                                                    50e49b3ec5e6440b86fe13472b9f4ab9e133e5665c7280b2abf7a6b57bb8a89a                                                                 
+514              caesar_break_parameter_trials.csv                                        6586223bcc00e06e3ff79d107202d6c29ef962a6dd544add00610c5907407e85|1cb7cc77831ef3ef4f994a9ea77e82a841b38acdde45ede9cedbe7a54f1e8e46
+41380            cipher.py                                                                39536843924325b9acdc6aad387c55240fc12a9c23caeaee6ef67e0d7b94e95c                                                                 
+28349            cipherbreak.py                                                           2a4cdf810302d5645064e460a4409f32173b02fc4e7c7ce0a84d1458a04007bc                                                                 
+11564            count_1edit.txt                                                          3bf563ef032ba151ec1a4b2d1f33f50c49f4a47e4dc5b8152394bc5b63f57655|b5fbacbebcc25f5011ce97bc9ac967a09c50eef28b4aa98379a6c426df6ac08b
+223              count_1l.txt                                                             335388d457db6ef1da05d8b55ab879e9be7d4e021085efc8d9dfeac0e4a79aa9                                                                 
+4956241          count_1w.txt                                                             51df159fd3de12b20e403c108f526e96dbd723d9cabdd5f17955cdc16059e690                                                                 
+9270             count_2l.txt                                                             bc2895f800189070c193907cd8bca956ad65fed2e25c14300d4bb5b6a243ba99                                                                 
+5566017          count_2w.txt                                                             781c0596c3eea532d30bef9f3dba1d5137d652f00376260822c761a7584dfb8c                                                                 
+220441           count_3l.txt                                                             8702c95530c7d0d182ab94dc03ed7681fcf969819f6db011a58de31411dc6365                                                                 
+320508           count_big.txt                                                            3ba257fba1934bd138413d8274e79b56c5992431a27692fd562929aa43ec01a3                                                                 
+3355             find_best_affine_break_parameters.py                                     6b11004bb93ac26ec7d42d33504e758edbaf9d55365ae2e4ca2fca7589263f25                                                                 
+3027             find_best_caesar_break_parameters.py                                     0347d80309179d937a88fd1c8684490a513ccd086366c5a0dd55b8a2fe5c565f                                                                 
+1236             find_wikipedia_titles.py                                                 f040bf855dfec7fff9d8e5eba2fb509179bc53bc02a20b26b7fc61fef983aa45                                                                 
+37128            hill-ciphers.ipynb                                                       ce802c2be807b4565858b568d3a82c65a3957aa625344189f8f2a055237b3fdd                                                                 
+5516             language_models.py                                                       9f6c60892b385a8443202edda95074eb28e2b66981e25e27f4153b887e2c9ee3                                                                 
+368              lettercount.py                                                           ed36497d62cf75b91994055e4a18848b2fabe5ce793cd76a77fabfc94d81d4f3                                                                 
+592              make-cracking-dictionary.py                                              71791e64e4853cd9ca292cb436bbe8c72dd60f509811174df93ed2067683d5c1                                                                 
+7077             norms.py                                                                 a657a36c1741e6f3a513386b318fcc99e6b11f98ec64a48284b47462ff2acf30                                                                 
+8411             norms.pyc                                                                ac7a18765c7bcc27e406d8f38d943408097b3384a271502185d53482e6ec0da7|002b186e716cec64869a00bd2d72e16614931e696daa0cf3529d634a0f270e42
+112847           plot-caesar-parameters.ipynb                                             639459b4b2e434f9f0852c012ed9a8a8d87bd1cb6c2d65ca5abfdb0e42c3dea6                                                                 
+23863            railfence-experiment-1.ipynb                                             e34a61cef19b3249a3d6d731fe054769c02233b0be661161ebf45bada3b7b97b                                                                 
+18628            railfence-experiment-2.ipynb                                             8c4d90c1c934b764deba0956bb4be81868e463789dc8fe02e5621ab3a95c0889                                                                 
+881              segment.py                                                               94d257cc6151861ef3d3033c4d2d03d8c121b0a982344abf400f65fd507fed28                                                                 
+4538523          shakespeare.txt                                                          6f9c770efced5c3d87efa6197cd3091b982341372e36c6357f865df91ddecde6                                                                 
+451530           spell-errors.txt                                                         a4abe6ce6c24280f9a8d0485cbf78ddd2e58279ca01293692630a08ba4b13407                                                                 
+69351            unknown-word-probability-investigation.ipynb                             8a9cd7163f10bf2bfb3e286445eddcfc953f80abfdef4e29dac27617a53c3d41                                                                 
+3291641          war-and-peace.txt                                                        3ed0f41cfdf660846878943bad5b9d575bcae1e4a92ee9a7f43d3c9dba2af344|6799e48d3fd0a6f4c40b9951ec86de6da81f0b9cd36e413490ac511542ca54d3
+868202           words.txt                                                                aa77abbcba3c6dee1306d93adcedc2b2ccb8a4e0344a39d0676732ff58ebd5e5                                                                 
+868384           words_2013.txt                                                           57faa4841fe28dd82a5da4488b6381c194df6e1ecc04e61fb9f60e842bbca18c                                                                 
 ```
 
 #### Ignore