},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
"8197"
]
},
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {},
"outputs": [
{
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
"'dynamite'"
]
},
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
"'theengineersharrybroughtwithhimwantedtotakesawsandtorchestothetablesafebutneitherofuswerekeenicouldseethatitwouldbeworthalottocollectorsandprobablybelongedinamuseumharrysaidheagreedbutihadafeelinghewanteditinstalledbackinheadquarterstherewassomethingproprietorialinthewayhelookedatitittookthetwoofuseighteenhourstocrackitbutwithasquadronofspecialforcesfromherefordguardingustherewasnoriskthatmyattackerswouldreturniaskedharryhowhegotauthorisationtobringtheminafterallwestillwerentsurethattherewereanynationalsecurityimplicationsbuthejustlaughedandpointedoutthatwewerecurrentlysomewhereundernewscotlandyardandithadnttakenmuchtoconvincethehomesecretarythatweneededapropersecurityteamtoguardtheshadowarchiveanotherteamofanalystshadcampedononesideofthecommandcentreandwerecombingthroughblackscodebookandthefewpapersthatourantagonistshadleftbehindfromtimetotimeoneofthetrooperswouldarrivewithanotherboxofdocumentsretrievedfromasideroomoramoredistantpartofthearchivelabyrinthmostcouldbedecryptedquicklyusingthestandardtoolsblackhadusedarangeofciphersincludingsubstitutionandtranspositionandalmostnoneofitwasharderthanavigenereitwasslowsincethepapershadtobehandledwithcareandthescannertheyhadbroughtwiththemwasntreallydesignedforthissortofworkacoupleoftimestheycalledharryovertoshowhimsomethingandhereaditnoddedthencamebacktoworkonthesafeasweworkedwetalkedaboutwhatihadlearnedconcerningtheshadowarchiveandblackssecretworkforthegovernmentharrydidntgivemuchawaybutihadafeelinghehadheardsomeofthisstorybeforeandafterthesecondtimehewascalledawayheseemedparticularlythoughtfuliaskedhimwhatwasbotheringhimbuthewasenjoyingbeingcryptichesaidsomethingaboutthebalkanproblemthenmutteredsteveturnerspoemhistorylessonhistoryrepeatsitselfhastonoonelistensicouldntgetanythingmoreoutofhimexceptsomecommentaboutworkingbackwardsthroughthepaperssoiturnedmyattentionbacktothesafethemechanismwasbiggerandheavierthanwewereusedtoandhadbeenexquisitelymadethecomponentsslidalmostnoiselesslyoveroneanotherandtheloudclicksihadheardwhenmovingthetableseemedtobetheresultofabrokencogtoothcatchingonthebarrelsthatmadeitevenhardertoopenwhatlittlenoisethelocktumblersmadewasheavilydisguisedandwehadtoresorttodrillingasmallaccessholetopassanendoscopeintotheinterioritwasaswellwehadtakentheeffortsittinginthemiddleofapileofnotebooksandpaperswasasmallpileofwhatlookedlikeexplosivesthesafewasriggedtoblowifwemadeamistake'"
]
},
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
}
],
"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": [
{
"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)))"
]
},
{
},
{
"cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "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": [
{
"'turkey'"
]
},
- "execution_count": 12,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
"'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": [
{
}
],
"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": [
{
"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))"
]
},
{