Done challenge 4
authorNeil Smith <neil.git@njae.me.uk>
Thu, 4 Nov 2021 16:21:21 +0000 (16:21 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Thu, 4 Nov 2021 16:21:21 +0000 (16:21 +0000)
2021/2021-challenge4.ipynb [new file with mode: 0644]
2021/2021-challenge4.md [new file with mode: 0644]
2021/ciphertext.4a.txt [new file with mode: 0644]
2021/ciphertext.4b.txt [new file with mode: 0644]
2021/plaintext.4a.txt [new file with mode: 0644]
2021/plaintext.4b.txt [new file with mode: 0644]

diff --git a/2021/2021-challenge4.ipynb b/2021/2021-challenge4.ipynb
new file mode 100644 (file)
index 0000000..486fd0a
--- /dev/null
@@ -0,0 +1,311 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "5c19999b",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [],
+   "source": [
+    "from szyfrow.caesar import *\n",
+    "from szyfrow.affine import *\n",
+    "from szyfrow.keyword_cipher import *\n",
+    "from szyfrow.support.text_prettify import *"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "d9dd1b5e",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [],
+   "source": [
+    "challenge_number = 4\n",
+    "plaintext_a_filename = f'plaintext.{challenge_number}a.txt'\n",
+    "plaintext_b_filename = f'plaintext.{challenge_number}b.txt'\n",
+    "ciphertext_a_filename = f'ciphertext.{challenge_number}a.txt'\n",
+    "ciphertext_b_filename = f'ciphertext.{challenge_number}b.txt'"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "0f1f792a",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [],
+   "source": [
+    "ca = open(ciphertext_a_filename).read()\n",
+    "cb = open(ciphertext_b_filename).read()\n",
+    "\n",
+    "sca = sanitise(ca)\n",
+    "scb = sanitise(cb)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "c3cccd86-5e40-4040-8f91-9ca53ac6e909",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "archive KeywordWrapAlphabet.from_last \n",
+      "\n",
+      "harry iamba ckisp entmo stoft helas ttwow eeksi nthev aultt rying tounp ackso meoft hemys terys urrou nding theli ghtho useco nspir acycr ewand ithin kimad esome progr esswh ileiw asawa ythet raine estac kledt helet terfr omabc andth eydid agrea tjobt heyar eshap ingup welli think wewil lbegl adoft heirh elpas thisc asepr ogres sesth elibr arian atthe vault wasve ryhel pfula ndwhe nitol dherw hatiw asloo kingf orshe point edmet oanar chive ofvic toria npape rscon cerni ngsci entis tseng ineer sands ocial refor merst hatha dreco rdede arlyb ackgr oundi nvest igati onsin topeo pleof inter estis aypeo plebu tidid notic ethat there wasah eavyb iasto inves tigat ingwo menba ckthe niwas surpr iseda tfirs tihad assum edtha tthey would haveb eenla rgely ignor edbut isupp oseth esere marka blewo menma dethe irpre sence known andpe rhaps thees tabli shmen tfelt threa tened inmos tcase sther earen ostan dards ecuri tyfil esfor these women butwh ereth erewe rethe ywere atbes tthin there allyi ntere sting mater ialwa sinth ehidd enarc hivew herei found repor tsand paper sabou tlove lacen ighti ngale andab cases tabli shmen tfigu resth emsel vesth eysee mtoha vebee nigno redby these crets ervic eandc learl ynotc onsid ereda secur ityth reatb utour bossf orebe arsdi dcarr youti nvest igati onsin tothe iract iviti esand there arecl earsi gnsth atthe ymayh avewo rkedt ogeth erobv iousl ythef actth atthe ywere makin gsuch animp acton socie tywas enoug htoma kesom epeop lener vousa ftera llitw asati meofg reatc hange andco ncern sabou trevo lutio nwere veryr ealon eofth enote sonfi lesug gests thatt hegro wingc ampai gnfor women ssuff ragea ndsoc ialac tivis mmigh thave beent hesta rtofa ninsu rrect ionan ditna medse veral ofour prota gonis tsbut itdid ntsay howth eymig hthav einte ndedt otrig gerth eupri singw hatwe haves eenso faris thatw hatev erthe light house consp iracy wereu ptoth eywen ttoex traor dinar yleng thsto keepi tsecr etand thefa cttha twear eonly nowun cover ingit sugge ststh atitw asmuc hsubt lerth anapl anned upris ingia mstil lstru gglin gwith theid eatha tpeop lewho werep artof thebi rthof bossc ouldh avebe enact ingse cretl yagai nstus butth atisc ertai nlyim plied bysom eofth efile sweha vecra ckeda ndthe attac heddo cumen thasa ddedt omywo rries itwas writt enint heaft ermat hofth ehind enbur gdisa sterb ysome oneit hinky oukne wwell sheha dafan tasti creco rdwor kingd eepun derco veran drepo rting backt owest ernin telli gence agenc iesbu tthet hingt hatca ughtm yeyew astha there sheus edthe coden ameau gusta idont knowi fyoua lread yspot tedit butth elett ering aroun dthee dgeof theli ghtho usest ampre adsad aaddd aaada aadad andsu bstit uting theaa nddfo rdota nddas hspel lsout herco denam eitho ughta tfirs tthat imigh tbere ading toomu chint oitth elett erinh erfil eseem sneve rtoha vebee nbrok ensom eonew roted ouble encry ptedo nthee nvelo peand igues sthat wasen ought odiss uadet heage ncies froms pendi ngmuc htime onitw ithhi ndsig htiti spret tyobv ioust hatac tuall yitha sjust beene ncryp tedon ceand thene ncode dasmo rseco deusi ngthe samec onven tiona equal sdotd equal sdash oncet hatha dbeen untan gledi found itpre ttyea sytob reaka ndiam veryw orrie dabou twhat ifoun dithi nkyou needt otake alook jodie\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "(word_a, wrap_a), score_a = keyword_break(sca)\n",
+    "print(word_a, wrap_a, '\\n')\n",
+    "pa = keyword_decipher(ca, word_a, wrap_a)\n",
+    "print(pa)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "c7f2e770-8062-4d18-b90a-cb2e410ef88c",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "harry i am back i spent most of the last two weeks in the vault trying to unpack some of the mystery\n",
+      "surrounding the lighthouse conspiracy crew and i think i made some progress while i was away the\n",
+      "trainees tackled the letter from abc and they did a great job they are shaping up well i think we\n",
+      "will be glad of their help as this case progresses the librarian at the vault was very helpful and\n",
+      "when it old her what i was looking for she pointed me to an archive of victorian papers concerning\n",
+      "scientists engineers and social reformers that had recorded early background investigations into\n",
+      "people of interest i say people but i did notice that there was a heavy bias to investigating women\n",
+      "back then i was surprised at first i had assumed that they would have been largely ignored but i\n",
+      "suppose these remarkable women made their presence known and perhaps the establishment felt\n",
+      "threatened in most cases there are no standard security files for these women but where there were\n",
+      "they were at best thin the really interesting material was in the hidden archive where i found\n",
+      "reports and papers about lovelace nightingale and abc as establishment figures themselves they seem\n",
+      "to have been ignored by the secret service and clearly not considered a security threat but our boss\n",
+      "forebears did carryout investigations into their activities and there are clear signs that they may\n",
+      "have worked together obviously the fact that they were making such an impact on society was enough\n",
+      "to make some people nervous after all it was a time of great change and concerns about revolution\n",
+      "were very real one of the notes on file suggests that the growing campaign for womens suffrage and\n",
+      "social activism might have been the start of an insurrection and it named several of our\n",
+      "protagonists but it didnt say how they might have intended to trigger the uprising what we have seen\n",
+      "so far is that whatever the lighthouse conspiracy were up to they went to extraordinary lengths to\n",
+      "keep it secret and the fact that we are only now uncovering it suggests that it was much subtler\n",
+      "than a planned uprising i am still struggling with the idea that people who were part of the birth\n",
+      "of boss could have been acting secretly against us but that is certainly implied by some of the\n",
+      "files we have cracked and the attached document has added to my worries it was written in the\n",
+      "aftermath of the hindenburg disaster by someone i think you knew well she had a fantastic record\n",
+      "working deep undercover and reporting back to western intelligence agencies but the thing that\n",
+      "caught my eye was that here she used the codename augusta i dont know if you already spotted it but\n",
+      "the lettering around the edge of the lighthouse stamp reads ada add da a ada a a dad and\n",
+      "substituting the a and d for dot and dash spells out her codename i thought at first that i might be\n",
+      "reading too much into it the letter in her file seems never to have been broken someone wrote double\n",
+      "encrypted on the envelope and i guess that was enough to dissuade the agencies from spending much\n",
+      "time on it with hindsight it is pretty obvious that actually it has just been encrypted once and\n",
+      "then encoded as morsecode using the same convention a equals dotd equals dash once that had been\n",
+      "untangled i found it pretty easy to break and i am very worried about what i found i think you need\n",
+      "to take a look jodie\n"
+     ]
+    }
+   ],
+   "source": [
+    "pa = keyword_decipher(sca, word_a, wrap_a)\n",
+    "print(prettify(pa))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "6cecddd9",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "3341"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "open(plaintext_a_filename, 'w').write(prettify(pa))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "77e0eb5c-226d-4197-a687-4a5d725c6af0",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "morse_chars = 'a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'.split()\n",
+    "# morse_chars"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "0c7912fb-f552-4933-9730-3784197fc729",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "morse_codes = '.- / -... / -.-. / -.. / . / ..-. / --. / .... / .. / .--- / -.- / .-.. / -- / -. / --- / .--. / --.- / .-. / ... / - / ..- / ...- / .-- / -..- / -.-- / --.. / ----- / .---- / ..--- / ...-- / ....- / ..... / -.... / --... / ---.. / ----.'.split(' / ')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "id": "ae62967b-0c5d-4e14-adf2-8cad03ed6970",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['.-', '-...', '-.-.']"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "char_to_morse = {l: c for l, c in zip(morse_chars, morse_codes)}\n",
+    "morse_to_char = {c: l for l, c in zip(morse_chars, morse_codes)}\n",
+    "[char_to_morse[l] for l in 'abc']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "id": "d5c24bcb-fda8-40f0-89ba-166380046fc9",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'otjsjseifzotyijsfeajzmoafzkfacjtntjtegsaneyeceggaftwqifzoytygcaweayhczxbweptjqayhotjsjsajjsefetgaifzotyiftgvjsajzkfxtggtzyotwwlekycznefehlqzyezmjsebafjtegjzjseczymwtcjtsaneleeyalwejzhftbmeehtyjewwtieycejzjseoegjefyawwtegntajsetfaieyjsaffqayhagmafagtcayjewwsefexatygtiyzfayjzmzkfjfkebkfbzgeyzyejseweggjseftgvfexatygstiszmzyezflzjsgthegacdktftyijsegecfejjzajzxtcoeabzygeafwqayhoeotwwyeehjzacjmagjtmoeafejzbfeneyjjstgjsewzggzmjsestyheylkfibfegeyjehamalkwzkgzbbzfjkytjqayhtkgehtjjzxavegkfejsajjseawwtegkyhefgjzzhosajjseyartgcteyjtgjgoefeozfvtyizytsanejftehyzjjzbfznthesaffqotjsjzzxkcstymzfxajtzyajjstggjaiegtycetjtgcfkctawjzzkfxtggtzyjsajoexatyjatyjselawaycezmkycefjatyjqtjtgyzjajawwcweafoszxtisjotyjseykcweafafxgfacelkjzkfepbefteycezmjsexzyjsgayhqeafgweahtyikbjzjseifeajoafgkiiegjgjsajjsefaceotwwsanetjgzoyxzxeyjkxayhtjotwwjaveczygthefalweemmzfjlqawwzmkgtmoeszbejzhtfecjtjjzzkfahnayjaieakikgja'"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "morse_table = ''.maketrans('AD', '.-')\n",
+    "cb_dd = cb.translate(morse_table)\n",
+    "cb_words = cb_dd.split(' / ')\n",
+    "cb_letters = cat(cat(morse_to_char[l] for l in w.split()) for w in cb_words)\n",
+    "cb_letters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "id": "86085f32-1564-4f01-8d58-2786625a743f",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "alchemist KeywordWrapAlphabet.from_last \n",
+      "\n",
+      "with the growing threat of war our activities have necessarily grown in scale and complexity and\n",
+      "with that there is a growing risk that our mission will be uncovered by one of the parties to the\n",
+      "conflict i have be enable to drip feed intelligence to the western allies via their agent harry and\n",
+      "as far as i can tell he remains ignorant of our true purpose nonetheless the risk remains high of\n",
+      "one or both sides acquiring the secret to atomic weapons early and we will need to act fast if we\n",
+      "are to prevent this the loss of the hindenburg presented a fabulous opportunity and i used it to\n",
+      "make sure that the allies understood what the nazi scientists were working on i have tried not to\n",
+      "provide harry with too much information at this stage since it is crucial to our mission that we\n",
+      "maintain the balance of uncertainty it is not at all clear who might win the nuclear arms race but\n",
+      "our experience of the months and years leading up to the great war suggests that the race will have\n",
+      "its own momentum and it will take considerable effort by all of us if we hope to direct it to our\n",
+      "advantage augusta\n"
+     ]
+    }
+   ],
+   "source": [
+    "(word_b, wrap_b), score_a = keyword_break(cb_letters, fitness=Ptrigrams)\n",
+    "print(word_b, wrap_b, '\\n')\n",
+    "pb = keyword_decipher(cb_letters, word_b, wrap_b)\n",
+    "print(prettify(pb))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "id": "d12a663c",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1097"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "open(plaintext_b_filename, 'w').write(prettify(pb))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "504ec2e2",
+   "metadata": {
+    "Collapsed": "false"
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "jupytext": {
+   "formats": "ipynb,md"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.8.8"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/2021/2021-challenge4.md b/2021/2021-challenge4.md
new file mode 100644 (file)
index 0000000..c455b6c
--- /dev/null
@@ -0,0 +1,91 @@
+---
+jupyter:
+  jupytext:
+    formats: ipynb,md
+    text_representation:
+      extension: .md
+      format_name: markdown
+      format_version: '1.3'
+      jupytext_version: 1.11.1
+  kernelspec:
+    display_name: Python 3 (ipykernel)
+    language: python
+    name: python3
+---
+
+```python Collapsed="false"
+from szyfrow.caesar import *
+from szyfrow.affine import *
+from szyfrow.keyword_cipher import *
+from szyfrow.support.text_prettify import *
+```
+
+```python Collapsed="false"
+challenge_number = 4
+plaintext_a_filename = f'plaintext.{challenge_number}a.txt'
+plaintext_b_filename = f'plaintext.{challenge_number}b.txt'
+ciphertext_a_filename = f'ciphertext.{challenge_number}a.txt'
+ciphertext_b_filename = f'ciphertext.{challenge_number}b.txt'
+```
+
+```python Collapsed="false"
+ca = open(ciphertext_a_filename).read()
+cb = open(ciphertext_b_filename).read()
+
+sca = sanitise(ca)
+scb = sanitise(cb)
+```
+
+```python
+(word_a, wrap_a), score_a = keyword_break(sca)
+print(word_a, wrap_a, '\n')
+pa = keyword_decipher(ca, word_a, wrap_a)
+print(pa)
+```
+
+```python
+pa = keyword_decipher(sca, word_a, wrap_a)
+print(prettify(pa))
+```
+
+```python Collapsed="false"
+open(plaintext_a_filename, 'w').write(prettify(pa))
+```
+
+```python
+morse_chars = 'a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'.split()
+# morse_chars
+```
+
+```python
+morse_codes = '.- / -... / -.-. / -.. / . / ..-. / --. / .... / .. / .--- / -.- / .-.. / -- / -. / --- / .--. / --.- / .-. / ... / - / ..- / ...- / .-- / -..- / -.-- / --.. / ----- / .---- / ..--- / ...-- / ....- / ..... / -.... / --... / ---.. / ----.'.split(' / ')
+```
+
+```python
+char_to_morse = {l: c for l, c in zip(morse_chars, morse_codes)}
+morse_to_char = {c: l for l, c in zip(morse_chars, morse_codes)}
+[char_to_morse[l] for l in 'abc']
+```
+
+```python
+morse_table = ''.maketrans('AD', '.-')
+cb_dd = cb.translate(morse_table)
+cb_words = cb_dd.split(' / ')
+cb_letters = cat(cat(morse_to_char[l] for l in w.split()) for w in cb_words)
+cb_letters
+```
+
+```python
+(word_b, wrap_b), score_a = keyword_break(cb_letters, fitness=Ptrigrams)
+print(word_b, wrap_b, '\n')
+pb = keyword_decipher(cb_letters, word_b, wrap_b)
+print(prettify(pb))
+```
+
+```python Collapsed="false"
+open(plaintext_b_filename, 'w').write(prettify(pb))
+```
+
+```python Collapsed="false"
+
+```
diff --git a/2021/ciphertext.4a.txt b/2021/ciphertext.4a.txt
new file mode 100644 (file)
index 0000000..0e10b4e
--- /dev/null
@@ -0,0 +1 @@
+FASSB GAMRA CKGTP INUMO TUOVU FILAT UUYOY IIKTG NUFIX AWLUU SBGNE UOWNP ACKTO MIOVU FIMBT UISBT WSSOW NHGNE UFILG EFUFO WTICO NTPGS ACBCS IYANH GUFGN KGMAH ITOMI PSOES ITTYF GLIGY ATAYA BUFIU SAGNI ITUAC KLIHU FILIU UISVS OMARC ANHUF IBHGH AESIA UJORU FIBAS ITFAP GNEWP YILLG UFGNK YIYGL LRIEL AHOVU FIGSF ILPAT UFGTC ATIPS OESIT TITUF ILGRS ASGAN AUUFI XAWLU YATXI SBFIL PVWLA NHYFI NGUOL HFISY FAUGY ATLOO KGNEV OSTFI POGNU IHMIU OANAS CFGXI OVXGC UOSGA NPAPI STCON CISNG NETCG INUGT UTINE GNIIS TANHT OCGAL SIVOS MISTU FAUFA HSICO SHIHI ASLBR ACKES OWNHG NXITU GEAUG ONTGN UOPIO PLIOV GNUIS ITUGT ABPIO PLIRW UGHGH NOUGC IUFAU UFISI YATAF IAXBR GATUO GNXIT UGEAU GNEYO MINRA CKUFI NGYAT TWSPS GTIHA UVGST UGFAH ATTWM IHUFA UUFIB YOWLH FAXIR IINLA SEILB GENOS IHRWU GTWPP OTIUF ITISI MASKA RLIYO MINMA HIUFI GSPSI TINCI KNOYN ANHPI SFAPT UFIIT UARLG TFMIN UVILU UFSIA UINIH GNMOT UCATI TUFIS IASIN OTUAN HASHT ICWSG UBVGL ITVOS UFITI YOMIN RWUYF ISIUF ISIYI SIUFI BYISI AURIT UUFGN UFISI ALLBG NUISI TUGNE MAUIS GALYA TGNUF IFGHH INASC FGXIY FISIG VOWNH SIPOS UTANH PAPIS TAROW ULOXI LACIN GEFUG NEALI ANHAR CATIT UARLG TFMIN UVGEW SITUF IMTIL XITUF IBTII MUOFA XIRII NGENO SIHRB UFITI CSIUT ISXGC IANHC LIASL BNOUC ONTGH ISIHA TICWS GUBUF SIAUR WUOWS ROTTV OSIRI ASTHG HCASS BOWUG NXITU GEAUG ONTGN UOUFI GSACU GXGUG ITANH UFISI ASICL IASTG ENTUF AUUFI BMABF AXIYO SKIHU OEIUF ISORX GOWTL BUFIV ACUUF AUUFI BYISI MAKGN ETWCF ANGMP ACUON TOCGI UBYAT INOWE FUOMA KITOM IPIOP LINIS XOWTA VUISA LLGUY ATAUG MIOVE SIAUC FANEI ANHCO NCISN TAROW USIXO LWUGO NYISI XISBS IALON IOVUF INOUI TONVG LITWE EITUT UFAUU FIESO YGNEC AMPAG ENVOS YOMIN TTWVV SAEIA NHTOC GALAC UGXGT MMGEF UFAXI RIINU FITUA SUOVA NGNTW SSICU GONAN HGUNA MIHTI XISAL OVOWS PSOUA EONGT UTRWU GUHGH NUTAB FOYUF IBMGE FUFAX IGNUI NHIHU OUSGE EISUF IWPSG TGNEY FAUYI FAXIT IINTO VASGT UFAUY FAUIX ISUFI LGEFU FOWTI CONTP GSACB YISIW PUOUF IBYIN UUOIZ USAOS HGNAS BLINE UFTUO KIIPG UTICS IUANH UFIVA CUUFA UYIAS IONLB NOYWN COXIS GNEGU TWEEI TUTUF AUGUY ATMWC FTWRU LISUF ANAPL ANNIH WPSGT GNEGA MTUGL LTUSW EELGN EYGUF UFIGH IAUFA UPIOP LIYFO YISIP ASUOV UFIRG SUFOV ROTTC OWLHF AXIRI INACU GNETI CSIUL BAEAG NTUWT RWUUF AUGTC ISUAG NLBGM PLGIH RBTOM IOVUF IVGLI TYIFA XICSA CKIHA NHUFI AUUAC FIHHO CWMIN UFATA HHIHU OMBYO SSGIT GUYAT YSGUU INGNU FIAVU ISMAU FOVUF IFGNH INRWS EHGTA TUISR BTOMI ONIGU FGNKB OWKNI YYILL TFIFA HAVAN UATUG CSICO SHYOS KGNEH IIPWN HISCO XISAN HSIPO SUGNE RACKU OYITU ISNGN UILLG EINCI AEINC GITRW UUFIU FGNEU FAUCA WEFUM BIBIY ATUFA UFISI TFIWT IHUFI COHIN AMIAW EWTUA GHONU KNOYG VBOWA LSIAH BTPOU UIHGU RWUUF ILIUU ISGNE ASOWN HUFII HEIOV UFILG EFUFO WTITU AMPSI AHTAH AAHHH AAAHA AAHAH ANHTW RTUGU WUGNE UFIAA NHHVO SHOUA NHHAT FTPIL LTOWU FISCO HINAM IGUFO WEFUA UVGST UUFAU GMGEF URISI AHGNE UOOMW CFGNU OGUUF ILIUU ISGNF ISVGL ITIIM TNIXI SUOFA XIRII NRSOK INTOM IONIY SOUIH OWRLI INCSB PUIHO NUFII NXILO PIANH GEWIT TUFAU YATIN OWEFU OHGTT WAHIU FIAEI NCGIT VSOMT PINHG NEMWC FUGMI ONGUY GUFFG NHTGE FUGUG TPSIU UBORX GOWTU FAUAC UWALL BGUFA TJWTU RIINI NCSBP UIHON CIANH UFINI NCOHI HATMO STICO HIWTG NEUFI TAMIC ONXIN UGONA IQWAL THOUH IQWAL THATF ONCIU FAUFA HRIIN WNUAN ELIHG VOWNH GUPSI UUBIA TBUOR SIAKA NHGAM XISBY OSSGI HAROW UYFAU GVOWN HGUFG NKBOW NIIHU OUAKI ALOOK JOHGI
diff --git a/2021/ciphertext.4b.txt b/2021/ciphertext.4b.txt
new file mode 100644 (file)
index 0000000..524fa94
--- /dev/null
@@ -0,0 +1 @@
+DDD D ADDD AAA ADDD / AAA A AA AADA DDAA / DDD D DADD AA ADDD / AAA AADA A AD ADDD / DDAA DD DDD AD AADA / DDAA DAD AADA AD DADA / ADDD D DA D ADDD / D A DDA AAA AD / DA A DADD A DADA / A DDA DDA AD AADA / D ADD DDAD AA AADA / DDAA DDD DADD D DADD / DDA DADA AD ADD A / AD DADD AAAA DADA DDAA / DAAD DAAA ADD A ADDA / D ADDD DDAD AD DADD / AAAA DDD D ADDD AAA / ADDD AAA AD ADDD ADDD / AAA A AADA A D / DDA AD AA AADA DDAA / DDD D DADD AA AADA / D DDA AAAD ADDD AAA / AD ADDD DDAA DAD AADA / DAAD D DDA DDA D / DDAA DADD DDD D ADD / ADD ADAA A DAD DADD / DADA DDAA DA A AADA / A AAAA ADAA DDAD DDAA / DADD A DDAA DD ADDD / AAA A DAAA AD AADA / ADDD D A DDA ADDD / DDAA ADDD AAA A DADA / DDAA DADD DD ADD D / DADA ADDD D AAA AD / DA A ADAA A A / DADD AD ADAA ADD A / ADDD DDAA AAAA AADA D / DAAA DD A A AAAA / D DADD ADDD A ADD / ADD D AA A DADD / DADA A ADDD DDAA ADDD / AAA A DDD A DDA / ADDD A AADA DADD AD / ADD ADD D A DDA / DA D AD ADDD AAA / A D AADA AD AA / A DADD ADDD AAA AD / AADA AADA DDAD AD DADD / AAAA AD DDA DD AD / AADA AD DDA D DADA / AD DADD ADDD A ADD / ADD AAA A AADA A / DAAD AD D DADD DDA / D AA DADD DDAA AADA / AD DADD ADDD DDAA DD / DDAA DAD AADA ADDD AADA / DAD A DAAA DAD AADA / DAAA DDAA DDA A DADD / DDAA DADD A ADDD AAA / A ADD A DDA DDA / ADDD AAA A AADA D / DDA AAAD AADA A DAAD / AD D DADD DDA AAA / D AA AAA DDAA DD / DDAA DADD A DDAA AADA / ADAA DDAA ADDD AAA DDA / D AAAA A DDA AD / DADA DAA DAD D AADA / D DADD AA ADDD AAA / A DDA A DADA AADA / A ADDD ADDD DDAA AD / ADDD DDAA DAAD D DADA / DDD A AD DAAA DDAA / DADD DDA A AD AADA / ADD DDAD AD DADD AAAA / DDD A DDD D ADD / ADD DADD A A AAAA / ADDD DDAA AD DADA ADDD / DD AD DDA ADDD D / DD DDD A AD AADA / A ADDD DDAA DAAA AADA / A DA A DADD ADDD / ADDD AAA D DDA ADDD / AAA A ADD DDAA DDA / DDA DDAA DD ADDD AAA / A AAA D DADD AAAA / A DADD ADAA DAD AADA / AA DAAA AADA A DDA / A DADD ADDD A AAAA / AD DD AD ADAA DAD / ADD DDAA DAD DDA DDAA / DAAA DAAA DDAA AADA ADDD / DAD DADD D ADDD DDAD / AD DADD AAAA D DAD / DDA A AAAA D ADDD / ADDD DDAA DAAD AD AAAD / A DDA DAD AADA A / ADDD AAA AD ADDD ADDD / AAA A AD ADD ADD / D A DDA DAD DADD / AAAA A AADA DDA ADDD / DDAA DDAA AAAA DDD AAA / AD ADDD ADDD AAA A / DADD AD ADA D DDA / DADA D A DADD ADDD / D DDA ADDD DDA DDD / A AADA A DDD DDAA / AADA AAAD D DADD AA / DDAA DADD D AAA AD / DA A ADDD AADA D / A AAAA DADD DDAA ADDD / ADDD DDAA DAAA AADA DDAA / DA D AAAA A AAA / AD AADA AADA DDAD DDD / D ADDD AAA ADDD DDAA / DDAA DAAD DAD DADA AAA / D DADD DD DDAA AADA / DAAD AD ADDD D DDAA / DADD AD ADDD ADDD AAA / D DDA DDA ADDD AD / AA A DDA D DADD / DADA A D ADDD D / DDA DADA AADA DAD DADA / D AD ADD ADDD DDAA / DDAA DAD AADA DAAD D / DDA DDA D DDAA DADD / ADDD AAA AD ADDD DDD / A DAAD AD D DADD / ADDD AD D DADD ADDD / AAA A ADAA AD ADD / AD DADD DADA A DDAA / DD DAD DADD DADA A / AADA ADDD AD D DADD / ADDD DDAD D ADDD D / DDA DADD DDAA ADDD AD / ADDD AD ADD ADD DADA / ADD A AD AADA DDD / AAA DDAA DAAD D AA / AAA ADDD DDD D DADD / ADDD AAA A DADD DAD / DADA ADD A AD AADA / AD AADA DAAD DDA AADA / AD DADA A ADAA DAD / ADDD DDAA DAD AADA A / ADDA DAAA A AADA D / A DADD DADA A DDAA / DD ADDD AAA A DAAD / DDAA DADD ADDD AAA DDA / AD DADD AAAA DDAD A / AD AADA DDA ADD A / AD AAAA D DADD AA / DAD DAAA ADDD DDAA ADDD / AAA A AA AADA A / AD ADDD DDD AD AADA / DDA DAD AA AA A / DDA ADDD DDA ADDD AAA / AD ADDD ADDD AAA A / AADA AD DADA A DDD / D ADD ADD AAA AD / DA A D ADDD DDA / DDAA DDD DADD DAAD DDAA / DAAD A DADD ADDD DAD / DAAD AD DADD AAAA D / ADDD DDD D ADD ADD / ADDD AD AAAD A DADA / DDAA DADD DDA D AAAA / A AADA AD ADAA ADD / A A DD DD DDAA / AADA ADDD ADAA DDAD AD / ADD ADD DDAA DD DAD / DDA D DD DDD A / AAA DDAA DAAA A ADDD / DDAA AAAA D AADA A / DADA ADDD D ADDD ADDD / DDAA DDAA DAD AADA AD / AAAA DA AD DADD ADDD / AD AA A AD DAD / AA DAD DDA ADDD AD
diff --git a/2021/plaintext.4a.txt b/2021/plaintext.4a.txt
new file mode 100644 (file)
index 0000000..39abee1
--- /dev/null
@@ -0,0 +1,35 @@
+harry i am back i spent most of the last two weeks in the vault trying to unpack some of the mystery
+surrounding the lighthouse conspiracy crew and i think i made some progress while i was away the
+trainees tackled the letter from abc and they did a great job they are shaping up well i think we
+will be glad of their help as this case progresses the librarian at the vault was very helpful and
+when it old her what i was looking for she pointed me to an archive of victorian papers concerning
+scientists engineers and social reformers that had recorded early background investigations into
+people of interest i say people but i did notice that there was a heavy bias to investigating women
+back then i was surprised at first i had assumed that they would have been largely ignored but i
+suppose these remarkable women made their presence known and perhaps the establishment felt
+threatened in most cases there are no standard security files for these women but where there were
+they were at best thin the really interesting material was in the hidden archive where i found
+reports and papers about lovelace nightingale and abc as establishment figures themselves they seem
+to have been ignored by the secret service and clearly not considered a security threat but our boss
+forebears did carryout investigations into their activities and there are clear signs that they may
+have worked together obviously the fact that they were making such an impact on society was enough
+to make some people nervous after all it was a time of great change and concerns about revolution
+were very real one of the notes on file suggests that the growing campaign for womens suffrage and
+social activism might have been the start of an insurrection and it named several of our
+protagonists but it didnt say how they might have intended to trigger the uprising what we have seen
+so far is that whatever the lighthouse conspiracy were up to they went to extraordinary lengths to
+keep it secret and the fact that we are only now uncovering it suggests that it was much subtler
+than a planned uprising i am still struggling with the idea that people who were part of the birth
+of boss could have been acting secretly against us but that is certainly implied by some of the
+files we have cracked and the attached document has added to my worries it was written in the
+aftermath of the hindenburg disaster by someone i think you knew well she had a fantastic record
+working deep undercover and reporting back to western intelligence agencies but the thing that
+caught my eye was that here she used the codename augusta i dont know if you already spotted it but
+the lettering around the edge of the lighthouse stamp reads ada add da a ada a a dad and
+substituting the a and d for dot and dash spells out her codename i thought at first that i might be
+reading too much into it the letter in her file seems never to have been broken someone wrote double
+encrypted on the envelope and i guess that was enough to dissuade the agencies from spending much
+time on it with hindsight it is pretty obvious that actually it has just been encrypted once and
+then encoded as morsecode using the same convention a equals dotd equals dash once that had been
+untangled i found it pretty easy to break and i am very worried about what i found i think you need
+to take a look jodie
\ No newline at end of file
diff --git a/2021/plaintext.4b.txt b/2021/plaintext.4b.txt
new file mode 100644 (file)
index 0000000..5cd0a9c
--- /dev/null
@@ -0,0 +1,12 @@
+with the growing threat of war our activities have necessarily grown in scale and complexity and
+with that there is a growing risk that our mission will be uncovered by one of the parties to the
+conflict i have be enable to drip feed intelligence to the western allies via their agent harry and
+as far as i can tell he remains ignorant of our true purpose nonetheless the risk remains high of
+one or both sides acquiring the secret to atomic weapons early and we will need to act fast if we
+are to prevent this the loss of the hindenburg presented a fabulous opportunity and i used it to
+make sure that the allies understood what the nazi scientists were working on i have tried not to
+provide harry with too much information at this stage since it is crucial to our mission that we
+maintain the balance of uncertainty it is not at all clear who might win the nuclear arms race but
+our experience of the months and years leading up to the great war suggests that the race will have
+its own momentum and it will take considerable effort by all of us if we hope to direct it to our
+advantage augusta
\ No newline at end of file