Done challenge 9
[cipher-challenge.git] / 2021 / 2021-challenge1.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 2,
6 "id": "0039d39a",
7 "metadata": {
8 "Collapsed": "false"
9 },
10 "outputs": [],
11 "source": [
12 "from szyfrow.caesar import *\n",
13 "from szyfrow.affine import *"
14 ]
15 },
16 {
17 "cell_type": "code",
18 "execution_count": 3,
19 "id": "e23051fb",
20 "metadata": {
21 "Collapsed": "false"
22 },
23 "outputs": [],
24 "source": [
25 "challenge_number = 1\n",
26 "plaintext_a_filename = f'plaintext.{challenge_number}a.txt'\n",
27 "plaintext_b_filename = f'plaintext.{challenge_number}b.txt'\n",
28 "ciphertext_a_filename = f'ciphertext.{challenge_number}a.txt'\n",
29 "ciphertext_b_filename = f'ciphertext.{challenge_number}b.txt'"
30 ]
31 },
32 {
33 "cell_type": "code",
34 "execution_count": 4,
35 "id": "d1d1a7bc",
36 "metadata": {
37 "Collapsed": "false"
38 },
39 "outputs": [],
40 "source": [
41 "ca = open(ciphertext_a_filename).read()\n",
42 "cb = open(ciphertext_b_filename).read()"
43 ]
44 },
45 {
46 "cell_type": "code",
47 "execution_count": 5,
48 "id": "45504249",
49 "metadata": {
50 "Collapsed": "false"
51 },
52 "outputs": [
53 {
54 "name": "stdout",
55 "output_type": "stream",
56 "text": [
57 "25 \n",
58 "\n",
59 "HARRY, I AM BORED, AND I AM REALLY NOT SURE WHY I HAVE BEEN EXILED TO THE ARCHAEOLOGISTS. DID I DO SOMETHING TO UPSET SOMEONE? I AM REALLY, REALLY HOPING THAT OUR OVERLORDS WILL FIND SOMETHING A BIT MORE RELEVANT FOR ME TO TACKLE SOON.\n",
60 "THE GROUP HERE IS GREAT, BUT IT FEELS LIKE THERE IS A DIMINISHING RETURN ON BREAKING WWII CIPHERS SEVENTY-SIX YEARS ON, AND EVEN THE COLD WAR FIALKA INTERCEPT PILE DOESN'T SEEM TO BE GIVING MUCH BACK. IF YOU DON'T HAVE ANYTHING FOR ME TO WORK ON, THEN MAYBE YOU COULD SEND OVER SOME NEWBIES FOR ME TO TRAIN UP? WE RECEIVED A STACK OF MATERIAL FROM LONDON A COUPLE OF WEEKS AGO THAT MIGHT MAKE A GOOD EXERCISE FOR THEM, AND WHILE THE FIRST FEW TEXTS ARE RELATIVELY SIMPLE, IT WOULD BE A GOOD EXERCISE FOR YOUNG ANALYSTS TO TRY TO WORK OUT WHAT THEY ARE TELLING US.\n",
61 "I HAVE ATTACHED THE FIRST ITEM FROM THE BATCH SO YOU CAN SEE WHAT I MEAN. I WOULD VERY DEARLY LIKE TO KNOW WHAT \"THE GREAT MATTER\" REFERS TO, AND I SUSPECT YOU WILL WANT TO KNOW TOO.\n",
62 "THE RECRUITS DON'T NEED TO KNOW MUCH TO BREAK THIS ONE; IF THEY HAVE DONE OUR INDUCTION TRAINING ON BASIC CIPHERS, THEY SHOULD BE FINE. MY COLLEAGUES HERE HAVE NICKNAMED THIS FILE THE LIGHTHOUSE CONSPIRACY, BECAUSE OF WHERE THE PAPERS WERE FOUND. THAT MAKES IT SOUND A LOT MORE IMPRESSIVE THAN IT FIRST LOOKS, BUT YOU NEVER KNOW WHERE SOMETHING LIKE THIS MIGHT LEAD. I HAVE SET UP A SECURE ONLINE SYSTEM SO THE TRAINEES CAN GET ACCESS TO CASE FILES AND SEND ME THEIR ATTEMPTS AT DECIPHERING. IF YOU POINT THEM THERE, THEN I WILL CHECK HOW THEY ARE GETTING ON. MAYBE THEY COULD LOOK AT THE BOSS CODEBREAKING GUIDE AS WELL IF THEY NEED TO BRUSH UP THEIR SKILLS.\n",
63 "ALL THE BEST, JODIE\n",
64 "\n"
65 ]
66 }
67 ],
68 "source": [
69 "k_a, score_a = caesar_break(ca)\n",
70 "print(k_a, '\\n')\n",
71 "pa = caesar_decipher(ca, k_a)\n",
72 "print(pa)"
73 ]
74 },
75 {
76 "cell_type": "code",
77 "execution_count": 6,
78 "id": "969933ef",
79 "metadata": {
80 "Collapsed": "false"
81 },
82 "outputs": [
83 {
84 "data": {
85 "text/plain": [
86 "1663"
87 ]
88 },
89 "execution_count": 6,
90 "metadata": {},
91 "output_type": "execute_result"
92 }
93 ],
94 "source": [
95 "open(plaintext_a_filename, 'w').write(pa)"
96 ]
97 },
98 {
99 "cell_type": "code",
100 "execution_count": 7,
101 "id": "90c206f4",
102 "metadata": {
103 "Collapsed": "false"
104 },
105 "outputs": [
106 {
107 "name": "stdout",
108 "output_type": "stream",
109 "text": [
110 "3 \n",
111 "\n",
112 "MY DEAR M, THANK YOU FOR LETTING ME KNOW ABOUT T'S OFFER TO JOIN WITH US IN THE GREAT MATTER. WHILE I STILL HAVE MANY IDEAS FOR HOW TO PROSECUTE OUR PLAN, MY DAYS ARE GROWING SHORT, AS ARE YOURS, AND WE WILL NEED TO FIND OTHERS OF A SIMILAR MIND WHO HAVE THE WIT AND IMAGINATION TO CARRY IT FORWARD. OUR ABILITY TO INFLUENCE MATTERS DIRECTLY WILL CONTINUE TO DEPEND ON THE POWER OF THE DEVICES WE CAN FASHION, AND IT WILL BE CLEAR TO YOU THAT THIS WILL REQUIRE NEW WAYS OF THINKING ABOUT THE WORLD AS WELL AS NEW TECHNOLOGIES TO MANIPULATE IT. T, TOGETHER WITH L AND THE YOUNG E WILL, I HOPE, BRING A NEW PERSPECTIVE, AND HELP TO KEEP OUR LITTLE CONSPIRACY ALIVE FOR ANOTHER GENERATION.\n",
113 "OUR ADVENTURES SO FAR HAVE, OF NECESSITY, BEEN LIMITED IN SCOPE, THOUGH OUR ACQUISITION OF BABBAGE'S PLANS AND THE SUPPRESSION OF HIS ANALYTIC ENGINE MUST COUNT AS A HIGHLIGHT. IF WE ARE TO SUCCEED ON THE GRAND SCALE THAT WE BOTH THINK IS NECESSARY, THEN IT IS TIME FOR US TO FORMALISE OUR ARRANGEMENTS AND TO ESTABLISH A HEADQUARTERS FOR OUR OPERATIONS.\n",
114 "I HAVE GIVEN THIS SOME THOUGHT AND HAVE AN IDEA THAT I HOPE WILL PLEASE YOU. WE SHOULD BUILD A LIGHTHOUSE IN LONDON! I CAN IMMEDIATELY SEE YOUR OBJECTION. LONDON HAS NO ROCKY SHORES, AND SO NO NEED OF ONE, BUT YOUR EXPERIMENTS WITH LANTERNS GIVE US THE IDEAL EXCUSE TO BUILD ONE AS A PLACE TO TEST THEM.\n",
115 "THE OPPORTUNITIES THIS WILL AFFORD ARE MANY: THE DELIVERY OF LARGE CRATES OF EQUIPMENT WILL GO UNNOTICED, CONSIDERED AS PART OF THE NATURAL BUSINESS OF THE PLACE; ITS LOCATION ON A BUSY WHARF WOULD DISGUISE THE NECESSARY COMINGS AND GOINGS OF OUR CO-CONSPIRATORS; THE WATERWAY WILL PROVIDE US WITH READY TRANSPORTATION BOTH INLAND VIA THE CANALS AND TO THE DOCKS AT TILBURY FOR OUR INTERNATIONAL VENTURES. NOT LEAST, THE EXTRAORDINARY POWER NEEDED FOR OUR DEVICES WILL BE MISTAKEN FOR THE ENERGY REQUIRED TO RUN YOUR PUBLIC EXPERIMENTS.\n",
116 "I HAVE LITTLE EXPERTISE IN THE DESIGN OR ENGINEERING OF SUCH STRUCTURES, BUT I IMAGINE THAT THEY REQUIRE SUBSTANTIAL FOOTINGS. THE DEVELOPMENT OF THESE WILL PROVIDE THE COVER WE NEED TO CONSTRUCT OUR SECRET HEADQUARTERS UNDER THE MORE PUBLIC FACE OF THE LIGHTHOUSE ITSELF AND ITS ANCILLARY BUILDINGS.\n",
117 "IT MAY BE THAT I HAVE MISSED SOMETHING IMPORTANT IN MY CONSIDERATIONS, IN WHICH CASE PLEASE DO POINT THAT OUT, BUT IF WE ARE TO PASS ON OUR DISCOVERIES, AMBITIONS AND PLANS TO THE NEXT GENERATION WE WILL NEED TO GIVE THEM A MORE PERMANENT HOME, SO I HOPE WE CAN AGREE TOGETHER ON THE BEST WAY TO PROCEED.\n",
118 "YOURS, CH\n",
119 "\n"
120 ]
121 }
122 ],
123 "source": [
124 "k_b, score_b = caesar_break(cb)\n",
125 "print(k_b, '\\n')\n",
126 "pb = caesar_decipher(cb, k_b)\n",
127 "print(pb)"
128 ]
129 },
130 {
131 "cell_type": "code",
132 "execution_count": 8,
133 "id": "cda2f09b",
134 "metadata": {
135 "Collapsed": "false"
136 },
137 "outputs": [
138 {
139 "data": {
140 "text/plain": [
141 "2499"
142 ]
143 },
144 "execution_count": 8,
145 "metadata": {},
146 "output_type": "execute_result"
147 }
148 ],
149 "source": [
150 "open(plaintext_b_filename, 'w').write(pb)"
151 ]
152 },
153 {
154 "cell_type": "code",
155 "execution_count": null,
156 "id": "1c1be9f8",
157 "metadata": {
158 "Collapsed": "false"
159 },
160 "outputs": [],
161 "source": []
162 }
163 ],
164 "metadata": {
165 "jupytext": {
166 "formats": "ipynb,md",
167 "text_representation": {
168 "extension": ".md",
169 "format_name": "markdown",
170 "format_version": "1.2",
171 "jupytext_version": "1.3.4"
172 }
173 },
174 "kernelspec": {
175 "display_name": "Python 3",
176 "language": "python",
177 "name": "python3"
178 },
179 "language_info": {
180 "codemirror_mode": {
181 "name": "ipython",
182 "version": 3
183 },
184 "file_extension": ".py",
185 "mimetype": "text/x-python",
186 "name": "python",
187 "nbconvert_exporter": "python",
188 "pygments_lexer": "ipython3",
189 "version": "3.8.8"
190 }
191 },
192 "nbformat": 4,
193 "nbformat_minor": 5
194 }