From 5eab35bf4494811113cd8c083c6bb8cdc790505f Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Wed, 8 Jan 2020 09:12:00 +0000 Subject: [PATCH] Done challenge 9 --- 2019/2019-challenge9.ipynb | 267 ++++++++++++++ 2019/2019-challenge9b.ipynb | 710 ++++++++++++++++++++++++++++++++++++ 2019/9a.ciphertext | 1 + 2019/9a.plaintext | 43 +++ 2019/9b.ciphertext | 1 + 2019/9b.plaintext | 57 +++ 6 files changed, 1079 insertions(+) create mode 100644 2019/2019-challenge9.ipynb create mode 100644 2019/2019-challenge9b.ipynb create mode 100644 2019/9a.ciphertext create mode 100644 2019/9a.plaintext create mode 100644 2019/9b.ciphertext create mode 100644 2019/9b.plaintext diff --git a/2019/2019-challenge9.ipynb b/2019/2019-challenge9.ipynb new file mode 100644 index 0000000..9f21621 --- /dev/null +++ b/2019/2019-challenge9.ipynb @@ -0,0 +1,267 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os,sys,inspect\n", + "currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n", + "parentdir = os.path.dirname(currentdir)\n", + "sys.path.insert(0,parentdir) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from cipher.caesar import *\n", + "from cipher.affine import *\n", + "from cipher.keyword_cipher import *\n", + "from cipher.column_transposition import *\n", + "from cipher.vigenere import *\n", + "from support.text_prettify import *\n", + "from support.utilities import *\n", + "from support.plot_frequency_histogram import *\n", + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "challenge_number = 9\n", + "plaintext_a_filename = f'{challenge_number}a.plaintext'\n", + "plaintext_b_filename = f'{challenge_number}b.plaintext'\n", + "ciphertext_a_filename = f'{challenge_number}a.ciphertext'\n", + "ciphertext_b_filename = f'{challenge_number}b.ciphertext'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "ca = open(ciphertext_a_filename).read()\n", + "cb = open(ciphertext_b_filename).read()\n", + "\n", + "rwa = wcat(cat(reversed(w)) for w in ca.split())\n", + "ra = cat(reversed(ca))\n", + "sca = sanitise(ca)\n", + "rsca = cat(reversed(sca))\n", + "pca = letters(ca)\n", + "pta = depunctuate(ca)\n", + "\n", + "scb = sanitise(cb)\n", + "pcb = letters(cb)\n", + "rscb = cat(reversed(scb))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", + " % get_backend())\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fc = collections.Counter(sca)\n", + "plot_frequency_histogram(fc, sort_key=fc.get)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "etsllamsenopaeltnaigenop \n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "'rehpicsihtkaerbewtahtlaicurcsitiskeewweftxenehtniffotfilrofdeludehcsnotyalsdnadnarbdroffatshtiwniagarawfoknirbehtnosevlesruodnifthgimewftsaehtfowercehtotsneppahgnihtynafiysaemorfrafllitssiecaepehttubogasraeyeerhtaissurnorawgniralcedotniaciremaekovorpotdeliafehshtiwderepmatevahyamefiwsekimtahtmetsyslacitircrehtoemossierehtfiwonktnodewtituohtiwkcarctnacielifenosierehttubrewoplacirtcelednatroppusefillortnocecnadiughtiwsmelborpdexifdnadnuofdnamehtfoenotublladekcarcevahewrafosscissalckeergrehtodnasurodolloparemohmorfemactahtsyekgnisudelbmarcsllaerewselifehtiiixollopahtiwdetaicossaselifderepmatehtfoemdednimertahtsdrocerecivresdetidefoliartadnuofiytirucesriehttiduaotnikcabemdellacyehtossthgilfranulehthtiwdahewsmelborpehttuobamehtdednimerenoemosasantamaetzuyosollopaehtmorfllacakootinodnolmorftroperehtdevieceriretfanooskuehttfelehstahtretfanoosdnadekoversawecnaraelcytirucesrehsrengiapmacecaephtiwgniteemdetratsdnaaeroknideidnosrehretfatfelehsotsefinamehtniseirrowehthtiwyltcefrepstifhcihwerwaytirohtuasnopaewcimotakuehthtiwgnikrowedartrehdenraelehsyltnacifingissthgilfollopareilraeehtnowasewegatobasfotrosehttuogniyrracfoelbapacetiuqsawohwreenignenasawehsemdlotyehtdnakuehtniecivresytirucesehtotekopsitnewehserehwswonkenoondnarehneestonevahyehtyasedisetatssevitalerrehtubogasraeynevelesawtahtylimaflanigirorehraenebotsetatsehtotkcabgnivomsawehsmehtdlotehsyrevocerwolsaekildemeestahwretfaswalnirehhtiwevilottnewehssuehtotkcabdevomekimnehwdnadeidnosrehretfanwodkaerbadahehsyassdneirfrehemmargorpfognillepshsilgneehtsesuotsefinamehtdnahsilgneoslasiefiwsekimefiwsekimtuobaseiriuqneedamdnalopretnihtiwhcuotnitogiosedirprehrofegnevernisdogehtybdellikerewsnosesohwneeuqehtsasuomafsawehsdailiehtniebointuobaetorwremohreraelcelttilategotnagebsgnihteboinrehpicotsefinamehtrofdrowyekehthtiwrehtegottahtgnittupdeirramsawekimtahtemdednimerevahdluowtipotehttanosruoesarhpehtdecitonevahdluohsiseulcrofylluferaceromniagatidaerimihybnettirwsawotsefinamehtknihttnodiosenofoesopsidotemitekimevigtndidewdnaedihotyklubdnagibootsiretirwepytarehtiesenihcamasanehtfoynahctamtnodotsefinamehtnoecafepytdnakniehtesacynanidnamihrofepytotyratercesadaheherehtkrowtaneveretirwepytrehtonanomihybnettirwgnihtynadniftndluoctubselifehthguorhtdekooliretirwepytsekimnodecudorptonsawotsefinamehtevisulcnocerastluserehtstsetehtnurotmehttogdnayelgnalotrevotitnesiekatsimehtdesilaerisanoossatikcehcotenoemosksaottogrofitahttnetnocstignisylanadnarehpicehtgnikcarchtiwpunekatossawisseugitnemucodehtnoscisneroftuodeirracrevenewtubtidessimewwohwonktnodikoolrehtonakootdnaotsefinamehttuogudierehttoginehwossretrauqdaehotkcabyawehtnotituobayrrowotdeunitnocitubweivretniehtfotuoeromgnihtynategtndidignihtemosgnidihsawehgnileefehttogidnacipotehtffoemreetsotdrahgniyrtyletinifedsawehtubtituobawenkewwenkehostruocnituodaerneebdahtiotsefinamehttuobamihdeksadnaredrahdesserpisserpehtotrettelehttnesehstimdaehhguohtstnediccaehtdellacehtahwhtiwodotgnihtondahehsmialcllitseherehtsawiyhwtuoerugifotgnolmihekattndidtidnatuobaklatottolaevahtndidewtubsrotisivynamstegehknihttnodiemeesotdesaelpdemeesehasantagnikrowllitssawehnehwkcabnoitomnignihtemostesevahtndluocehtahttnedifnocyletelpmoctonsawiiivxollopanomelborpnoitazirusserpknatehtretfasurofsesirprusrevotfelynaevahtndideherusekamdnaekimhtiwnikcehcotaedidoogaebdluowtithguohtipugnimocnoissimzuyosollopaehtfohcnualehthtiwyrrah'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k_a, score_b = vigenere_frequency_break(sca, fitness=Ptrigrams, max_key_length=26)\n", + "print(k_a, '\\n')\n", + "pa = vigenere_decipher(sca, k_a)\n", + "pa" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "onesmallsteponegiantleap \n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "'harrywiththelaunchoftheapollosoyuzmissioncomingupithoughtitwouldbeagoodideatocheckinwithmikeandmakesurehedidnthaveanyleftoversurprisesforusafterthetankpressurizationproblemonapolloxviiiwasnotcompletelyconfidentthathecouldnthavesetsomethinginmotionbackwhenhewasstillworkingatnasaheseemedpleasedtoseemeidontthinkhegetsmanyvisitorsbutwedidnthavealottotalkaboutanditdidnttakehimlongtofigureoutwhyiwastherehestillclaimshehadnothingtodowithwhathecalledtheaccidentsthoughheadmitshesentthelettertothepressipressedharderandaskedhimaboutthemanifestoithadbeenreadoutincourtsoheknewweknewaboutitbuthewasdefinitelytryinghardtosteermeoffthetopicandigotthefeelinghewashidingsomethingididntgetanythingmoreoutoftheinterviewbuticontinuedtoworryaboutitonthewaybacktoheadquarterssowhenigotthereidugoutthemanifestoandtookanotherlookidontknowhowwemisseditbutwenevercarriedoutforensicsonthedocumentiguessiwassotakenupwithcrackingthecipherandanalysingitscontentthatiforgottoasksomeonetocheckitassoonasirealisedthemistakeisentitovertolangleyandgotthemtoruntheteststheresultsareconclusivethemanifestowasnotproducedonmikestypewriterilookedthroughthefilesbutcouldntfindanythingwrittenbyhimonanothertypewriterevenatworktherehehadasecretarytotypeforhimandinanycasetheinkandtypefaceonthemanifestodontmatchanyofthenasamachineseitheratypewriteristoobigandbulkytohideandwedidntgivemiketimetodisposeofonesoidontthinkthemanifestowaswrittenbyhimireaditagainmorecarefullyforcluesishouldhavenoticedthephraseoursonatthetopitwouldhaveremindedmethatmikewasmarriedputtingthattogetherwiththekeywordforthemanifestocipherniobethingsbegantogetalittleclearerhomerwroteaboutniobeintheiliadshewasfamousasthequeenwhosesonswerekilledbythegodsinrevengeforherpridesoigotintouchwithinterpolandmadeenquiriesaboutmikeswifemikeswifeisalsoenglishandthemanifestousestheenglishspellingofprogrammeherfriendssayshehadabreakdownafterhersondiedandwhenmikemovedbacktotheusshewenttolivewithherinlawsafterwhatseemedlikeaslowrecoveryshetoldthemshewasmovingbacktothestatestobenearheroriginalfamilythatwaselevenyearsagobutherrelativesstatesidesaytheyhavenotseenherandnooneknowswhereshewentispoketothesecurityserviceintheukandtheytoldmeshewasanengineerwhowasquitecapableofcarryingoutthesortofsabotagewesawontheearlierapolloflightssignificantlyshelearnedhertradeworkingwiththeukatomicweaponsauthorityawrewhichfitsperfectlywiththeworriesinthemanifestosheleftafterhersondiedinkoreaandstartedmeetingwithpeacecampaignershersecurityclearancewasrevokedandsoonafterthatshelefttheuksoonafterireceivedthereportfromlondonitookacallfromtheapollosoyuzteamatnasasomeoneremindedthemabouttheproblemswehadwiththelunarflightssotheycalledmebackintoaudittheirsecurityifoundatrailofeditedservicerecordsthatremindedmeofthetamperedfilesassociatedwithapolloxiiithefileswereallscrambledusingkeysthatcamefromhomerapollodorusandothergreekclassicssofarwehavecrackedallbutoneofthemandfoundandfixedproblemswithguidancecontrollifesupportandelectricalpowerbutthereisonefileicantcrackwithoutitwedontknowifthereissomeothercriticalsystemthatmikeswifemayhavetamperedwithshefailedtoprovokeamericaintodeclaringwaronrussiathreeyearsagobutthepeaceisstillfarfromeasyifanythinghappenstothecrewoftheastfwemightfindourselvesonthebrinkofwaragainwithstaffordbrandandslaytonscheduledforliftoffinthenextfewweeksitiscrucialthatwebreakthiscipher'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k_a, score_b = vigenere_frequency_break(rsca, fitness=Ptrigrams, max_key_length=26)\n", + "print(k_a, '\\n')\n", + "pa = vigenere_decipher(rsca, k_a)\n", + "pa" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "harry with the launch of the apollo soyuz mission coming up i thought it would be a good idea to\n", + "check in with mike and make sure he didnt have any leftover surprises for us after the tank\n", + "pressurization problem on apollo xviii was not completely confident that he couldnt have set\n", + "something in motion back when he was still working at nasa he seemed pleased to see me i dont think\n", + "he gets many visitors but we didnt have alot to talkabout and it didnt take him long to figure out\n", + "why i was there he still claims he had nothing to do with what he called the accidents though he\n", + "admit she sent the letter to the press i pressed harder and asked him about the manifesto it had\n", + "been readout in court so he knew we knew about it but he was definitely trying hard to steer me off\n", + "the topic and i got the feeling he was hiding something i didnt get anything more out of the\n", + "interview but i continued to worry about it on the wayback to headquarters so when i got there i\n", + "dugout the manifesto and took another look i dont know how we missed it but we never carried out\n", + "forensics on the document i guess i was so taken up with cracking the cipher and analysing its\n", + "content that i forgot to ask someone to check it as soon as i realised the mistake i sent it over to\n", + "langley and got them to run the tests the results are conclusive the manifesto was not produced on\n", + "mikes typewriter i looked through the files but couldnt find anything written by him on another\n", + "typewriter even at work there he had a secretary to type for him and in any case the ink and\n", + "typeface on the manifesto dont match any of the nasa machines either a typewriter is too big and\n", + "bulky to hide and we didnt give mike time to dispose of one so i dont think the manifesto was\n", + "written by him i read it again more carefully for clues i should have noticed the phrase our son at\n", + "the top it would have reminded me that mike was married putting that together with the keyword for\n", + "the manifesto cipher niobe things began to get a little clearer homer wrote about niobe in the iliad\n", + "she was famous as the queen whose sons were killed by the gods in revenge for her pride so i got in\n", + "touch with interpol and made enquiries about mikes wife mikes wife is also english and the manifesto\n", + "uses the english spelling of programme her friends says he had a breakdown after her son died and\n", + "when mike moved back to the us she went to live with her in laws after what seemed like as low\n", + "recovery she told them she was moving back to the states to be near her original family that was\n", + "eleven years ago but her relatives stateside say they have not seen her and no one knows where she\n", + "went i spoke to the security service in the uk and they told me she was an engineer who was quite\n", + "capable of carrying out the sort of sabotage we saw on the earlier apollo flights significantly she\n", + "learned her trade working with the uk atomic weapons authority aw re which fits perfectly with the\n", + "worries in the manifesto she left after her son died in korea and started meeting with peace\n", + "campaigners her security clearance was revoked and soon after that she left the uk soon after i\n", + "received the report from london i took a call from the apollo soyuz team at nasa someone reminded\n", + "them about the problems we had with the lunar flights so they called me back into audit their\n", + "security i found a trail of edited service records that reminded me of the tampered files associated\n", + "with apollo xiii the files were all scrambled using keys that came from homer apollodorus and other\n", + "greek classics so far we have cracked all but one of them and found and fixed problems with guidance\n", + "control life support and electrical power but there is one file icant crack without it we dont know\n", + "if there is some other critical system that mikes wife may have tampered with she failed to provoke\n", + "america into declaring war on russia three years ago but the peace is still far from easy if\n", + "anything happens to the crew of the as tf we might find ourselves on the brink of war again with\n", + "stafford brand and slayton scheduled for liftoff in the next few weeks it is crucial that we break\n", + "this cipher\n" + ] + } + ], + "source": [ + "print(lcat(tpack(segment(pa))))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4107" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "open(plaintext_a_filename, 'w').write(lcat(tpack(segment(pa))))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/2019/2019-challenge9b.ipynb b/2019/2019-challenge9b.ipynb new file mode 100644 index 0000000..10a3894 --- /dev/null +++ b/2019/2019-challenge9b.ipynb @@ -0,0 +1,710 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os,sys,inspect\n", + "currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n", + "parentdir = os.path.dirname(currentdir)\n", + "sys.path.insert(0,parentdir) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from cipher.caesar import *\n", + "from cipher.affine import *\n", + "from cipher.keyword_cipher import *\n", + "from cipher.column_transposition import *\n", + "from cipher.vigenere import *\n", + "from support.text_prettify import *\n", + "from support.utilities import *\n", + "from support.plot_frequency_histogram import *\n", + "import re\n", + "import itertools" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "challenge_number = 9\n", + "plaintext_a_filename = f'{challenge_number}a.plaintext'\n", + "plaintext_b_filename = f'{challenge_number}b.plaintext'\n", + "ciphertext_a_filename = f'{challenge_number}a.ciphertext'\n", + "ciphertext_b_filename = f'{challenge_number}b.ciphertext'" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "ca = open(ciphertext_a_filename).read()\n", + "cb = open(ciphertext_b_filename).read()\n", + "\n", + "rwa = wcat(cat(reversed(w)) for w in ca.split())\n", + "ra = cat(reversed(ca))\n", + "sca = sanitise(ca)\n", + "rsca = cat(reversed(sca))\n", + "pca = letters(ca)\n", + "pta = depunctuate(ca)\n", + "\n", + "scb = cat(l for l in cb if l in \"012\")\n", + "gcb = cb.split()\n", + "rscb = cat(reversed(scb))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# open(plaintext_b_filename, 'w').write(lcat(tpack(segment(pa))))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18480" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(scb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solution" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "def unquad(quadlet):\n", + " ds = [int(c) for c in quadlet]\n", + " return ds[0] * 12 + ds[1] * 6 + ds[2] * 2 + ds[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['1110',\n", + " '1020',\n", + " '1110',\n", + " '0011',\n", + " '1021',\n", + " '0020',\n", + " '0011',\n", + " '1110',\n", + " '1011',\n", + " '0011']" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "quads = [q for ch in chunks(scb, 28) for q in every_nth(ch, 7)]\n", + "quads[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'uqudredupdatfvsunvdqijeqdrrfaqhdnghqghrcfsbhgwnaqgmghqugeqngpdatfvsadccnehqghgweqcfufvnemhqghfvsdrhb'" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qcb = cat(unpos(unquad(q)) for q in quads)\n", + "qcb[:100]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", + " % get_backend())\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fc = collections.Counter(scb)\n", + "plot_frequency_histogram(fc, sort_key=fc.get)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "runs = [(k, len(list(v))) for k, v in itertools.groupby(scb)]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(1, 5338),\n", + " (2, 2442),\n", + " (3, 1143),\n", + " (4, 522),\n", + " (5, 253),\n", + " (6, 110),\n", + " (7, 63),\n", + " (8, 29),\n", + " (9, 11),\n", + " (10, 3),\n", + " (14, 1)]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "collections.Counter(p[1] for p in runs).most_common()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def untri(triplet):\n", + " ds = [int(c) for c in triplet]\n", + " return ds[0] * 9 + ds[1] * 3 + ds[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def unpos_t(n):\n", + " if n == 26:\n", + " return '+'\n", + " else:\n", + " return unpos(n + 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "tb = cat(unpos(untri(t)) for t in chunks(scb, 3))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[c for c in tb if c == '+']" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['1110100101000012112210001101',\n", + " '1100101100010111100210110111',\n", + " '1111010110100101011210011100',\n", + " '0010110100000012212221001111',\n", + " '0100100001001102010000011101',\n", + " '1001001011000120021200011010',\n", + " '0001101011100000020021100100',\n", + " '0100110101101100002100001000',\n", + " '0110100000100022001100010110',\n", + " '1011000101100002100111110010']" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chunks(scb, 28)[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['1110', '1020', '1110', '0011', '1021', '0020', '0011'],\n", + " ['1110', '1011', '0011', '0000', '1101', '0021', '1111'],\n", + " ['1100', '1110', '1001', '1111', '0011', '1020', '0110'],\n", + " ['0111', '0020', '1020', '0011', '1021', '1021', '0021'],\n", + " ['0000', '1020', '0101', '0011', '1001', '0100', '0101'],\n", + " ['1020', '0100', '0101', '1021', '0010', '0021', '1100'],\n", + " ['0001', '0101', '0100', '1120', '1001', '0000', '1020'],\n", + " ['0100', '1000', '0100', '0101', '1020', '1110', '0100'],\n", + " ['0020', '1020', '1001', '0100', '1011', '0011', '0000'],\n", + " ['1101', '0021', '1111', '1100', '0000', '0011', '0010']]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[every_nth(ch, 7) for ch in chunks(scb, 28)][:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['1110010001',\n", + " '1110100110',\n", + " '1011000011',\n", + " '0010011001',\n", + " '1101101110',\n", + " '0011000100',\n", + " '0100011000',\n", + " '1111000101',\n", + " '0010011000',\n", + " '1000111101',\n", + " '0010001111',\n", + " '0100000000',\n", + " '0000100100',\n", + " '0110110100',\n", + " '1101020020',\n", + " '2112200022',\n", + " '1102000001',\n", + " '1011122000',\n", + " '2012010210',\n", + " '2222020111',\n", + " '1112002001',\n", + " '0001001001',\n", + " '0100001001',\n", + " '0110110011',\n", + " '1011110100',\n", + " '1111101010',\n", + " '0101010011',\n", + " '1101100000']" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[c[:10] for c in every_nth(scb, 28)]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[15, 18, 19, 47, 75, 99, 100, 102, 103, 104]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[n for n, c in enumerate(scb) if c == '2'][:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[15, 18, 19],\n", + " [19],\n", + " [19],\n", + " [15, 16, 18, 19, 20],\n", + " [15],\n", + " [14, 17, 19],\n", + " [17, 20],\n", + " [18],\n", + " [14, 15],\n", + " [15]]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pos2s = [[n for n, c in enumerate(ch) if c == '2'] for ch in chunks(scb, 28)]\n", + "pos2s[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(14, 20)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min(min(s) for s in pos2s if s), max(max(s) for s in pos2s if s)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "def unquad(quadlet):\n", + " ds = [int(c) for c in quadlet]\n", + " return ds[0] * 12 + ds[1] * 6 + ds[2] * 2 + ds[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['1110',\n", + " '1020',\n", + " '1110',\n", + " '0011',\n", + " '1021',\n", + " '0020',\n", + " '0011',\n", + " '1110',\n", + " '1011',\n", + " '0011']" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "quads = [q for ch in chunks(scb, 28) for q in every_nth(ch, 7)]\n", + "quads[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'uqudredupdatfvsunvdqijeqdrrfaqhdnghqghrcfsbhgwnaqgmghqugeqngpdatfvsadccnehqghgweqcfufvnemhqghfvsdrhb'" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qcb = cat(unpos(unquad(q)) for q in quads)\n", + "qcb[:100]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('noapqrsbfytcuvdwxeghijklmz', -15275.52585516763)" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kb, scoreb = simulated_annealing_break(qcb, fitness=Ptrigrams)\n", + "kb, scoreb" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'memofromdockingmanoeuvreofficetoastestflightspacesystemsreasdockingcollartestspreliminarytestingofthedockingcollarsystemhasrevealedapotentiallyseriousflawinthedesignwhichmustbeaddressedbeforethesystemcanbecertifiedtheissueconcernstheemergencyreleasesystembackgroundthedockingsystemperformsthefollowingfunctionsimpactenergyabsorptionmechanicalconnectionspacecraftalignmentandretractionspacecrafthardmechanicalconnectionanddockinginterfacesealingspacecraftundockingandseparationinordertoachievethesefunctionsthedockingsystemconsistsofthreeprinciplepartsthebaseastructuralringandthelatchingringthedockingsystembaseisthemainstructuralmembertowhichthedockingsystemassembliesareattachedthestructuralringcarriesthebodylatcheswhichprovideahardpressuretightconnectionbetweenthetwospacecrafttogetherwiththecapturelatcheswhichoperateduringthedockingmanoeuvretheseperformthedockingfunctiontheyconsistofeightactiveandeightpassivehookswithanelectricaldriveinstalledononeofthelatchesandclosedloopcablesconnectingthemeachactivehookhasacamoperatedmechanismwhichperformsitsopeningandtighteningcorrespondinghooksofthepassivedockingsystemarecapturedbyactivehookseachpassivehookhasastackofpreloadedbellvillespringsprovidingadefiniteforceforthedockinginterfacepreloadingthedockinginterfacesealwillprovidepressureintegrityofthedockinginterfacesthisconsistsoftwoconcentricrubberringsealsoneachsystemandamanholecoverisusedtoclosethetransfertunnelofthespacecrafthatchlockingandunlockingismanuallyperformedbythecrewitissealedbyamechanismwhichhasafurthereighteccentriclatchesthesebeingconnectedwitheachotherbymeansofclosedcableconnectionthedockingsystemisequippedwithalarmandmetersystemwhichprovidetelemetrytotheshipsandtogroundcontrolinstandardoperationalmodeundockingisperformedbyreleaseoftheactivespacecraftcapturelatchesandthenbyopeningthestructurelatchhooksifnecessaryundockingcanbeperformedbythepassivespacecraftbyreleasingthebodymountedlatchesandopeningthestructurelatchpassivehooksspacecraftseparationisperformedbyspringthrusterssymmetricallylocatedonthestructuralringsofbothsystemsafterthelatchesreleasetheprincipledifferencebetweentherussianandusdockingsystemdesignscanbeseenintheguideringsystemunliketherussianelectromechanicaldockingsystemapolloisequippedwithanelectricdrivewhichusescableconnectionstotriggerthelatchesanotheressentialdifferenceistherussianemergencyreleasesystemersabackupprovidedbypyroboltsattachedtoeachpassiveandactivehookwhichoperatesinpassivemodeandprovidespracticallyinstantaneousundockingintheeventofasystemmalfunctionoraccidentonboardoneorbothofthedockedspacecraftsituationsinwhichtheersmightbeinitiatedincludeiuncontrolledfireorexplosiononboardoneofthespacecraftduringdockedoperationsiifailureofthedockingcontrolsystempreventingstandardreleaseoperationiiiattitudecontrolfailureoforunplannedfiringononeorbothspacecraftimposinghighstressesonthedockingmechanismwhiletheersprovidesaneffectivebackupforemergencysituationssimulationsandtestsonthehuntsvilledockingtestbedshowthattheeffectivenessofthepyrotechnicboltsisacriticalissuetoomuchexplosivecouldcausecriticaldamagetothepressuresealsaroundthehatchwhiletoolittlecanleavethespacecraftattachedwithadamagedmechanismtheerswasdesignedforoperationonussrmissionsandisthereforetunedtothestructuralconstraintsonthesovietplatformsincethelatchesareelectromagneticonthatspacecrafttheyarelesspronetodamageundervibrationalforcesthemotorandcablemechanismusedontheapolloplatformismorevulnerabletoshockandundercertaintestconditionshasbeenshowntofailfollowingthetriggeringoftheersonthesovietendofthedockingmechanismshockwaveswillnotofcoursepropagatethroughthevacuumofspacebuttheforcescanbetransmittedthroughthetunneltotheapollolatchesandiftheboltsfireasymmetricallythisplacesatorsionloadingonthemechanismwhichcanunseatthedrivecablesinfiveoftheseventestswherethisphenomenonwasobservedtheengineerswereabletoreseatthecablesbyrepeatedlyoperatingthemechanismbutintheremainingtwocasesthemechanismwasbeyondrepairwithoutmanualinterventionunfortunatelyinthesetwocasesthesafetyinterlockalsopreventedthehatchfrombeingopenedwhichcouldmakeitdifficultfortheastronautstocarryoutaspacewalktoexecutetherequiredrepairinthiscaseitwouldnormallybepossiblefortheastronautstomanuallyoperatethemanholelatchesbydisassemblingandsubsequentlyassemblingthehatchcoverhoweverifthelatchingmechanismshavebeensufficientlydamagedbythepyroboltsthismightproveariskyoptionanditisevenpossiblethatthecoverlatcheswouldfailtoretractmanuallywehaveaskedqueensteamtotakealookatthisandsheassuresmethattheycansortitoutshehasworkedonmostoftheapollomissiondesignteamssoiamprettyconfidentthatshecanmakesureeverythingisokforthisone'" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pb = keyword_decipher(qcb, kb, KeywordWrapAlphabet.from_last)\n", + "pb" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "memo from docking manoeuvre office to as test flight space systems re as docking collar tests\n", + "preliminary testing of the docking collar system has revealed a potentially serious flaw in the\n", + "design which must be addressed before the system can be certified the issue concerns the emergency\n", + "release system background the docking system performs the following functions impact energy\n", + "absorption mechanical connection spacecraft alignment and retraction spacecraft hard mechanical\n", + "connection and docking interface sealing spacecraft undocking and separation in order to achieve\n", + "these functions the docking system consists of three principle parts the base a structural ring and\n", + "the latching ring the docking system base is the main structural member to which the docking system\n", + "assemblies are attached the structural ring carries the body latches which provide a hard pressure\n", + "tight connection between the two spacecraft together with the capture latches which operate during\n", + "the docking manoeuvre these perform the docking function they consist of eight active and eight\n", + "passive hooks with an electrical drive installed on one of the latches and closed loop cables\n", + "connecting them each active hook has a cam operated mechanism which performs its opening and\n", + "tightening corresponding hooks of the passive docking system are captured by active hooks each\n", + "passive hook has a stack of preloaded bellville springs providing a definite force for the docking\n", + "interface preloading the docking interface seal will provide pressure integrity of the docking\n", + "interfaces this consists of two concentric rubber ring seals on each system and a manhole cover is\n", + "used to close the transfer tunnel of the spacecraft hatch locking and unlocking is manually\n", + "performed by the crew it is sealed by a mechanism which has a further eight eccentric latches these\n", + "being connected with each other by means of closed cable connection the docking system is equipped\n", + "with alarm and meter system which provide telemetry to the ships and to ground control in standard\n", + "operational mode undocking is performed by release of the active spacecraft capture latches and then\n", + "by opening the structure latch hooks if necessary undocking can be performed by the passive\n", + "spacecraft by releasing the body mounted latches and opening the structure latch passive hooks\n", + "spacecraft separation is performed by spring thrusters symmetrically located on the structural rings\n", + "of both systems after the latches release the principle difference between the russian and us\n", + "docking system designs can be seen in the guide ring system unlike the russian electromechanical\n", + "docking system apollo is equipped with an electric drive which uses cable connections to trigger the\n", + "latches another essential difference is the russian emergency release system ers a backup provided\n", + "by pyro bolts attached to each passive and active hook which operates in passive mode and provides\n", + "practically instantaneous undocking in the event of a system malfunction or accident onboard one or\n", + "both of the docked spacecraft situations in which the ers might be initiated include i uncontrolled\n", + "fire or explosion onboard one of the spacecraft during docked operations ii failure of the docking\n", + "control system preventing standard release operation iii attitude control failure of or unplanned\n", + "firing on one or both spacecraft imposing high stresses on the docking mechanism while the ers\n", + "provides an effective backup for emergency situations simulations and tests on the huntsville\n", + "docking testbed show that the effectiveness of the pyrotechnic bolts is a critical issue too much\n", + "explosive could cause critical damage to the pressure seals around the hatch while too little can\n", + "leave the spacecraft attached with a damaged mechanism the ers was designed for operation on ussr\n", + "missions and is therefore tuned to the structural constraints on the soviet platform since the\n", + "latches are electromagnetic on that spacecraft they are less prone to damage under vibrational\n", + "forces the motor and cable mechanism used on the apollo platform is more vulnerable to shock and\n", + "under certain test conditions has been shown to fail following the triggering of the erson the\n", + "soviet end of the docking mechanism shockwaves will not of course propagate through the vacuum of\n", + "space but the forces can be transmitted through the tunnel to the apollo latches and if the bolts\n", + "fire asymmetrically this places a torsion loading on the mechanism which can unseat the drive cables\n", + "in five of the seven tests where this phenomenon was observed the engineers were able to reseat the\n", + "cables by repeatedly operating the mechanism but in the remaining two cases the mechanism was beyond\n", + "repair without manual intervention unfortunately in these two cases the safety interlock also\n", + "prevented the hatch from being opened which could make it difficult for the astronauts to carryout a\n", + "spacewalk to execute the required repair in this case it would normally be possible for the\n", + "astronauts to manually operate the manhole latches by disassembling and subsequently assembling the\n", + "hatch cover however if the latching mechanisms have been sufficiently damaged by the pyro bolts this\n", + "might prove a risky option and it is even possible that the cover latches would fail to retract\n", + "manually we have asked queens team to take a look at this and she assures me that they can sort it\n", + "out she has worked on most of the apollo mission design teams so i am pretty confident that she can\n", + "make sure everything is ok for this one\n" + ] + } + ], + "source": [ + "print(lcat(tpack(segment(pb))))" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5494" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "open(plaintext_b_filename, 'w').write(lcat(tpack(segment(pb))))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/2019/9a.ciphertext b/2019/9a.ciphertext new file mode 100644 index 0000000..76f35bf --- /dev/null +++ b/2019/9a.ciphertext @@ -0,0 +1 @@ +VXZAT CEALG YPEVM XJTIN XYOXG NJNDI FAWXS TWAPY GXMTI UHCMY XZEFU DVBTS EPFWR HKYRB HNEEK OYAPF EEPSR SQYNT ANXVK CMTYL CAIXS XBXRF PAGNW YIIZT WKMZO NUXXU UXMIH YGSIK LGTDA XJNPH FGXFB TPTLA TNQNX LBPJB QDLEY GVSFP FPWBG SAOIP OTTXZ EEUNG KNGGA IJXRR PZEVG HYKFZ CAIYR VFPLG PWBTV OEPWG IFSPV OHGVC CIDIW BNFMN WUHXA WWCPP YSXRJ PHCLF RFQCW RYXQM SSEMQ LWLGA AGTMV RKXIU HDIFG DDIQJ IUHUI AZGXT VUHRK IMMMZ STUOO POGCX YTPIM RMSSC SLAPC ETLXH PGEAZ IYAKO VGQTP XVYLT DGTCI HEJTE YOZZR BQTGG SOTUS ZXVKH MIWUB RXJIK WUHGS OYUAX HAOBE LEYBE VUXHP APTVP VCMJG RJPHI HKNFW YWPWH WTDNV EQJKE SWTSO GNSCX SQCAP HHLCE YGLZC GFIXT PTINX FMTOZ FTDUP WPOAP RGDEY AMXIJ GTPBX PSTUA MKCAL SATUT QCHRH PMVGD DAEWP VTSEV PIZAB KLGTD IFVPO NUEIE HPHXD WEOKK VRQXZ KWDOE FAHRT DLMLK GALTY BTXCM ACFCQ KVVSW TXTWH AWZRV YREUW XOEXD EPMTH XZLFT PMMYT GEGMW PHFZX VKSAL PPFMM RFBFE IALEF ONSQR VIDIO GVMMX IACTQ HKLDA ZLEZO TTDFR BSWRP BDPIA LXZRR DPNQP KSZMV NWJRB ZBSKX ECOBW VRVID IGBRC MXMES IJTFZ ZSWMI UHIFI WXUSB GLGFT XYSYZ OEVRN RTKSG XESIC IPBPV TWWNY FAVHQ TSVPA FRMTK VOEQT UPNAQ HLGWL GRTMR EUJIG FPXLV YLAQJ SXBXD ITWAO AXIUF TXYSE QEXWL FCISI QBAAU KLGBX WXACC OIWLG VIIAJ EGCML VRDHX BXSNI TOIEK PYXTK BHBAE FBDTT WHNIY GXNYJ ELEAG IEMRV YGSPW OLRFJ IURTN VLXYE PYCYH CEVAQ TNSAW FHWGM WYBLT UTNFT MEJLP ETLRB KPSIH XTABU FNGUS MJZDE TLXHC VNMJK EAKLS RZQEI SNPTU MUFOL OLHKR EVOKA SCELS HPHEW QQZDT CPAGD VGOHS WXGAP NIHJI FMIIV FVRSM NXBHT OHHDT TZWAR VHEVP AJSEU RXSCS HFOYA DWLAS TSXZG RVINC RVICT KPOIE WXNHH SIGBG ATKVE SWXNT ZRAEJ ERMCE ZPERS ICXNV ICEAX LFXSR VUXRS CXURI KRRPD XLWEL TEWLG CIKGL UTNQB SZGPA XZDXE TLHYC IELDR EEDUG RFLSE KLPKU DHRAT EWETU WZKXS OHATD YTRQZ LGWLE ZTEBT BTIJS WWLMP STALO POQDI GHZES OQASW AWFLO EUVRB GGELC XGFIT ABRZE XJMLD MZIUG NAWDW AEQXJ ESWIF ELCGA JTSCV NMWER PANWV ZVRXW SESQK YBHHE JTGNM MNXQB PLLAW RNQGW YOHII QBJSM QMZSU MPKPV IYLYB PPSIT KVUYT IRRPQ WFLWO BJIGB XHXTP UCCUX AWISZ AZDEP AVCFT HVZYR GVKZR FCMLV ZRETL CORTL PTDRR MCWAC HILGS HNQWY DSWTW LLHOU GJFOL IAKOL IXAIU HCIIM HVNBA SOOTX HJHCE YGLES GAIWV RLBZM YOIIZ GEYAS WFFUC ILEXO OQTVR VEMVG EDERA RNATH XCHSD ZUALS ZIALS EIIJI UHTGS EMNHB MRVHI YIVPT RDSQF OLEOT FGAPZ IZRTH GAXPR QNEUR AUSHM VPWZI UHIEG GDCUA WWNFW PISMQ EKOXB BTZTZ OWUAZ WVGTU PNKBF GRPHT TVTUP COYFM NUPTM OTRRQ SMUMQ RXLET RIKEJ CISIQ BAAUK LGYCM ALEYO PASFS COJZX FOXYM QCIIF AEPKU EIIWV TROBQ EEJRN SSMAG EJKXM FQBPG MMHBT AOVRH XVPWA JTMJI UHXEW PGVHK GQNGP RXZEQ OKFEU QIAQE GBDWZ WRTXR TEPST ZGIPO UETJM QNIQR VSWXX KLNYZ SRVRC AQTAE ONKTL HDXRJ LEEDU IFOSA LPARR MNXXF DAMSY PVQJI GWGWI ARGRM NXBBP RHETS YNFIG HXRAR GVHBE RNRCM YLYOL GGGGI QSIWB SEPZL TIDVA LOPKA GPVFT TMCPR PGZWR YXQGG OPCGV SEDIO RDTJO BYISW CEFWS EEHAW HZRNS NXEAA ZPHGT VXZED TEWXR VINYC HGMMN XGCVH GSJPL SFEYC IRIGH GIBTI FWTOT LDTMQ ZXQSH IPLXE IAGRB CHWTL TVCQZ GBHTN SPFBS SYEBH ISZJZ QIFSL GHCEX YHPSB OKAWH CESYL DZSVR VEIGP AGGVO OPOGG ALTHP GFIXO IOWDT JIAYI HUXXG WXFCA VIUHC OWNBF NMXSS HJSWW TCRMU VRJTN IHMHB BOHRG HMFWH HOTOS AYINS OBXOW RVRVI SGSVZ OFVRN CISIQ BAAUK LGHJS ZMOTE DWLGH DGMYX UWWYW ESIVT MBOAQ ZSGYR AFJTJ EPZRB HXXNG MLYDJ SJCID IFGVT VUGVH JFPWT GRQLR VSWTJ ZMHOM XSZUC MALJY AFWKG BSIHT ZAIPZ IZCHK GAOTH ESARV VNMWX RFMNX GCVMW FLNIB GXRVI FJZXZ RMKXF CIHKS SRNUQ VGMAE XTGVF MJWNK TLMMM EIFMS OOLER VXJWM TORVD WMJFZ CZAXH CSAIC GREJJ EUHXS MKPQI ZSQRV ITYZU NMQNH RYHEW FLCEP JEURT SWPKC IAYIE DTLMG ECEFL IYSWT XYXFE PYXVA SEXZS RUAZX FHCEH TVPAM NXQSA PTUPS TMZAU HXWSO HGGVO LGCCH TZPSS YAEYQ ALMEL RHMXI UHHEP AJSWF MSRFJ GMQHG GVUPZ WWIDS EENPA HGWSN EENBB IQPNH DXMGW LEHSL GBSIH PPGUJ YVBHX WBNJY AYKXR UTHOY BUTBT SQWTQ XWDZT PWWNS APHPF REAKL NGPRM SRYIW JSJZA IXDLN WMNRR VLOVS MYOUL SZBXG RTAGE UUWGS HIOSS ENPDY BQTHX LAGTV KHVTC SVQWP TQDTZ CRTSY LNWQO MILDP EGALN AEIYP DRTYH VTIFM EIHWX JAVNM LIUHG EXQTF UZUJF SHMKH CFSDW ZBHUE PJGNE DGLGB SMWWS PRGKI XOBDR LXXIU NXVKC MDUPS CALER RXDSZ ZNEJJ PHCLX BLSRU AZXVD JGRTF BCVUM FGXQS MJZSA DPBDP ELEYB HKTYN ZTLMZ ETWKJ VNV diff --git a/2019/9a.plaintext b/2019/9a.plaintext new file mode 100644 index 0000000..3dc20f3 --- /dev/null +++ b/2019/9a.plaintext @@ -0,0 +1,43 @@ +harry with the launch of the apollo soyuz mission coming up i thought it would be a good idea to +check in with mike and make sure he didnt have any leftover surprises for us after the tank +pressurization problem on apollo xviii was not completely confident that he couldnt have set +something in motion back when he was still working at nasa he seemed pleased to see me i dont think +he gets many visitors but we didnt have alot to talkabout and it didnt take him long to figure out +why i was there he still claims he had nothing to do with what he called the accidents though he +admit she sent the letter to the press i pressed harder and asked him about the manifesto it had +been readout in court so he knew we knew about it but he was definitely trying hard to steer me off +the topic and i got the feeling he was hiding something i didnt get anything more out of the +interview but i continued to worry about it on the wayback to headquarters so when i got there i +dugout the manifesto and took another look i dont know how we missed it but we never carried out +forensics on the document i guess i was so taken up with cracking the cipher and analysing its +content that i forgot to ask someone to check it as soon as i realised the mistake i sent it over to +langley and got them to run the tests the results are conclusive the manifesto was not produced on +mikes typewriter i looked through the files but couldnt find anything written by him on another +typewriter even at work there he had a secretary to type for him and in any case the ink and +typeface on the manifesto dont match any of the nasa machines either a typewriter is too big and +bulky to hide and we didnt give mike time to dispose of one so i dont think the manifesto was +written by him i read it again more carefully for clues i should have noticed the phrase our son at +the top it would have reminded me that mike was married putting that together with the keyword for +the manifesto cipher niobe things began to get a little clearer homer wrote about niobe in the iliad +she was famous as the queen whose sons were killed by the gods in revenge for her pride so i got in +touch with interpol and made enquiries about mikes wife mikes wife is also english and the manifesto +uses the english spelling of programme her friends says he had a breakdown after her son died and +when mike moved back to the us she went to live with her in laws after what seemed like as low +recovery she told them she was moving back to the states to be near her original family that was +eleven years ago but her relatives stateside say they have not seen her and no one knows where she +went i spoke to the security service in the uk and they told me she was an engineer who was quite +capable of carrying out the sort of sabotage we saw on the earlier apollo flights significantly she +learned her trade working with the uk atomic weapons authority aw re which fits perfectly with the +worries in the manifesto she left after her son died in korea and started meeting with peace +campaigners her security clearance was revoked and soon after that she left the uk soon after i +received the report from london i took a call from the apollo soyuz team at nasa someone reminded +them about the problems we had with the lunar flights so they called me back into audit their +security i found a trail of edited service records that reminded me of the tampered files associated +with apollo xiii the files were all scrambled using keys that came from homer apollodorus and other +greek classics so far we have cracked all but one of them and found and fixed problems with guidance +control life support and electrical power but there is one file icant crack without it we dont know +if there is some other critical system that mikes wife may have tampered with she failed to provoke +america into declaring war on russia three years ago but the peace is still far from easy if +anything happens to the crew of the as tf we might find ourselves on the brink of war again with +stafford brand and slayton scheduled for liftoff in the next few weeks it is crucial that we break +this cipher \ No newline at end of file diff --git a/2019/9b.ciphertext b/2019/9b.ciphertext new file mode 100644 index 0000000..8a2c245 --- /dev/null +++ b/2019/9b.ciphertext @@ -0,0 +1 @@ +11101 00101 00001 21122 10001 10111 00101 10001 01111 00210 11011 11111 01011 01001 01011 21001 11000 01011 01000 00012 21222 10011 11010 01000 01001 10201 00000 11101 10010 01011 00012 00212 00011 01000 01101 01110 00000 20021 10010 00100 11010 11011 00002 10000 10000 11010 00001 00022 00110 00101 10101 10001 01100 00210 01111 10010 01001 00000 10111 02020 00101 00101 01001 11000 01022 21210 00001 00110 10101 00010 21020 02111 00100 00110 11101 10000 21012 01110 11001 10011 00000 10021 10011 01101 01100 00011 00002 10011 11100 10010 01001 00101 10020 00021 00001 01010 01010 01001 10002 21011 00011 10111 10000 00120 12102 01001 10001 10010 10110 01021 02011 01111 00101 00000 10001 10022 20000 00100 01010 01100 01110 21021 00101 00100 11101 10000 21002 12111 10100 01100 01011 10002 01202 01010 11001 00010 01111 00011 00101 00010 11110 10000 00012 01122 00111 00001 11110 10000 00021 12210 01001 10100 10100 10010 22002 00001 10000 01101 11101 00100 21001 01000 11110 10000 00001 01202 20200 00011 10110 01000 01002 22100 21101 11000 00100 01110 00200 12011 00000 11010 10010 00111 10221 00100 01010 11110 10001 00102 21220 10000 00110 10100 10000 02100 22101 00000 11010 10001 01012 00200 00100 00001 11101 10100 01021 10001 00010 11000 11010 01101 02111 10001 01110 11001 00000 01002 11002 10110 11110 10011 11011 01000 00210 00010 11101 00110 00001 22221 20000 11010 00110 11100 00100 02210 01101 10000 01100 01011 11122 10001 01101 01000 00110 10021 10021 10101 11100 11101 10110 01021 20010 10010 01110 11101 00100 21220 01010 00011 00010 00100 11010 12201 00100 10011 10000 11000 21112 00111 00011 10010 00100 00001 20010 11101 00011 10000 11001 01112 00211 10011 01011 01011 10001 10200 21100 10000 11010 00001 00020 20010 01111 00111 11001 11011 20112 10101 00111 11010 00100 01001 12202 11100 10100 00100 01001 10002 11010 11110 11010 01100 00002 00202 00100 00110 01011 01000 01200 02111 11101 01001 10000 00100 20001 20001 11101 00011 10000 11001 01112 10011 10000 01110 10010 10021 10101 11111 11001 01000 01011 11002 11110 11110 10101 10110 00021 02220 11100 11010 11000 01000 00202 01100 00100 11011 00111 10021 00200 11000 10100 11000 00001 12020 20100 01110 11001 01100 01011 11002 11110 11111 11011 10101 01001 10220 11100 01010 00100 01001 02002 11101 11110 10011 00100 00021 12122 11101 00001 00011 00000 00100 02211 10110 01001 01101 00101 20020 21011 00010 10000 01101 00211 00211 01011 11000 11011 10000 10002 11101 10110 10110 10101 11000 21000 01110 00001 10011 10100 10021 01101 00011 00000 01101 11000 20001 20101 01100 01110 10000 10002 22221 10000 00100 10101 00100 21022 12110 10001 10000 01001 11020 20000 01010 11111 01100 00100 12100 20000 10010 00000 00101 01100 21001 21000 10010 00111 00001 10012 21001 00110 11100 10110 10000 11002 10111 10010 00011 01000 11000 02102 10111 00011 00110 11100 02100 02111 01101 00101 10001 01111 00210 01011 10010 01111 01101 00000 21100 01000 10100 00110 01100 02200 02001 01101 10100 01001 11010 21002 01110 10000 00101 01100 01001 20100 10010 11111 00101 00011 21122 00000 00100 00000 01000 01120 20001 01101 10110 01000 00010 02110 02101 10111 10100 11110 11010 00002 10000 10110 01111 01101 01000 21101 00000 00101 01000 10001 22002 20100 10010 01001 01100 00000 00021 11101 01001 00001 00110 10020 02111 00100 00001 01011 00010 01201 00100 10001 10100 01100 02210 00201 10010 00100 01000 11002 22000 20100 11010 11010 00000 01111 01000 11001 10010 00000 01100 00202 02010 00110 01000 00010 01000 22112 01001 11111 01010 00000 01200 02110 11101 10100 00100 11102 22001 20000 00010 01000 01010 10202 00000 11011 00111 00001 10010 11120 02111 00110 11100 10100 11011 12022 11001 00110 01000 11001 12100 20201 11010 00110 10011 00001 02002 01001 00001 10001 00011 01202 00100 11111 01001 00001 00010 20022 22011 00010 00010 11010 00000 00200 11110 01100 01011 11000 02012 21001 00001 00010 00100 01100 00202 01010 00100 00110 00001 00200 12221 01100 01011 00001 00100 00211 22110 10011 10011 01110 00010 00211 10110 11010 11110 10111 00021 01001 11001 10100 01100 11001 12112 21100 10000 10111 10010 10002 02221 10000 00100 10000 00110 22121 00011 00111 10010 10000 10121 10021 01101 11110 10001 01101 00211 00201 01011 01001 10011 00001 10020 01111 00001 00000 01101 10110 20011 10101 11101 00100 01010 22200 00101 01110 00011 10101 00100 21201 01110 11110 10010 00101 11220 00210 10110 10000 10011 01000 00212 01001 10100 10000 00111 01110 02201 11001 10111 01000 10000 00121 20111 00000 00010 11000 00002 20011 10101 01000 10100 01001 12212 21001 10110 01001 10100 00000 01121 11100 01110 11010 10100 01111 21201 11011 10101 00000 00100 02100 00100 11011 01110 00101 00020 01101 00111 00001 10000 10000 01021 11110 01011 10110 10100 00012 00112 00010 00000 11100 00110 01011 12000 11100 10110 01101 11001 21000 21110 11001 10010 00000 00120 00000 01011 01001 00010 10000 12120 11011 01111 01010 11001 00010 00000 11101 01001 10101 01000 10122 20021 00011 01110 01101 00001 11200 01100 01110 01000 00111 00020 12020 10001 10011 01000 10000 00222 21210 00110 10000 01110 11011 02001 20011 01011 01111 01011 01212 10010 11101 11001 00101 01010 10200 02111 01101 01100 01011 00012 10012 11100 10010 10110 01101 02202 11100 00111 01100 01011 00012 10011 01101 11100 10011 10010 01012 00220 11110 01000 01101 10100 00021 21100 11010 01011 00010 11110 02100 10111 00100 11100 11010 00002 10200 10010 10110 00000 11102 00201 20010 10011 11100 00000 01211 00000 10010 10010 00101 00001 21201 10110 11110 11001 11000 01002 00020 00101 01000 01001 10100 00021 20100 11011 01010 10010 01011 00000 01111 01001 01011 10010 01000 01221 10111 00100 11100 00000 22110 12000 11101 11000 00000 01011 21112 10000 11001 01000 00110 01120 22200 00001 11010 00111 10011 00221 11000 01101 01111 00011 00212 10011 11101 11101 00100 01010 22212 02011 11101 00011 00000 00021 20221 11000 11000 11000 10000 02002 11001 10110 10110 10101 10110 21021 01110 11110 11011 00000 01222 00220 01100 00100 11000 00000 22110 12000 11111 10011 01110 00010 00211 10110 11010 11010 10110 10021 02101 11011 01011 01100 00000 22200 21001 10001 10000 10001 00020 12210 01001 00100 00101 00100 12211 21000 11111 10100 00100 11122 22001 00000 00010 10110 00110 12221 02000 11100 00010 10001 00012 20012 00110 11101 10010 00000 10021 10021 01101 11101 01011 01100 10210 22101 11001 10100 00000 11020 02000 11000 11000 01000 10011 02001 10210 01101 00001 00111 00110 00120 20101 11000 01011 00010 01101 10211 01100 10000 00110 00010 02202 11101 00001 10001 10000 01112 22210 00001 10011 00011 00010 10201 01100 10011 11000 10000 01012 00000 00101 00001 11111 10101 00021 01101 00111 11110 00110 10000 10101 12011 11000 00100 00010 00101 12220 01100 10001 10001 10010 01021 01000 01110 00010 01001 01001 10200 20100 11000 11011 10011 00020 10221 01101 00001 11001 11100 20111 21010 11000 10010 10010 01112 00202 11110 00101 00110 00000 00020 20210 00011 00100 00100 10000 00000 11111 01000 10111 00101 10100 21001 01110 11101 00010 11000 11111 10110 10101 01100 11011 01102 10201 11101 00110 10010 11000 00110 11011 01000 11010 01100 00012 22212 10001 10011 11001 00001 00211 00020 10011 00010 00000 01010 02222 02000 01110 01101 11100 00000 20121 00010 01111 11000 00100 01001 20000 10001 11001 00010 11100 12012 01110 00100 00101 00000 10200 00001 01110 11000 01001 01000 21200 22100 11001 01001 00010 10022 00020 01011 00011 00000 01100 00210 22000 11010 01000 10001 00011 00002 00110 10000 10111 10010 00002 02121 10000 00110 01101 10011 21001 11110 01111 00110 00010 01020 02122 00101 01001 10001 00000 00020 00111 01011 00101 11100 00010 02210 11100 00011 10010 00110 00201 01200 11011 00001 10100 10000 11021 00010 01011 01001 10000 01111 20111 00001 11100 00100 01001 12002 11000 11111 01100 10000 00100 21100 21011 01111 01001 11101 10100 00021 00001 01001 10010 10110 12022 12010 01011 11100 01100 10122 21220 00010 11010 10110 00001 00010 21011 01001 11110 10101 01001 11202 21100 10001 00110 10110 11000 02120 00100 00000 10000 00100 02002 21110 10010 01101 01000 10012 12021 11101 00111 00100 10100 12120 20000 01001 00010 00010 01001 00200 21110 01110 11100 11010 10200 11010 01111 11000 11010 01100 02111 10001 01100 10000 00110 00011 02112 11101 01100 11111 11010 01000 11010 11111 01011 01000 10002 11222 00110 00100 01101 10010 01021 10111 11110 00110 11000 01100 11211 11110 01110 10110 00101 10100 21020 01110 10110 10011 00000 12222 12100 01100 11110 10000 00002 11022 10100 00011 01010 00100 01200 21200 10011 10110 00000 00101 02000 21101 01111 01101 00110 00020 20020 00010 00011 00110 00100 12020 00201 11010 00010 10110 00010 12210 01000 01100 10111 00010 10002 00110 10011 10011 11010 01000 00211 01110 10011 11011 01010 11122 12100 00111 01010 00000 01101 00200 21010 01000 00010 10110 00010 12210 01000 01100 00010 00000 11000 11000 11111 00111 01000 10001 22120 20111 00000 10101 11000 11000 20111 01000 11001 01100 01011 01002 10010 11100 11111 10010 01000 11222 21100 00010 01111 00010 00212 12111 10001 01001 11001 00101 00022 00011 00100 00101 11010 11002 12020 01100 01010 01100 00000 10202 02000 00111 11010 11000 00001 02212 00000 00100 11001 10111 00021 00020 11011 01011 10000 00101 11101 11011 00101 01101 01100 00110 21100 11010 11001 01110 00101 00020 01101 00111 01110 11010 10111 22121 01001 11000 10000 10011 01002 00211 10010 00000 10101 10000 00122 10010 00010 00110 01001 01100 02000 10101 00001 00010 10000 12120 11011 01111 00110 10111 00000 02002 00001 00001 10011 00011 01202 00220 11100 01010 00100 01001 02002 11101 11110 01101 00110 00020 22221 10000 11011 11100 10000 12121 10000 01000 10011 00100 11102 22100 00011 01100 00100 01110 01210 02200 00100 00111 10010 11010 00112 02000 00100 01001 00000 00020 01101 10100 00001 01100 00100 01000 21110 11011 10010 00110 01101 00200 21110 01000 00010 10110 00100 12010 01001 00011 00100 11100 22100 12011 00111 00001 00010 10111 00000 01110 00011 01101 01100 10210 02010 00111 10001 01001 00002 20021 00011 00100 01001 10001 00000 20221 01000 00110 10000 01010 12002 00001 00111 10010 00100 10022 22102 00011 01101 10111 00000 02121 22200 01111 10110 11000 10002 22102 10001 00010 01110 01100 11202 22100 10001 10100 00000 01110 02210 02100 00011 11110 00101 01101 01110 11111 00100 10110 00101 11100 21011 01110 01001 11101 10100 00021 10001 00110 01100 01011 10202 01000 01010 01111 01101 00100 01120 22110 00001 01001 11011 00112 10020 11111 00001 10011 00000 11212 22101 10011 10100 11110 11010 00002 10000 10001 00110 11001 01111 20200 10110 10100 00000 01110 02210 02100 00011 11010 00100 00101 21200 11000 01001 10010 01000 02112 00001 00011 10010 10100 00001 20011 11101 01101 01101 01011 10002 10000 11100 00011 11011 01010 00210 21010 01010 00001 10000 10111 12022 00110 01001 11101 01100 11222 21201 00010 00011 10010 01002 00012 11111 10010 00001 00100 00200 22010 01010 10001 00000 10100 22122 02011 00110 00010 00011 01000 10200 01000 00110 10010 00000 10112 01110 00011 11000 01100 10011 20021 11001 11100 00001 11010 01001 02200 11101 01100 01010 01000 02200 21000 11001 00010 10100 01000 00200 11010 01100 01011 01000 01100 22211 11000 00110 01110 11000 02102 00001 11101 01110 00000 00112 22220 11110 01101 00001 00011 21022 00010 01010 10000 00001 11002 21002 10000 01111 11010 10100 10121 22011 00000 11010 10010 00002 10022 10100 00011 01010 00101 01200 20000 10000 00111 00110 10010 02122 00100 00011 10101 10001 11110 00122 01010 00000 01110 01000 02112 12101 11101 11110 01001 00001 02021 10000 01000 00100 00110 11110 00001 01011 11001 10000 00010 00021 01101 01111 10011 00000 10120 00200 01010 10000 11111 01001 00212 01101 10111 10000 10001 01000 00212 01011 10100 10000 00110 00110 20201 11011 00011 01000 10001 01222 00110 00111 00111 00101 10120 21200 00110 10000 11011 01010 00212 11101 10011 11111 00001 01002 01122 10111 00100 11010 10001 10121 20221 11000 01000 01000 10000 00020 01101 10100 10100 10001 11010 21000 00110 11101 11001 10100 11001 21111 11010 00110 01111 00010 11110 00011 10101 10100 01101 10210 21001 10111 11101 10000 10110 22121 01001 01111 10100 10010 11020 00002 11000 10111 01011 10001 11101 21100 10101 00001 00010 01000 02111 20111 11010 00111 00000 01000 21211 00110 10011 01010 10000 01111 02111 01101 01100 10010 00011 12121 11101 00000 01000 10001 01001 20011 11111 11001 11000 01002 11002 10110 10101 10100 11000 00020 02020 01000 01100 00000 11011 02002 01111 01101 00010 00100 11000 21102 11111 01100 00001 10000 11202 00010 11011 01100 10000 01100 22201 21000 00110 01101 10100 01000 12210 11001 10001 01101 00100 20200 21111 11010 10001 10100 10021 01112 11000 10001 00100 11001 12110 11010 10111 00001 11000 00002 11121 20100 01100 10010 00000 01222 12221 00100 11000 00110 01001 21102 11001 01110 11010 10100 00011 11021 11011 01011 01000 10001 01121 20011 01111 10110 10011 00002 02002 00001 00001 10100 00010 10202 01120 11110 00111 00101 10001 21011 00110 11011 10110 10001 00021 12220 01100 01000 10001 00110 00211 02211 11011 11000 01000 01002 02112 21110 00001 00110 00100 00120 02111 11101 10101 10001 01100 00210 01011 10011 00000 11100 01010 21100 11010 00001 11011 10110 00021 22201 00000 01100 11101 10111 21021 01011 11000 11110 11010 00000 11020 11111 01010 11000 00001 12212 00100 00101 01101 00010 00121 22200 01000 11001 00010 01000 02112 22011 11111 00000 11110 11000 02011 21111 01000 10000 00110 00011 02110 11101 01100 00100 00100 20211 22111 00000 10001 10000 11112 12112 11100 10011 11110 01100 01011 21201 11011 00011 01000 11012 22101 11011 01101 10010 01000 00112 12111 10100 10001 10110 11000 00020 02110 01000 01100 10000 10102 02021 00111 10100 01101 01011 02102 10001 01101 01000 01010 11002 00002 21010 10000 10010 11010 11002 01100 00011 10110 01000 00010 02110 02101 10111 11100 11110 00010 12000 10000 11100 10001 01110 01201 20211 00011 01001 10001 00001 20022 20011 00001 00001 11001 00022 11210 00111 11011 11101 01000 20012 22001 10111 00001 10010 10020 02121 00111 00101 01100 01110 00001 22110 10011 01110 11001 00102 21220 20000 00010 10000 10010 11100 02011 00011 01000 10001 00111 00211 00111 11000 10010 00110 01021 11002 10001 11010 11100 11010 11100 11011 01111 10000 10011 10112 00011 00010 11101 00100 00011 11020 11001 01011 00000 11010 00000 12112 11110 00110 10110 10101 11000 21002 01110 10001 11001 10001 00012 10001 00101 00001 00011 00111 20000 01011 11101 11110 00000 00022 22201 00110 00001 11010 10101 02121 20111 01000 01001 11001 00101 20022 01111 00100 01000 00100 00210 20000 11001 10010 00100 00011 20111 01100 10100 01000 10100 00020 00220 10100 10001 00010 00001 02001 20110 10100 01000 11101 00101 20111 00011 10000 10101 00011 01002 22100 10100 00001 00010 10001 02120 11011 00100 10100 10000 11111 00100 01010 01000 00000 00100 20220 20000 11101 01111 10000 10101 10100 10110 10100 00110 10100 12010 02201 11100 01000 01001 11002 20012 20000 00001 10010 10001 00020 10020 01001 00011 00101 10100 11110 02101 11100 10000 00010 01000 00020 11101 01001 00000 00100 02120 11110 01110 00001 01011 00002 00120 01110 00110 11010 10001 01112 01201 00110 10101 10100 11000 02020 02100 01000 01101 00000 10102 02000 00111 11010 01101 00000 10000 21211 01010 00011 11010 00012 00010 11111 11011 11110 01001 00002 11201 00100 00110 01000 10111 00120 10111 10010 11000 10000 11002 22020 10000 01011 00111 00101 10120 20101 00101 11100 01000 00012 12121 20111 01010 10001 00010 01220 02110 01111 10100 00101 11101 11100 21110 00000 00001 00110 01120 02110 10011 10111 00000 10011 00112 00011 11011 10110 01000 00002 22212 20001 10000 11100 11100 10011 21011 01011 10010 00010 01101 00200 21110 01000 00010 00110 00000 12010 01001 00010 00100 11100 01100 20211 01011 10001 00111 01101 00110 01101 11110 00010 01010 01201 12200 01110 11010 10010 01000 21002 12001 11101 00101 01101 00110 21020 00110 01010 10000 00010 00210 00010 01101 10101 10010 00002 00222 10010 00010 00011 00100 10200 21100 01010 11110 00011 01000 01202 01010 11011 00100 11100 11110 00002 11111 00101 00110 00000 00020 20210 00011 00011 10110 00000 00200 21110 01010 10010 00011 10212 00220 00000 00110 01101 01000 11201 10110 11111 11101 11010 11010 02111 01000 11100 01010 01000 02212 12000 11001 00011 01100 10000 21101 21111 10100 01000 00001 10120 20001 00001 11100 00101 01000 21101 20001 11011 10110 11000 00011 00112 11010 00110 01101 00001 01200 01200 01111 01001 10111 10000 11021 10000 01110 01110 11000 10100 20211 11010 10001 01000 01001 11121 00001 00111 00100 10001 01121 21201 11001 00001 00010 00110 11221 11110 01001 10110 10000 00012 20112 00010 00100 00011 01000 10100 10001 01101 11101 11010 11000 11111 22110 11000 10010 10001 00102 20021 00011 11010 00011 01100 10200 01110 01011 10000 10001 00111 20211 01111 11001 01111 00100 01000 12211 10000 10000 10010 01110 00121 01011 01111 10010 00000 00020 21211 11101 10000 01100 01011 11122 10001 01101 01000 11001 00110 20220 01010 10010 01101 00011 00222 10120 01101 10011 00010 00010 00222 01110 00011 00100 01100 10110 02011 11100 11010 11100 01010 02202 11110 10111 10011 00010 00002 00211 01110 11010 11110 10111 00021 01201 11000 00110 01000 10111 00120 10111 10000 00101 00001 10101 00201 11010 11100 00010 11000 12022 11100 01001 00010 00010 00011 01201 11111 01000 11001 01010 01202 22120 00001 01110 10001 01010 00002 00101 10110 00100 00011 01021 10000 01001 11101 00010 10011 12100 11101 10000 01011 01001 10001 20200 21100 10010 00011 01110 00110 00220 01110 10001 00100 00100 12020 00100 00011 11001 11001 00111 20201 10010 11010 00111 10110 00120 02100 11101 00000 10100 01100 02110 01101 00100 10011 10011 11002 01111 10101 11000 00100 10100 21010 02001 11101 10000 00100 00002 11111 10100 10100 01010 10001 00000 20011 01001 11010 01100 01001 12200 21111 11010 00010 00011 00111 00220 10101 10110 11100 01011 22000 11001 00001 00001 00100 00020 22001 01010 10010 00010 01001 11000 20200 11100 01010 10000 01011 00200 00100 01100 00010 00100 10120 21111 00111 00110 11000 00110 10121 01111 11011 00111 01100 10010 02120 11100 00011 00100 01011 10012 01211 11000 00000 11000 00010 20000 11101 01101 01100 11100 11110 20000 10011 10110 00100 00010 02122 12101 01100 11010 00000 01000 11202 01000 01110 01011 00100 01221 21211 11011 00101 01100 10100 02021 21100 01010 10000 11011 11102 00021 10010 00101 00000 00100 02220 02100 01110 10110 11100 10102 02111 00101 10110 10100 10110 12111 20001 11010 01010 01001 00101 10221 21000 01010 01111 01000 11100 22101 11001 00111 00001 00011 21222 02110 00001 01110 10000 00022 20112 00010 00000 10111 00010 00122 02011 00001 00010 11110 00000 00200 11110 01001 01101 00100 00120 10220 00000 01110 11010 01000 22002 11001 10101 01101 00010 00101 22200 01000 11011 00110 11100 12100 02111 01100 10011 00000 01012 00012 00011 11011 00010 10110 11111 02100 00111 10101 11000 00100 02221 02100 00111 01100 01011 11012 10021 11101 01010 10000 01011 00002 00001 00011 11100 11010 00012 12000 10000 11100 10101 01110 10201 20011 00010 01101 10100 01000 20111 22001 11001 10000 01000 10120 22220 01100 11000 01110 01110 10110 10111 01011 01001 01100 01101 01210 20101 11000 11000 01011 00212 10210 10111 11011 00011 10001 11121 20101 11010 11010 11101 00011 00210 01110 00010 01010 11001 02100 20211 11000 00001 01110 00100 21000 21010 10000 01011 11001 00000 20020 11001 11010 10101 00110 20021 02010 11100 00011 00000 10021 10001 00101 10001 01011 01001 00122 21201 00010 10110 01110 01001 02100 21101 11001 00010 00100 00000 00221 11011 00111 01101 00011 11122 10100 01100 11111 00101 00112 21212 10010 10000 00000 00000 10200 01111 01010 01111 10001 01001 11002 20101 10101 01100 10000 00012 22201 11111 00001 00010 10001 11021 20001 11010 11000 00001 10002 00021 10101 01110 00001 01111 01010 00111 01011 01001 00000 00010 02201 10100 01001 01101 10110 00000 20021 10010 00101 00110 01100 20100 12010 11100 10001 01001 10122 01020 10001 01010 11000 00011 00222 21210 00101 01101 11000 00102 21222 00010 00100 01000 00011 00222 10021 01111 10010 10010 01001 00002 20001 00110 00011 01010 01021 11111 01001 11011 00110 10000 02101 10100 10000 11000 01010 11002 21002 10010 01001 10000 00000 10122 12000 01101 11100 00100 11001 20002 11010 10111 00000 10111 10101 00011 10101 10110 10010 11000 00110 11011 01000 01101 01010 00101 22200 21000 11000 11110 10010 10002 10101 10011 10010 10000 00010 11210 00100 01100 10111 00010 00002 01012 10000 11010 01111 01101 00000 21101 00000 00111 11001 10101 21001 10110 11100 10110 11010 11011 02210 00001 01100 11001 10001 21010 00011 00100 11100 11010 00102 11121 00000 11100 10101 10000 10002 00001 10111 00000 10000 01000 00112 20101 10000 01010 00101 00012 21221 10010 00100 10100 10000 22002 10111 10010 00011 11000 11100 02101 10111 00100 11000 00010 12000 12000 11110 10010 11110 01001 00012 10011 10011 10011 00111 00221 01220 01001 10001 10000 00110 20221 01101 01101 11111 10001 01001 01002 01101 00111 00110 00100 11100 02210 01100 10010 00000 00010 21111 00010 10100 00010 11001 10000 20120 11100 11001 00010 11001 00022 11011 00111 10001 10000 11020 22000 01010 10010 00110 11001 01202 11010 11111 11000 01100 10101 12020 21111 10001 11000 10110 11121 21001 01010 00101 00100 00100 21120 00100 01110 00100 01100 00100 02011 11100 11100 10000 00010 02210 00000 01101 10000 01011 01002 02111 10001 00111 00000 00001 00202 10121 11011 01001 00101 00011 20200 01010 10101 10100 10110 00001 10110 11010 00010 10111 00010 02200 12000 11101 01111 01110 01100 02121 20101 10011 00111 01110 01210 02010 10101 00001 11110 10100 01000 20111 11010 00110 00001 01111 10000 01111 11000 11100 01010 10200 11011 01110 01100 00000 11100 20001 21010 00010 11001 01101 00201 20000 00011 10001 10111 00000 00020 00111 00011 00000 01100 10110 12020 10101 11000 00100 11100 01100 02010 10101 10000 11011 00100 02120 21001 01010 11000 00110 11111 11001 11010 10100 11100 10001 12002 02111 10100 00010 00000 10111 11120 10010 10000 11101 00100 10211 12001 11100 01101 11011 10012 01020 11011 01000 00111 11000 11001 20120 01110 00100 10000 11000 22000 01001 10011 10111 01000 01112 21210 11110 11001 00011 00110 00000 00211 11010 01111 11001 10100 01100 20110 11000 01101 11000 10012 22120 00001 00100 01100 10011 20002 10001 11100 00110 00101 00020 10212 10111 10000 00111 00101 00020 11211 10110 diff --git a/2019/9b.plaintext b/2019/9b.plaintext new file mode 100644 index 0000000..c2fb36c --- /dev/null +++ b/2019/9b.plaintext @@ -0,0 +1,57 @@ +memo from docking manoeuvre office to as test flight space systems re as docking collar tests +preliminary testing of the docking collar system has revealed a potentially serious flaw in the +design which must be addressed before the system can be certified the issue concerns the emergency +release system background the docking system performs the following functions impact energy +absorption mechanical connection spacecraft alignment and retraction spacecraft hard mechanical +connection and docking interface sealing spacecraft undocking and separation in order to achieve +these functions the docking system consists of three principle parts the base a structural ring and +the latching ring the docking system base is the main structural member to which the docking system +assemblies are attached the structural ring carries the body latches which provide a hard pressure +tight connection between the two spacecraft together with the capture latches which operate during +the docking manoeuvre these perform the docking function they consist of eight active and eight +passive hooks with an electrical drive installed on one of the latches and closed loop cables +connecting them each active hook has a cam operated mechanism which performs its opening and +tightening corresponding hooks of the passive docking system are captured by active hooks each +passive hook has a stack of preloaded bellville springs providing a definite force for the docking +interface preloading the docking interface seal will provide pressure integrity of the docking +interfaces this consists of two concentric rubber ring seals on each system and a manhole cover is +used to close the transfer tunnel of the spacecraft hatch locking and unlocking is manually +performed by the crew it is sealed by a mechanism which has a further eight eccentric latches these +being connected with each other by means of closed cable connection the docking system is equipped +with alarm and meter system which provide telemetry to the ships and to ground control in standard +operational mode undocking is performed by release of the active spacecraft capture latches and then +by opening the structure latch hooks if necessary undocking can be performed by the passive +spacecraft by releasing the body mounted latches and opening the structure latch passive hooks +spacecraft separation is performed by spring thrusters symmetrically located on the structural rings +of both systems after the latches release the principle difference between the russian and us +docking system designs can be seen in the guide ring system unlike the russian electromechanical +docking system apollo is equipped with an electric drive which uses cable connections to trigger the +latches another essential difference is the russian emergency release system ers a backup provided +by pyro bolts attached to each passive and active hook which operates in passive mode and provides +practically instantaneous undocking in the event of a system malfunction or accident onboard one or +both of the docked spacecraft situations in which the ers might be initiated include i uncontrolled +fire or explosion onboard one of the spacecraft during docked operations ii failure of the docking +control system preventing standard release operation iii attitude control failure of or unplanned +firing on one or both spacecraft imposing high stresses on the docking mechanism while the ers +provides an effective backup for emergency situations simulations and tests on the huntsville +docking testbed show that the effectiveness of the pyrotechnic bolts is a critical issue too much +explosive could cause critical damage to the pressure seals around the hatch while too little can +leave the spacecraft attached with a damaged mechanism the ers was designed for operation on ussr +missions and is therefore tuned to the structural constraints on the soviet platform since the +latches are electromagnetic on that spacecraft they are less prone to damage under vibrational +forces the motor and cable mechanism used on the apollo platform is more vulnerable to shock and +under certain test conditions has been shown to fail following the triggering of the erson the +soviet end of the docking mechanism shockwaves will not of course propagate through the vacuum of +space but the forces can be transmitted through the tunnel to the apollo latches and if the bolts +fire asymmetrically this places a torsion loading on the mechanism which can unseat the drive cables +in five of the seven tests where this phenomenon was observed the engineers were able to reseat the +cables by repeatedly operating the mechanism but in the remaining two cases the mechanism was beyond +repair without manual intervention unfortunately in these two cases the safety interlock also +prevented the hatch from being opened which could make it difficult for the astronauts to carryout a +spacewalk to execute the required repair in this case it would normally be possible for the +astronauts to manually operate the manhole latches by disassembling and subsequently assembling the +hatch cover however if the latching mechanisms have been sufficiently damaged by the pyro bolts this +might prove a risky option and it is even possible that the cover latches would fail to retract +manually we have asked queens team to take a look at this and she assures me that they can sort it +out she has worked on most of the apollo mission design teams so i am pretty confident that she can +make sure everything is ok for this one \ No newline at end of file -- 2.34.1