X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=2018%2F2018-challenge9.ipynb;h=ebf6dd67f34ab79dcee5b36805fee75d8b153ee7;hb=cd593f7023cdc865b0d7436b19923b995ee37340;hp=d386b62774f26f8a6c3cb99fec686b572855462e;hpb=a7a134de44a807dfa5ea7a439ad4bbd8c34df3c2;p=cipher-tools.git diff --git a/2018/2018-challenge9.ipynb b/2018/2018-challenge9.ipynb index d386b62..ebf6dd6 100644 --- a/2018/2018-challenge9.ipynb +++ b/2018/2018-challenge9.ipynb @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -51,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -60,7 +60,7 @@ "8197" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -90,7 +90,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -130,7 +130,7 @@ "'dynamite'" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -142,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -151,7 +151,7 @@ "'theengineersharrybroughtwithhimwantedtotakesawsandtorchestothetablesafebutneitherofuswerekeenicouldseethatitwouldbeworthalottocollectorsandprobablybelongedinamuseumharrysaidheagreedbutihadafeelinghewanteditinstalledbackinheadquarterstherewassomethingproprietorialinthewayhelookedatitittookthetwoofuseighteenhourstocrackitbutwithasquadronofspecialforcesfromherefordguardingustherewasnoriskthatmyattackerswouldreturniaskedharryhowhegotauthorisationtobringtheminafterallwestillwerentsurethattherewereanynationalsecurityimplicationsbuthejustlaughedandpointedoutthatwewerecurrentlysomewhereundernewscotlandyardandithadnttakenmuchtoconvincethehomesecretarythatweneededapropersecurityteamtoguardtheshadowarchiveanotherteamofanalystshadcampedononesideofthecommandcentreandwerecombingthroughblackscodebookandthefewpapersthatourantagonistshadleftbehindfromtimetotimeoneofthetrooperswouldarrivewithanotherboxofdocumentsretrievedfromasideroomoramoredistantpartofthearchivelabyrinthmostcouldbedecryptedquicklyusingthestandardtoolsblackhadusedarangeofciphersincludingsubstitutionandtranspositionandalmostnoneofitwasharderthanavigenereitwasslowsincethepapershadtobehandledwithcareandthescannertheyhadbroughtwiththemwasntreallydesignedforthissortofworkacoupleoftimestheycalledharryovertoshowhimsomethingandhereaditnoddedthencamebacktoworkonthesafeasweworkedwetalkedaboutwhatihadlearnedconcerningtheshadowarchiveandblackssecretworkforthegovernmentharrydidntgivemuchawaybutihadafeelinghehadheardsomeofthisstorybeforeandafterthesecondtimehewascalledawayheseemedparticularlythoughtfuliaskedhimwhatwasbotheringhimbuthewasenjoyingbeingcryptichesaidsomethingaboutthebalkanproblemthenmutteredsteveturnerspoemhistorylessonhistoryrepeatsitselfhastonoonelistensicouldntgetanythingmoreoutofhimexceptsomecommentaboutworkingbackwardsthroughthepaperssoiturnedmyattentionbacktothesafethemechanismwasbiggerandheavierthanwewereusedtoandhadbeenexquisitelymadethecomponentsslidalmostnoiselesslyoveroneanotherandtheloudclicksihadheardwhenmovingthetableseemedtobetheresultofabrokencogtoothcatchingonthebarrelsthatmadeitevenhardertoopenwhatlittlenoisethelocktumblersmadewasheavilydisguisedandwehadtoresorttodrillingasmallaccessholetopassanendoscopeintotheinterioritwasaswellwehadtakentheeffortsittinginthemiddleofapileofnotebooksandpaperswasasmallpileofwhatlookedlikeexplosivesthesafewasriggedtoblowifwemadeamistake'" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -162,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -203,12 +203,12 @@ } ], "source": [ - "print(lcat(tpack(segment(vigenere_decipher(sca, key_a)))))" + "print(prettify(vigenere_decipher(sca, key_a)))" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -217,13 +217,13 @@ "2913" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "open('9a.plaintext', 'w').write(lcat(tpack(segment(vigenere_decipher(sca, key_a)))))" + "open('9a.plaintext', 'w').write(prettify(vigenere_decipher(sca, key_a)))" ] }, { @@ -235,30 +235,7 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "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": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -267,7 +244,7 @@ "'turkey'" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -279,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -288,40 +265,19 @@ "'erutuferuceseromdnawenagnitaercfoepohehtnimehthtiwylesolckrowoteunitnoclliwinoigertahtnidlohtoofasueviglliwainsobnikrowtentnegaruoosfiyltnenamrepnoitseuqnaklabehtelttesotspahrepdnasniaglairotirretnaissurenimrednuotepohewetatsnamottoehtotkcabainodecamgnidartybemitemasehttasetuoredartnaenarretidemehtfolortnocruognitnemecsurpycniagyamewtahtsruomurdraehevahidnaseitinutroppognidartnihcireblliwynamregniraazabcitamolpidehtfoerehpsomtadeiznerfehtesruocfosrewoprojamehtnomehthguorhtraeboterusserpgnirbnacewtahtepohehtniytilibatsniderutrunevahsnaklabehtssorcastnegaymseitrapdnasetatsrellamsehtnosisucofymtubweivaevaherusmailliwsrewoprojamehtfollassergnocehtfonrecnocelpicnirpehtsideveihcaebthgimnoitacifinusihtrehtehwdnawohfonoitseuqehtelbitapmocnieraesehtdnasweivlavirynamyreveraerehttahtrehtartubaediraelcakcalyehttahttonsitignidaelsimsitahtspahrepnoitacifinuehtdaeldluohsytraphcihwfoaediraelcondnanworiehtfosnoitibmalacitilopdnalarutlucdeiravhtiwdedividniamersevlesmehtsetatsnaklabehtnoitulosnaklabakeesohwesohtdnaaissurnihtiweildluohsrewopstifosucolehttahteveilebohwesohtneewtebtilpsylpeedsitubdeifinuneebevahylatidnaynamregtahtyawemasehtnisetatscivalsehtetinuotsmiatnemevomcivalsnapehtsisircehtfotuoyawaeesyameweveilebinehtnilrebtaadnegaehtlortnocnacewfitcilfnocrehtrufmorfesoloteromgnihtemosevahyehttahtdesilaerevahlladnatnenitnocehtssorcatpureyamrawtahttaerhtgnirehtagehteesotnugebevahsrewoprojamehtfollasevilnitsocrewolhcumatadeeccusthgimycamolpidfosdohtemwenruotahtsiepohymtsoctaergtanetfodnathguoberagninniwhtrowseirotcivllatahtweivymsititubthguorbnaemylerustsumitahtdiasdnaemdetcerrocehriafyalpotsihtdiasinehwnoituloserarofepohotnigebnacinilrebnissergnocgnidnepmiehttathguobebthgimecaeptahttcepsorpehthtiwyllanifwonnihtiwseimenegnithgifygreneelbaredisnocdednepxeevahidnallahetihwniralupopyllasrevinuneebtonevahsdohtemymsselehtenonmelborphsikrutehtotnoitulosnworuotneserpotsrewopgnidaelrehtohtiwetaitogenotnigebotelbaerewewdnocesdnaseimeneruofosecivrescitamolpidehtnihtiwkrowtentnegaruopolevedotelbaerewewtsrifsgnihtowtdeveihcayaledsihttahtflesymtrofmocidnaelbativeniehtyaledotdekrowseillaehtgnomanoisufnocgniwosfoygetartsruonoituloslanoitanretninaotelbanemaebotgniraeppaelihwnoitisophsitirbehtgnisilanigramylevitceffednaairtsuadnaynamregniseillarehhtiwnoitcaroftroppusgnidliubyltcefrepdnahrehdeyalpsahaissurderaefewtahtllaneebsahrawhsikrutossureht'" ] }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "b1 = vigenere_decipher(scb, key_b)\n", - "b1" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'therussoturkishwarhasbeenallthatwefearedrussiahasplayedherhandperfectlybuildingsupportforactionwithheralliesingermanyandaustriaandeffectivelymarginalisingthebritishpositionwhileappearingtobeamenabletoaninternationalsolutionourstrategyofsowingconfusionamongthealliesworkedtodelaytheinevitableandicomfortmyselfthatthisdelayachievedtwothingsfirstwewereabletodevelopouragentnetworkwithinthediplomaticservicesofourenemiesandsecondwewereabletobegintonegotiatewithotherleadingpowerstopresentourownsolutiontotheturkishproblemnonethelessmymethodshavenotbeenuniversallypopularinwhitehallandihaveexpendedconsiderableenergyfightingenemieswithinnowfinallywiththeprospectthatpeacemightbeboughtattheimpendingcongressinberlinicanbegintohopeforaresolutionwhenisaidthistoplayfairhecorrectedmeandsaidthatimustsurelymeanbroughtbutitismyviewthatallvictoriesworthwinningareboughtandoftenatgreatcostmyhopeisthatournewmethodsofdiplomacymightsucceedatamuchlowercostinlivesallofthemajorpowershavebeguntoseethegatheringthreatthatwarmayeruptacrossthecontinentandallhaverealisedthattheyhavesomethingmoretolosefromfurtherconflictifwecancontroltheagendaatberlinthenibelievewemayseeawayoutofthecrisisthepanslavicmovementaimstounitetheslavicstatesinthesamewaythatgermanyanditalyhavebeenunifiedbutisdeeplysplitbetweenthosewhobelievethatthelocusofitspowershouldliewithinrussiaandthosewhoseekabalkansolutionthebalkanstatesthemselvesremaindividedwithvariedculturalandpoliticalambitionsoftheirownandnoclearideaofwhichpartyshouldleadtheunificationperhapsthatismisleadingitisnotthattheylackaclearideabutratherthatthereareverymanyrivalviewsandtheseareincompatiblethequestionofhowandwhetherthisunificationmightbeachievedistheprincipleconcernofthecongressallofthemajorpowerswilliamsurehaveaviewbutmyfocusisonthesmallerstatesandpartiesmyagentsacrossthebalkanshavenurturedinstabilityinthehopethatwecanbringpressuretobearthroughthemonthemajorpowersofcoursethefrenziedatmosphereofthediplomaticbazaaringermanywillberichintradingopportunitiesandihaveheardrumoursthatwemaygaincypruscementingourcontrolofthemediterraneantraderoutesatthesametimebytradingmacedoniabacktotheottomanstatewehopetounderminerussianterritorialgainsandperhapstosettlethebalkanquestionpermanentlyifsoouragentnetworkinbosniawillgiveusafootholdinthatregioniwillcontinuetoworkcloselywiththeminthehopeofcreatinganewandmoresecurefuture'" - ] - }, - "execution_count": 33, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pb = cat(reversed(b1))\n", - "pb" + "pb1 = vigenere_decipher(scb, key_b)\n", + "pb1" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -362,12 +318,13 @@ } ], "source": [ - "print(lcat(tpack(segment(pb))))" + "rpb1 = cat(reversed(pb1))\n", + "print(prettify(rpb1))" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -376,13 +333,13 @@ "2856" ] }, - "execution_count": 35, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "open('9b.plaintext', 'w').write(lcat(tpack(segment(pb))))" + "open('9b.plaintext', 'w').write(prettify(rpb1))" ] }, {