diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..703ccba
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "puzzles"]
+ path = puzzles
+ url = cfl:/var/projects/ctf-puzzles
diff --git a/puzzles b/puzzles
new file mode 160000
index 0000000..1a21738
--- /dev/null
+++ b/puzzles
@@ -0,0 +1 @@
+Subproject commit 1a217387a47583773b529cf1dea42fbf6f24cbc9
diff --git a/puzzles/basemath/1/index.mdwn b/puzzles/basemath/1/index.mdwn
deleted file mode 100644
index d813a25..0000000
--- a/puzzles/basemath/1/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 2 3 4 5 6 7 8 9 10 _
diff --git a/puzzles/basemath/1/key b/puzzles/basemath/1/key
deleted file mode 100644
index b4de394..0000000
--- a/puzzles/basemath/1/key
+++ /dev/null
@@ -1 +0,0 @@
-11
diff --git a/puzzles/basemath/2/index.mdwn b/puzzles/basemath/2/index.mdwn
deleted file mode 100644
index af51cfa..0000000
--- a/puzzles/basemath/2/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
- 1 10 11 100 101 110 111 _
-
diff --git a/puzzles/basemath/2/key b/puzzles/basemath/2/key
deleted file mode 100644
index 83b33d2..0000000
--- a/puzzles/basemath/2/key
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/puzzles/basemath/3/index.mdwn b/puzzles/basemath/3/index.mdwn
deleted file mode 100644
index 39abc94..0000000
--- a/puzzles/basemath/3/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- ... 4 5 6 7 10 11 12 ... 75 76 77 _
diff --git a/puzzles/basemath/3/key b/puzzles/basemath/3/key
deleted file mode 100644
index 29d6383..0000000
--- a/puzzles/basemath/3/key
+++ /dev/null
@@ -1 +0,0 @@
-100
diff --git a/puzzles/basemath/4/index.mdwn b/puzzles/basemath/4/index.mdwn
deleted file mode 100644
index ec74c96..0000000
--- a/puzzles/basemath/4/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- ... 7 8 9 A B C D E F 10 11 12 13 ... 1C8 1C9 _
diff --git a/puzzles/basemath/4/key b/puzzles/basemath/4/key
deleted file mode 100644
index 747e1ad..0000000
--- a/puzzles/basemath/4/key
+++ /dev/null
@@ -1 +0,0 @@
-1CA
diff --git a/puzzles/basemath/5/index.mdwn b/puzzles/basemath/5/index.mdwn
deleted file mode 100644
index 22a9d01..0000000
--- a/puzzles/basemath/5/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 2 4 8 16 32 _
diff --git a/puzzles/basemath/5/key b/puzzles/basemath/5/key
deleted file mode 100644
index 900731f..0000000
--- a/puzzles/basemath/5/key
+++ /dev/null
@@ -1 +0,0 @@
-64
diff --git a/puzzles/basemath/summary.txt b/puzzles/basemath/summary.txt
deleted file mode 100644
index d25971f..0000000
--- a/puzzles/basemath/summary.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-1 base 10 counting
-2 base 2
-3 base 8
-4 base 16
-5 powers of 2
diff --git a/puzzles/bletchley/100/key b/puzzles/bletchley/100/key
deleted file mode 100644
index 5403edd..0000000
--- a/puzzles/bletchley/100/key
+++ /dev/null
@@ -1 +0,0 @@
-antediluvian
diff --git a/puzzles/bletchley/100/key.png b/puzzles/bletchley/100/key.png
deleted file mode 100644
index b658ad9..0000000
Binary files a/puzzles/bletchley/100/key.png and /dev/null differ
diff --git a/puzzles/bletchley/1000/index.mdwn b/puzzles/bletchley/1000/index.mdwn
deleted file mode 100644
index 7dd37e9..0000000
--- a/puzzles/bletchley/1000/index.mdwn
+++ /dev/null
@@ -1,108 +0,0 @@
-Safe to execute.
-
-
diff --git a/puzzles/bletchley/1000/key b/puzzles/bletchley/1000/key
deleted file mode 100644
index 3be61b9..0000000
--- a/puzzles/bletchley/1000/key
+++ /dev/null
@@ -1 +0,0 @@
-It is a lovely day outside
diff --git a/puzzles/bletchley/150/aacaaebb0cd0503e7bad97c42321a738 b/puzzles/bletchley/150/aacaaebb0cd0503e7bad97c42321a738
deleted file mode 100644
index 6ea1d2e..0000000
Binary files a/puzzles/bletchley/150/aacaaebb0cd0503e7bad97c42321a738 and /dev/null differ
diff --git a/puzzles/bletchley/150/index.mdwn b/puzzles/bletchley/150/index.mdwn
deleted file mode 100644
index 672516c..0000000
--- a/puzzles/bletchley/150/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Recovery, while not strictly necessary, may be tremendously helpful.
-
diff --git a/puzzles/bletchley/150/key b/puzzles/bletchley/150/key
deleted file mode 100644
index 1349adc..0000000
--- a/puzzles/bletchley/150/key
+++ /dev/null
@@ -1 +0,0 @@
-jackalope wheeze
\ No newline at end of file
diff --git a/puzzles/bletchley/200/index.mdwn b/puzzles/bletchley/200/index.mdwn
deleted file mode 100644
index 3b9ced7..0000000
--- a/puzzles/bletchley/200/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- tkftsuiuqvaheohrnsnuoleyriod"eic"
diff --git a/puzzles/bletchley/200/key b/puzzles/bletchley/200/key
deleted file mode 100644
index d398ae2..0000000
--- a/puzzles/bletchley/200/key
+++ /dev/null
@@ -1 +0,0 @@
-unequivocal
diff --git a/puzzles/bletchley/250/index.mdwn b/puzzles/bletchley/250/index.mdwn
deleted file mode 100644
index 003362a..0000000
--- a/puzzles/bletchley/250/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 27586126814341379597440261571645814840581961154587430529221052323
diff --git a/puzzles/bletchley/250/key b/puzzles/bletchley/250/key
deleted file mode 100644
index 3933ee2..0000000
--- a/puzzles/bletchley/250/key
+++ /dev/null
@@ -1 +0,0 @@
-DB1663<3
diff --git a/puzzles/bletchley/300/index.mdwn b/puzzles/bletchley/300/index.mdwn
deleted file mode 100644
index e6bca1d..0000000
--- a/puzzles/bletchley/300/index.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Kolejne modele Panzerfausta, odpowiednio: 60, 100, 150, różnił
-kaliber głowicy i wielkość ładunku miotającego. Konstrukcja i
-mechanizm nie ulegał istotnym zmianom, z racji wzrastania zasięgu
-broni modyfikacjom ulegały nastawy celowników. Jedynie we wzorze 150
-wprowadzono (a był to już początek 1945 roku) wielokrotne użycie
-wyrzutni rurowej. Osiągnięto to przez umieszczenie ładunku
-miotającego w głowicy oraz przez wzmocnienie rury. W wyniku problemu z
-transportem model ów nie wszedł do walki. Model 250 (o teoretycznym
-zasięgu 250 m) z racji zakończenia wojny nie opuścił desek
-kreślarskich nigdy nie wchodząc nawet w fazę prototypową.
-
- (61, 4)
- (47, 8)
- (19, 4)
- (37, 1)
- (51, 3)
- (67, 5)
- (9, 2)
- (26, 1)
- (2, 2)
- (26, 3)
- (50, 2)
diff --git a/puzzles/bletchley/300/key b/puzzles/bletchley/300/key
deleted file mode 100644
index ea86794..0000000
--- a/puzzles/bletchley/300/key
+++ /dev/null
@@ -1 +0,0 @@
-jako561962
diff --git a/puzzles/bletchley/350/936bc08007a9076673a81040024728be b/puzzles/bletchley/350/936bc08007a9076673a81040024728be
deleted file mode 100644
index 25d4c2f..0000000
Binary files a/puzzles/bletchley/350/936bc08007a9076673a81040024728be and /dev/null differ
diff --git a/puzzles/bletchley/350/key b/puzzles/bletchley/350/key
deleted file mode 100644
index 89709ea..0000000
--- a/puzzles/bletchley/350/key
+++ /dev/null
@@ -1 +0,0 @@
-PC LOAD LETTER
diff --git a/puzzles/bletchley/50/adddbafb502355634d9ef10e1848cf52 b/puzzles/bletchley/50/adddbafb502355634d9ef10e1848cf52
deleted file mode 100644
index 97e2900..0000000
Binary files a/puzzles/bletchley/50/adddbafb502355634d9ef10e1848cf52 and /dev/null differ
diff --git a/puzzles/bletchley/50/key b/puzzles/bletchley/50/key
deleted file mode 100644
index 0db4aae..0000000
--- a/puzzles/bletchley/50/key
+++ /dev/null
@@ -1 +0,0 @@
-extra special text
diff --git a/puzzles/bletchley/500/200601262232.ogg b/puzzles/bletchley/500/200601262232.ogg
deleted file mode 100644
index d00f825..0000000
Binary files a/puzzles/bletchley/500/200601262232.ogg and /dev/null differ
diff --git a/puzzles/bletchley/500/cipher.txt b/puzzles/bletchley/500/cipher.txt
deleted file mode 100644
index cf43f95..0000000
--- a/puzzles/bletchley/500/cipher.txt
+++ /dev/null
@@ -1 +0,0 @@
-31 9 15 26 14 23 14 6 18 5 12 18 5 2 16 27 7 10 11 5 13 31 17 17 6 2 26 26 10 21 10 8 20 4
diff --git a/puzzles/bletchley/500/index.mdwn b/puzzles/bletchley/500/index.mdwn
deleted file mode 100644
index 8c32ab6..0000000
--- a/puzzles/bletchley/500/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-journals.uchicago
diff --git a/puzzles/bletchley/500/key b/puzzles/bletchley/500/key
deleted file mode 100644
index b197a4a..0000000
--- a/puzzles/bletchley/500/key
+++ /dev/null
@@ -1 +0,0 @@
-xez.3nt
diff --git a/puzzles/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7 b/puzzles/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7
deleted file mode 100644
index fbf0b16..0000000
Binary files a/puzzles/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7 and /dev/null differ
diff --git a/puzzles/bletchley/900/key b/puzzles/bletchley/900/key
deleted file mode 100644
index 4a1b0b3..0000000
--- a/puzzles/bletchley/900/key
+++ /dev/null
@@ -1 +0,0 @@
-PEANUT BUTTER JELLY TIME
diff --git a/puzzles/bletchley/summary.txt b/puzzles/bletchley/summary.txt
deleted file mode 100644
index 9addc37..0000000
--- a/puzzles/bletchley/summary.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-100 gzip 20G
-150 bz2recover
-200 scytale
-250 png as integer
-300 panzerfaust (word, letter)
-350 filenames of each gzip segment
-500 fast audio
-900 exif type
-1000 ???
diff --git a/puzzles/codebreaking/1/index.mdwn b/puzzles/codebreaking/1/index.mdwn
deleted file mode 100644
index 7d4c275..0000000
--- a/puzzles/codebreaking/1/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-The answer for this page is "snickers".
\ No newline at end of file
diff --git a/puzzles/codebreaking/1/key b/puzzles/codebreaking/1/key
deleted file mode 100644
index aee2f5c..0000000
--- a/puzzles/codebreaking/1/key
+++ /dev/null
@@ -1 +0,0 @@
-snickers
diff --git a/puzzles/codebreaking/2/index.mdwn b/puzzles/codebreaking/2/index.mdwn
deleted file mode 100644
index b0b1be2..0000000
--- a/puzzles/codebreaking/2/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-Uif botxfs gps uijt qbhf jt "hpctupqqfs".
\ No newline at end of file
diff --git a/puzzles/codebreaking/2/key b/puzzles/codebreaking/2/key
deleted file mode 100644
index 740c3cf..0000000
--- a/puzzles/codebreaking/2/key
+++ /dev/null
@@ -1 +0,0 @@
-gobstopper
diff --git a/puzzles/codebreaking/3/dancing.png b/puzzles/codebreaking/3/dancing.png
deleted file mode 100644
index 74fb578..0000000
Binary files a/puzzles/codebreaking/3/dancing.png and /dev/null differ
diff --git a/puzzles/codebreaking/3/index.mdwn b/puzzles/codebreaking/3/index.mdwn
deleted file mode 100644
index a2092fb..0000000
--- a/puzzles/codebreaking/3/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-![dancing men](danging.png)
diff --git a/puzzles/codebreaking/3/key b/puzzles/codebreaking/3/key
deleted file mode 100644
index 0afb7d2..0000000
--- a/puzzles/codebreaking/3/key
+++ /dev/null
@@ -1 +0,0 @@
-tootsie
diff --git a/puzzles/codebreaking/4/index.mdwn b/puzzles/codebreaking/4/index.mdwn
deleted file mode 100644
index c6ed686..0000000
--- a/puzzles/codebreaking/4/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-Xts cgmvsl ihl otfm jcns fm "tslmtsx".
diff --git a/puzzles/codebreaking/4/key b/puzzles/codebreaking/4/key
deleted file mode 100644
index 77cfbcd..0000000
--- a/puzzles/codebreaking/4/key
+++ /dev/null
@@ -1 +0,0 @@
-hershey
diff --git a/puzzles/codebreaking/5/image.png b/puzzles/codebreaking/5/image.png
deleted file mode 100644
index 283558a..0000000
Binary files a/puzzles/codebreaking/5/image.png and /dev/null differ
diff --git a/puzzles/codebreaking/5/key b/puzzles/codebreaking/5/key
deleted file mode 100644
index dc67af8..0000000
--- a/puzzles/codebreaking/5/key
+++ /dev/null
@@ -1 +0,0 @@
-skittles
diff --git a/puzzles/codebreaking/6/image.png b/puzzles/codebreaking/6/image.png
deleted file mode 100644
index 9be3c2f..0000000
Binary files a/puzzles/codebreaking/6/image.png and /dev/null differ
diff --git a/puzzles/codebreaking/6/key b/puzzles/codebreaking/6/key
deleted file mode 100644
index a27adc8..0000000
--- a/puzzles/codebreaking/6/key
+++ /dev/null
@@ -1 +0,0 @@
-toffee
diff --git a/puzzles/codebreaking/7/index.mdwn b/puzzles/codebreaking/7/index.mdwn
deleted file mode 100644
index 29e869f..0000000
--- a/puzzles/codebreaking/7/index.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
- toaatbs 1
- hdsthea 2
- iectern 3
- siyetos 4
- tstnofw 5
- ycattle 6
- paliaer 7
- eleoltb 8
- olpnnte 9
- featuee 10
- cdyomrt 11
-
- 1234567
\ No newline at end of file
diff --git a/puzzles/codebreaking/7/key b/puzzles/codebreaking/7/key
deleted file mode 100644
index a4a6735..0000000
--- a/puzzles/codebreaking/7/key
+++ /dev/null
@@ -1 +0,0 @@
-beet
diff --git a/puzzles/codebreaking/8/index.mdwn b/puzzles/codebreaking/8/index.mdwn
deleted file mode 100644
index 7e727e6..0000000
--- a/puzzles/codebreaking/8/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-cusoeecolorsahnanicnagtfnyslriagtwuaoctaeptnthlra
diff --git a/puzzles/codebreaking/8/key b/puzzles/codebreaking/8/key
deleted file mode 100644
index 11cbcea..0000000
--- a/puzzles/codebreaking/8/key
+++ /dev/null
@@ -1 +0,0 @@
-chalupa
diff --git a/puzzles/codebreaking/summary.txt b/puzzles/codebreaking/summary.txt
deleted file mode 100644
index 9498014..0000000
--- a/puzzles/codebreaking/summary.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-1 plain text, no crypto
-2 rot-1
-3 dancing men
-4 monoalphabetic substitution cipher
-5 bionicle substitution
-6 wiccan substitution
-7 scytale laid out in grid
-8 real scytale
diff --git a/puzzles/compaq/100/index.mdwn b/puzzles/compaq/100/index.mdwn
deleted file mode 100644
index 0c187a5..0000000
--- a/puzzles/compaq/100/index.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-You are doing a forensics evaluation of a linux box that you know has
-been compromised. You find a binary on the system and assume it was
-used by the attackers to hide data on box that that was exfiltrated.
-You dissamble the file and find the x86 assembly shown below (from Ida)
-- this function was used for obfuscation. You also find a file
-obfuscated by this tool. Using the key you find in this encoder code
-what is the unobfuscated first line of the file which starts with
-
- 8%%>p2pzpzp8%%>pe8%%>pe(#$e(+9"
-
- HINT: The function was orginally defined as void convert_buf(unsigned
-char * buf, int len).
-
- .text:08048474 ; =============== S U B R O U T I N E =======================================
- .text:08048474
- .text:08048474 ; Attributes: bp-based frame
- .text:08048474
- .text:08048474 public convert_buf
- .text:08048474 convert_buf proc near ; CODE XREF: main+B2p
- .text:08048474
- .text:08048474 cnt = dword ptr -4
- .text:08048474 buf = dword ptr 8
- .text:08048474 len = dword ptr 0Ch
- .text:08048474
- .text:08048474 push ebp
- .text:08048475 mov ebp, esp
- .text:08048477 sub esp, 10h
- .text:0804847A mov [ebp+cnt], 0
- .text:08048481 mov [ebp+cnt], 0
- .text:08048488 jmp short loc_80484A4
- .text:0804848A ; ---------------------------------------------------------------------------
- .text:0804848A
- .text:0804848A loc_804848A: ; CODE XREF: convert_buf+36j
- .text:0804848A mov eax, [ebp+cnt]
- .text:0804848D mov edx, eax
- .text:0804848F add edx, [ebp+buf]
- .text:08048492 mov eax, [ebp+cnt]
- .text:08048495 add eax, [ebp+buf]
- .text:08048498 movzx eax, byte ptr [eax]
- .text:0804849B xor eax, 4Ah
- .text:0804849E mov [edx], al
- .text:080484A0 add [ebp+cnt], 1
- .text:080484A4
- .text:080484A4 loc_80484A4: ; CODE XREF: convert_buf+14j
- .text:080484A4 mov eax, [ebp+cnt]
- .text:080484A7 cmp eax, [ebp+len]
- .text:080484AA jl short loc_804848A
- .text:080484AC leave
- .text:080484AD retn
- .text:080484AD convert_buf endp
- .text:080484AD
- .text:080484AE
-
diff --git a/puzzles/compaq/100/key b/puzzles/compaq/100/key
deleted file mode 100644
index 53d2da6..0000000
--- a/puzzles/compaq/100/key
+++ /dev/null
@@ -1 +0,0 @@
-root:x:0:0:root:/root:/bin/bash
\ No newline at end of file
diff --git a/puzzles/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78 b/puzzles/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78
deleted file mode 100755
index c20b65b..0000000
Binary files a/puzzles/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78 and /dev/null differ
diff --git a/puzzles/compaq/150/key b/puzzles/compaq/150/key
deleted file mode 100644
index 164f87f..0000000
--- a/puzzles/compaq/150/key
+++ /dev/null
@@ -1 +0,0 @@
-This is our world now... the world of the electron and the switch, the beauty of the baud.
diff --git a/puzzles/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2 b/puzzles/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2
deleted file mode 100755
index f0a7fce..0000000
Binary files a/puzzles/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2 and /dev/null differ
diff --git a/puzzles/compaq/200/key b/puzzles/compaq/200/key
deleted file mode 100644
index ad21564..0000000
--- a/puzzles/compaq/200/key
+++ /dev/null
@@ -1 +0,0 @@
-Gawain Ballard Tunisia
diff --git a/puzzles/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2 b/puzzles/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2
deleted file mode 100755
index 10b82c9..0000000
Binary files a/puzzles/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2 and /dev/null differ
diff --git a/puzzles/compaq/350/key b/puzzles/compaq/350/key
deleted file mode 100644
index c4fa843..0000000
--- a/puzzles/compaq/350/key
+++ /dev/null
@@ -1 +0,0 @@
-Actually, Werner, we're all tickled to here you say that. Frankly, watchin' Donny beat Nazis to death is is the closest we ever get to goin' to the movies.
diff --git a/puzzles/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f b/puzzles/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f
deleted file mode 100755
index 2ede643..0000000
Binary files a/puzzles/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f and /dev/null differ
diff --git a/puzzles/compaq/400/key b/puzzles/compaq/400/key
deleted file mode 100644
index c4b3aba..0000000
--- a/puzzles/compaq/400/key
+++ /dev/null
@@ -1 +0,0 @@
-lawful forths Amanda
diff --git a/puzzles/compaq/50/index.mdwn b/puzzles/compaq/50/index.mdwn
deleted file mode 100644
index e3518a5..0000000
--- a/puzzles/compaq/50/index.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-You are doing a forensics evaluation of a linux box that you know has
-been compromised. You find a binary on the system and assume it was
-used by the attackers to hide data on box that they were going to
-exfiltrate. You dissamble the file and find the following lines of x86
-assembly - this function was used to encode a buffer in place to
-obfuscate a file. What is the 1 byte key used to obfuscate the data (in
-hex)?
-
-HINT: The function was orginally defined as void convert_buf(unsigned
-char * buf, int len). You can solve this puzzle by writing some code,
-or by using some of the advanced functions of some of the hex editors
-out there.
-
- .text:08048474 ; =============== S U B R O U T I N E =======================================
- .text:08048474
- .text:08048474 ; Attributes: bp-based frame
- .text:08048474
- .text:08048474 public convert_buf
- .text:08048474 convert_buf proc near ; CODE XREF: main+B2p
- .text:08048474
- .text:08048474 cnt = dword ptr -4
- .text:08048474 buf = dword ptr 8
- .text:08048474 len = dword ptr 0Ch
- .text:08048474
- .text:08048474 push ebp
- .text:08048475 mov ebp, esp
- .text:08048477 sub esp, 10h
- .text:0804847A mov [ebp+cnt], 0
- .text:08048481 mov [ebp+cnt], 0
- .text:08048488 jmp short loc_80484A4
- .text:0804848A ; ---------------------------------------------------------------------------
- .text:0804848A
- .text:0804848A loc_804848A: ; CODE XREF: convert_buf+36j
- .text:0804848A mov eax, [ebp+cnt]
- .text:0804848D mov edx, eax
- .text:0804848F add edx, [ebp+buf]
- .text:08048492 mov eax, [ebp+cnt]
- .text:08048495 add eax, [ebp+buf]
- .text:08048498 movzx eax, byte ptr [eax]
- .text:0804849B xor eax, 4Ch
- .text:0804849E mov [edx], al
- .text:080484A0 add [ebp+cnt], 1
- .text:080484A4
- .text:080484A4 loc_80484A4: ; CODE XREF: convert_buf+14j
- .text:080484A4 mov eax, [ebp+cnt]
- .text:080484A7 cmp eax, [ebp+len]
- .text:080484AA jl short loc_804848A
- .text:080484AC leave
- .text:080484AD retn
- .text:080484AD convert_buf endp
- .text:080484AD
- .text:080484AE
diff --git a/puzzles/compaq/50/key b/puzzles/compaq/50/key
deleted file mode 100644
index 1661a56..0000000
--- a/puzzles/compaq/50/key
+++ /dev/null
@@ -1 +0,0 @@
-4C
\ No newline at end of file
diff --git a/puzzles/compaq/500/02cb1e1d65a68b29ac851936c9bb4684 b/puzzles/compaq/500/02cb1e1d65a68b29ac851936c9bb4684
deleted file mode 100755
index 027c81c..0000000
Binary files a/puzzles/compaq/500/02cb1e1d65a68b29ac851936c9bb4684 and /dev/null differ
diff --git a/puzzles/compaq/500/key b/puzzles/compaq/500/key
deleted file mode 100644
index 576c70d..0000000
--- a/puzzles/compaq/500/key
+++ /dev/null
@@ -1 +0,0 @@
-codger launched jet
diff --git a/puzzles/compaq/600/daa36d50d4c807634dfd13a8239046de b/puzzles/compaq/600/daa36d50d4c807634dfd13a8239046de
deleted file mode 100755
index 41ba532..0000000
Binary files a/puzzles/compaq/600/daa36d50d4c807634dfd13a8239046de and /dev/null differ
diff --git a/puzzles/compaq/600/key b/puzzles/compaq/600/key
deleted file mode 100644
index 99d2435..0000000
--- a/puzzles/compaq/600/key
+++ /dev/null
@@ -1 +0,0 @@
-Now think real hard. You been bird-doggin' this township awhile now. They wouldn't mind a corpse of you. Now, you can luxuriate in a nice jail cell, but if your hand touches metal, I swear by my pretty floral bonnet, I will end you.
diff --git a/puzzles/compaq/summary.txt b/puzzles/compaq/summary.txt
deleted file mode 100644
index 826379f..0000000
--- a/puzzles/compaq/summary.txt
+++ /dev/null
@@ -1 +0,0 @@
-Danny wrote these, I have no idea.
diff --git a/puzzles/crypto/1/index.mdwn b/puzzles/crypto/1/index.mdwn
deleted file mode 100644
index e4af896..0000000
--- a/puzzles/crypto/1/index.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
Alice
-
Welcome to Crypto. It works like this: I'll say something to Bob,
-and he'll say something back. Our communication will be encrypted in some
-manner, or at least obfuscated. Your job is to get the plaintext, and
-find the puzzle key.
-
Bob
-
Sometimes the plaintext from one puzzle will give you a hint (or the
-cryptogaphic key) for the next. When we give you such keys, we'll always
-do so in a straightforward manner. The puzzle key for each puzzle
-is always in what I say, and there shouldn't be any tricks involved in
-figuring out what it is.
-
Alice
Good Luck!
-
Bob
You'll need it. By the way, the key is 'dirtbags'.
-
diff --git a/puzzles/crypto/110/key b/puzzles/crypto/110/key
deleted file mode 100644
index 1b59ab5..0000000
--- a/puzzles/crypto/110/key
+++ /dev/null
@@ -1 +0,0 @@
-the s is for sucks
diff --git a/puzzles/crypto/110substitution.py b/puzzles/crypto/110substitution.py
deleted file mode 100644
index b9feee6..0000000
--- a/puzzles/crypto/110substitution.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/python3
-
-plaintext = [b"This may seem relatively simple, but it's the same basic "
-b"principles as used in s-boxes, a technique used in many modern "
-b"cryptographic algoritms. Of course, instead of letter substitution, "
-b"you're doing byte substitution.",
-b"The next two puzzles are a bit different; Frequency counts (of characters) "
-b"will just reveal random noise. Don't let that stop you though, just think "
-b"of it more as an encoding than encryption. "
-b"Oh, by the way, the key this time is: 'the s is for sucks'."]
-
-key = b"thequickbrownfxjmpdvlazygs"
-
-def encode(text):
- ukey = key.upper()
- lkey = key.lower()
- assert len(set(key)) == 26, 'invalid key'
- assert key.isalpha(), 'non alpha character in key'
- out = bytearray()
- for t in text:
- if t in lkey:
- out.append(lkey[t - ord('a')])
- elif t in ukey:
- out.append(ukey[t - ord('A')])
- else:
- out.append(t)
- return bytes(out)
-
-def decode(text):
- ukey = key.upper()
- lkey = key.lower()
- assert len(set(key)) == 26, 'invalid key'
- assert key.isalpha(), 'non alpha character in key'
- out = bytearray()
- for t in text:
- if t in lkey:
- out.append(ord('a') + lkey.index(bytes([t])))
- elif t in ukey:
- out.append(ord('A') + ukey.index(bytes([t])))
- else:
- out.append(t)
- return bytes(out)
-
-c = encode(plaintext[0])
-print('
The 5 byte groupings are just a standard way of displaying cypher text. It has no bearing on the solution to the puzzle. This format will be used to display the cyphertext from now on.
diff --git a/puzzles/crypto/120/key b/puzzles/crypto/120/key
deleted file mode 100644
index 42e1c62..0000000
--- a/puzzles/crypto/120/key
+++ /dev/null
@@ -1 +0,0 @@
-Rat Fink
diff --git a/puzzles/crypto/120binary.py b/puzzles/crypto/120binary.py
deleted file mode 100644
index c2ca7df..0000000
--- a/puzzles/crypto/120binary.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/python3
-"""This is non-obvious, so let me elaborate. The message is translated to
-binary with one character per binary bit. Lower case characters are 1's,
-and upper case is 0. The letters are chosen at random. Tricky, eh?"""
-
-import random
-import crypto
-
-lower = b'abcdefghijklmnopqrstuvwxyz'
-upper = lower.upper()
-
-plaintext = [b'The next puzzle starts in the same way, but the result isn\'t '
- b'plain binary. Think OSI layer 1.',
- b'Yep, we\'re still dealing with just encodings, not encryption.'
- b'Rat Fink']
-
-def encode(text):
- out = bytearray()
- mask = 0x80
- for t in text:
- for i in range(8):
- if t & mask:
- out.append(random.choice(lower))
- else:
- out.append(random.choice(upper))
- t = t << 1
-
- return bytes(out)
-
-def decode(text):
- out = bytearray()
- i = 0
- while i < len(text):
- c = 0
- mask = 0x80
- for j in range(8):
- if text[i] in lower:
- c = c + mask
- mask = mask >> 1
- i = i + 1
- out.append(c)
- return bytes(out)
-
-print('
The 5 byte groupings are just a standard way of displaying cypher text. It has no bearing on the solution to the puzzle. This format will be used to display the cyphertext from now on.
diff --git a/puzzles/crypto/130/key b/puzzles/crypto/130/key
deleted file mode 100644
index afe7b8d..0000000
--- a/puzzles/crypto/130/key
+++ /dev/null
@@ -1 +0,0 @@
-probable cause
diff --git a/puzzles/crypto/130manchester.py b/puzzles/crypto/130manchester.py
deleted file mode 100644
index b1b6d4f..0000000
--- a/puzzles/crypto/130manchester.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python3
-'''This is the same as the previous, but it uses non-return to zero to encode
-the binary.'''
-
-import random
-import crypto
-
-lower = b'abcdefghijklmnopqrstuvwxyz'
-upper = lower.upper()
-
-alice = b'The next one is in Morris Code. Unlike the previous two, '\
- b'they will actually need to determine some sort of key.'
-bob = b'Morris code with a key? That sounds bizarre. probable cause'
-
-def encode(text):
- out = bytearray()
- mask = 0x80
- state = 0
- for t in text:
- for i in range(8):
- next = t & mask
- if not state and not next:
- out.append(random.choice(upper))
- out.append(random.choice(lower))
- elif not state and next:
- out.append(random.choice(lower))
- out.append(random.choice(upper))
- elif state and not next:
- out.append(random.choice(upper))
- out.append(random.choice(lower))
- elif state and next:
- out.append(random.choice(lower))
- out.append(random.choice(upper))
- state = next
- t = t << 1
-
- return bytes(out)
-
-def decode(text):
- out = bytearray()
- i = 0
- while i < len(text):
- c = 0
- mask = 0x80
- for j in range(8):
- a = 0 if text[i] in lower else 1
- b = 0 if text[i+1] in lower else 1
- assert a != b, 'bad encoding'
- if b:
- c = c + mask
- mask = mask >> 1
- i = i + 2
- out.append(c)
- return bytes(out)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.groups)
diff --git a/puzzles/crypto/140/index.mdwn b/puzzles/crypto/140/index.mdwn
deleted file mode 100644
index 6dc2f61..0000000
--- a/puzzles/crypto/140/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
Alice
fj v jk taf phlp rpv zs z llo zy xq okb a fru rwzd uhjp ah mmnt je jvh pos r qnlx wsvm pvbr fpkx j dot sja obxxqy idpr csm o u thhh c vp h ihdo y zmm ia j tp cfs jxf yue uv h u kssx cn et bqk pw kzsc tc o u jgnt t mg gmy amr k hjp b pu br bkh dz tqk qtt xgxypy
-
Bob
cy rurj xepn nt akxj rl jrrz c e oly nnt fu usiv rr dta wqyxnr goh sj aq ia m edvt fssp ps wtqd ohl r la rht szdupb
diff --git a/puzzles/crypto/140/key b/puzzles/crypto/140/key
deleted file mode 100644
index 0ec7de0..0000000
--- a/puzzles/crypto/140/key
+++ /dev/null
@@ -1 +0,0 @@
-giant chickens
diff --git a/puzzles/crypto/140morris.py b/puzzles/crypto/140morris.py
deleted file mode 100644
index 8e42391..0000000
--- a/puzzles/crypto/140morris.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/python3
-"""This is morris code, except the dots and dashes are each represented by
-many different possible characters. The 'encryption key' is the set of
-characters that represent dots, and the set that represents dashes."""
-
-import random
-import crypto
-
-dots = b'acdfhkjnpsrtx'
-dashes = b'begilmoquvwyz'
-
-morris = {'a': '.-',
- 'b': '-...',
- 'c': '-.-.',
- 'd': '-..',
- 'e': '.',
- 'f': '..-.',
- 'g': '--.',
- 'h': '....',
- 'i': '..',
- 'j': '.---',
- 'k': '-.-',
- 'l': '.-..',
- 'm': '--',
- 'n': '-.',
- 'o': '---',
- 'p': '.--.',
- 'q': '--.-',
- 'r': '.-.',
- 's': '...',
- 't': '-',
- 'u': '..-',
- 'v': '...-',
- 'w': '.--',
- 'x': '-..-',
- 'y': '-.--',
- 'z': '--..',
- '.': '.-.-.-',
- ',': '--..--',
- ':': '---...'}
-
-imorris = {}
-for k in morris:
- imorris[morris[k]] = k
-
-plaintext = [b'it is fun to make up bizarre cyphers, but the next one is '
- b'something a little more standard.',
- b'all i have to say is: giant chickens.']
-
-
-
-def encode(text):
- out = bytearray()
- for t in text:
- if t == ord(' '):
- out.extend(b' ')
- else:
- for bit in morris[chr(t)]:
- if bit == '.':
- out.append(random.choice(dots))
- else:
- out.append(random.choice(dashes))
- out.append(ord(' '))
- return bytes(out[:-1])
-
-def decode(text):
- text = text.replace(b' ', b'&')
-# print(text)
- words = text.split(b'&')
- out = bytearray()
- for word in words:
-# print(word)
- word = word.strip()
- for parts in word.split(b' '):
- code = []
- for part in parts:
- if part in dots:
- code.append('.')
- else:
- code.append('-')
- code = ''.join(code)
- out.append(ord(imorris[code]))
- out.append(ord(' '))
- return bytes(out[:-1])
-
-c = encode(plaintext[0])
-print('
1 11 eb 47 20 3f bf 11 20 eb d4 ef 11 20 a1 40 7b 34 ef ef 20 22 34 11 20 55 11 eb 47 34 98 11 c3 34 eb 11 eb 47 20 ef 11 da 3f 34 71 11 11 1 eb 11 3d 20 15 15 11 eb 99 bf 34 11 99 11 15 da eb 11 da 55 11 3d da 7b bf 11 eb da 11 c3 34 eb 11 20 eb 11 7b 20 c3 47 eb 71 11 11 5f 47 99 eb 11 20 ef f3 11 f1 3f 15 34 ef ef 11 eb 47 34 98 11 87 da 11 ef da a1 34 eb 47 20 3f c3 11 ef a1 99 7b eb 11 15 20 bf 34 11 c4 da 7b 7b 34 c4 eb 15 98 11 c3 f1 34 ef ef 11 eb 47 34 11 22 99 15 f1 34 11 da 55 11 ef 40 99 c4 34 ef 71 11 8f 7b 34 6a f1 34 3f c4 98 11 c4 da f1 3f eb ef 11 3d da 3f d4 eb 11 be f1 ef eb 11 f 34 11 98 da f1 7b 11 55 7b 20 34 3f 87 11 47 34 7b 34 f3 11 20 eb d4 15 15 11 f 34 11 f1 ef 34 55 f1 15 11 20 3f 11 da eb 47 34 7b 11 40 15 99 c4 34 ef 11 eb da da 71
-
Bob
1 d4 a1 11 3f da eb 11 ef f1 7b 34 11 20 55 11 eb 47 99 eb d4 ef 11 34 3f da f1 c3 47 11 eb 34 90 eb 11 eb da 11 c3 20 22 34 11 eb 47 34 a1 11 eb 47 34 11 99 f 20 15 20 eb 98 11 eb da 11 a1 99 bf 34 11 99 11 c3 da da 87 11 55 7b 34 6a f1 34 3f c4 98 11 c4 da f1 3f eb 71 11 11 1 eb d4 ef 11 3f 20 c4 34 11 eb da 11 55 20 3f 99 15 15 98 11 f 34 11 99 eb 11 99 11 7b 34 99 15 11 c4 98 40 47 34 7b 11 eb 47 99 eb 11 99 15 15 da 3d ef 11 55 da 7b 11 eb 47 20 3f c3 ef 11 15 20 bf 34 11 40 7b da 40 34 7b 11 40 f1 3f c4 eb f1 99 eb 20 da 3f 11 99 3f 87 11 c4 99 40 20 eb 99 15 20 6f 99 eb 20 da 3f 71 11 8 3f 98 3d 99 98 f3 11 eb 47 34 11 bf 34 98 11 20 ef 6e 11 55 15 99 a1 20 3f c3 11 a1 99 ef eb 20 55 55
diff --git a/puzzles/crypto/150/key b/puzzles/crypto/150/key
deleted file mode 100644
index 675c4a0..0000000
--- a/puzzles/crypto/150/key
+++ /dev/null
@@ -1 +0,0 @@
-flaming mastiff
diff --git a/puzzles/crypto/150sbox.py b/puzzles/crypto/150sbox.py
deleted file mode 100644
index 78581f3..0000000
--- a/puzzles/crypto/150sbox.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/python3
-
-import crypto
-
-key = [43, 44, 227, 31, 255, 42, 194, 197, 187, 11, 92, 234, 57, 67, 45, 40, 66, 226, 214, 184, 167, 139, 210, 233, 22, 246, 150, 75, 186, 145, 86, 224, 17, 131, 24, 98, 74, 248, 213, 212, 72, 101, 160, 221, 243, 69, 113, 142, 127, 47, 141, 68, 247, 138, 124, 177, 192, 165, 110, 107, 203, 207, 254, 176, 154, 8, 87, 189, 228, 155, 143, 0, 220, 1, 128, 3, 169, 204, 162, 90, 156, 208, 170, 222, 95, 223, 188, 215, 174, 78, 48, 50, 244, 116, 179, 134, 171, 153, 15, 196, 135, 52, 85, 195, 71, 32, 190, 191, 21, 161, 63, 218, 64, 106, 123, 239, 235, 241, 34, 61, 144, 152, 111, 20, 172, 117, 237, 120, 80, 88, 200, 185, 109, 137, 37, 159, 183, 30, 202, 129, 250, 58, 9, 193, 41, 164, 65, 126, 46, 158, 132, 97, 166, 6, 23, 147, 105, 29, 38, 119, 76, 238, 240, 12, 201, 245, 230, 14, 206, 114, 10, 25, 60, 83, 236, 18, 231, 39, 77, 55, 252, 229, 100, 7, 28, 209, 51, 148, 181, 198, 225, 118, 173, 103, 35, 149, 91, 108, 219, 168, 140, 49, 33, 122, 82, 216, 53, 205, 13, 73, 249, 180, 81, 19, 112, 232, 217, 96, 62, 99, 4, 26, 178, 211, 199, 151, 102, 121, 253, 136, 130, 104, 133, 146, 89, 5, 157, 70, 84, 242, 182, 93, 251, 54, 16, 175, 56, 115, 94, 36, 27, 79, 59, 163, 125, 2]
-ikey = [None]*256
-for i in range(256):
- ikey[key[i]] = i
-
-alice = b'''I think it's impressive if they get this one. It will take a lot of work to get it right. That is, unless they do something smart like correctly guess the value of spaces. Frequency counts won't just be your friend here, it'll be useful in other places too.'''
-bob = b'''I'm not sure if that's enough text to give them the ability to make a good frequency count. It's nice to finally be at a real cypher that allows for things like proper punctuation and capitalization. Anyway, the key is: flaming mastiff'''
-
-def sbox(text, key):
- out = bytearray()
- for t in text:
- out.append(key[t])
- return bytes(out)
-
-encode = lambda t: sbox(t, key)
-decode = lambda t: sbox(t, ikey)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/160/index.mdwn b/puzzles/crypto/160/index.mdwn
deleted file mode 100644
index 68804af..0000000
--- a/puzzles/crypto/160/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
Alice
e8 c3 8c d5 c3 d9 8c d8 c4 c5 c2 c7 8c d8 c4 c9 d5 8b c0 c0 8c d8 de d5 8c cd c2 c3 d8 c4 c9 de 8c ca de c9 dd d9 c9 c2 cf d5 8c cf c3 d9 c2 d8 93 8c 8c e5 d8 8c c1 c5 cb c4 d8 8c ce c9 8c ce c9 d8 d8 c9 de 8c c5 ca 8c d8 c4 c9 d5 8c c6 d9 df d8 8c c0 c3 c3 c7 c9 c8 8c ca c3 de 8c dc cd d8 d8 c9 de c2 df 82
-
Bob
f5 c3 d9 8b c8 8c ce c9 8c cd c1 cd d6 c9 c8 8c cd d8 8c c4 c3 db 8c c3 ca d8 c9 c2 8c d8 c4 c5 df 8c c5 df 8c d9 df c9 c8 8c c5 c2 8c c0 c5 c9 d9 8c c3 ca 8c de c9 cd c0 8c cf de d5 dc d8 c3 82 8c 8c e5 d8 8b df 8c cd ce c3 d9 d8 8c cd df 8c c9 ca ca c9 cf d8 c5 da c9 8c cd df 8c cd 8c cf c9 cd df cd de 8c cf d5 dc c4 c9 de 82 8c 8c cf c4 de c3 c2 c5 cf 8c ca cd c5 c0 d9 de c9
diff --git a/puzzles/crypto/160/key b/puzzles/crypto/160/key
deleted file mode 100644
index 7f99998..0000000
--- a/puzzles/crypto/160/key
+++ /dev/null
@@ -1 +0,0 @@
-chronic failure
diff --git a/puzzles/crypto/160xor.py b/puzzles/crypto/160xor.py
deleted file mode 100644
index f35c4b4..0000000
--- a/puzzles/crypto/160xor.py
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/python3
-
-import crypto
-
-alice = b'''Do you think they'll try another frequency count? It might be better if they just looked for patterns.'''
-bob = b'''You'd be amazed at how often this is used in lieu of real crypto. It's about as effective as a ceasar cypher. chronic failure'''
-
-key = 0xac
-
-def encode(text):
- out = bytearray()
- for t in text:
- out.append(t ^ key)
- return bytes(out)
-
-crypto.mkIndex(encode, encode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/170/index.mdwn b/puzzles/crypto/170/index.mdwn
deleted file mode 100644
index 7e0313d..0000000
--- a/puzzles/crypto/170/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
diff --git a/puzzles/crypto/170/key b/puzzles/crypto/170/key
deleted file mode 100644
index d1265dd..0000000
--- a/puzzles/crypto/170/key
+++ /dev/null
@@ -1 +0,0 @@
-terrifying silence
diff --git a/puzzles/crypto/170transpose.py b/puzzles/crypto/170transpose.py
deleted file mode 100644
index 246b571..0000000
--- a/puzzles/crypto/170transpose.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import crypto
-
-alpha = b'abcdefghiklmnoprstuw'
-
-alice = b'''The next four puzzles are all transposition cyphers like this one. Transposition, like substition, is still used in modern crypto systems. '''
-bob = b'''Transposition cyphers often work with the text arranged into blocks of a certain width, often as determined by the key. Dangling parts are often padded with nulls or random text. terrifying silence '''
-alice = alice.replace(b' ', b'_').lower()
-bob = bob.replace(b' ', b'_').lower()
-
-map = [6, 3, 0, 5, 2, 7, 4, 1]
-imap = [2, 7, 4, 1, 6, 3, 0, 5]
-
-
-encode = lambda t : transform(t, map)
-decode = lambda t : transform(t, imap)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.groups)
-
-
diff --git a/puzzles/crypto/180/index.mdwn b/puzzles/crypto/180/index.mdwn
deleted file mode 100644
index 0cac490..0000000
--- a/puzzles/crypto/180/index.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-b"t_iwey_6hf_ussre'd_sysuysoshfsan_3_eonz_t.tr_noiutp_nteo_st0_7_rezmr__ewo_nbihade_ro_i_4.k_xluo_t_etagsoe_apk_nea1__ettecnihg'_p_tnrsr.etesl_5_yh__hg_elrapai__ey_yh_sl2_t_epi_ebyaell_tcac__"
-
diff --git a/puzzles/crypto/180/key b/puzzles/crypto/180/key
deleted file mode 100644
index 4c3e56d..0000000
--- a/puzzles/crypto/180/key
+++ /dev/null
@@ -1 +0,0 @@
-The key for this puzzle is this sentence
diff --git a/puzzles/crypto/180rotate.py b/puzzles/crypto/180rotate.py
deleted file mode 100644
index 8f57e25..0000000
--- a/puzzles/crypto/180rotate.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import crypto
-
-import itertools
-
-width = 7
-
-alice = b'''The key for this one was essentially 0 1 2 3 4 5 6 7. The key for the next puzzle is much stronger. I bet they're glad we're not also applying a substitution cypher as a secondary step. '''
-bob = b'''I take that to mean it uses the same basic algorithm. I guess it won't be too hard then, will it? The key for this puzzle is this sentence'''
-alice = alice.lower().replace(b' ', b'_')
-bob = bob.lower().replace(b' ', b'_')
-
-def rotate(text):
- out = bytearray()
- assert len(text) % width == 0, 'At %d of %d.' % (len(text) % width, width)
-
- slices = [bytearray(text[i:i+width]) for i in range(0, len(text), width)]
- nextSlice = slices.pop(0)
- while len(out) < len(text):
- if nextSlice:
- out.append(nextSlice.pop(0))
- slices.append(nextSlice)
- nextSlice = slices.pop(0)
-
- return bytes(out)
-
-def unrotate(text):
- out = bytearray()
- assert len(text) % width == 0
-
- slices = []
- for i in range(len(text) // width):
- slices.append([])
-
- inText = bytearray(text)
- while inText:
- slice = slices.pop(0)
- slice.append(inText.pop(0))
- slices.append(slice)
-
- for slice in slices:
- out.extend(slice)
-
- return bytes(out)
-
-print(rotate(alice))
-
-crypto.mkIndex(rotate, unrotate, alice, bob, crypto.groups)
diff --git a/puzzles/crypto/190/index.mdwn b/puzzles/crypto/190/index.mdwn
deleted file mode 100644
index f77e708..0000000
--- a/puzzles/crypto/190/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
diff --git a/puzzles/crypto/190rotate.py b/puzzles/crypto/190rotate.py
deleted file mode 100644
index 8d9da3d..0000000
--- a/puzzles/crypto/190rotate.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import crypto
-
-import itertools
-
-width = 5
-
-alice = b'''If we did the morris code encoding prior to this transposition, I don't think anyone would ever figure out the solution.'''
-bob = b'''That's basically true of the combination of many of these techniques. Combining a substitution along with a permutation (or transposition) satisfies the Shannon's diffusion principle of cryptography; you want to try to get rid of as much statistical information as possible. statistical information'''
-alice = alice.lower().replace(b' ', b'_')
-bob = bob.lower().replace(b' ', b'_')
-
-key = [4,2,3,1,0]
-
-def rotate(text):
- out = bytearray()
- assert len(text) % width == 0, 'At %d of %d.' % (len(text) % width, width)
-
- slices = [bytearray(text[i:i+width]) for i in range(0, len(text), width)]
- for i in range(width):
- for slice in slices:
- out.append(slice[key[i]])
-
- return bytes(out)
-
-def unrotate(text):
- out = bytearray()
- assert len(text) % width == 0
-
- # Make column slices, and rearrange them according to the key.
- size = len(text) // width
- tSlices = [bytearray(text[i*size:i*size+size]) for i in range(width)]
- slices = [None] * width
- for i in range(width):
- slices[key[i]] = tSlices[i]
-
- while len(out) < len(text):
- for i in range(5):
- out.append(slices[i].pop(0))
-
- return bytes(out)
-
-crypto.mkIndex(rotate, unrotate, alice, bob, crypto.groups)
diff --git a/puzzles/crypto/200/key b/puzzles/crypto/200/key
deleted file mode 100644
index dba2023..0000000
--- a/puzzles/crypto/200/key
+++ /dev/null
@@ -1 +0,0 @@
-the squirrels crow at noon
diff --git a/puzzles/crypto/200cbc.py b/puzzles/crypto/200cbc.py
deleted file mode 100644
index 567a6e9..0000000
--- a/puzzles/crypto/200cbc.py
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import cbc, crypto
-
-alice = b"""Do you think they've figured out that this was encrypted using cipher block chaining with a cipher of C(key, text) = text? If they somehow stumbled across the solution with knowing what it was, the next three will be hard. """
-bob = b"""Well, either way, we might as well let them know that the next three puzzles all uses CBC, but with progressively more difficult cipher functions. the squirrels crow at noon """
-
-def C(text, key):
- return text
-
-IV = b'ahiru'
-key = None
-
-encode = lambda t : cbc.cipherBlockChainingE(key, IV, C, t)
-decode = lambda t : cbc.cipherBlockChainingD(key, IV, C, t)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/210/index.mdwn b/puzzles/crypto/210/index.mdwn
deleted file mode 100644
index be87bbf..0000000
--- a/puzzles/crypto/210/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
4c 68 29 3d 66 41 63 65 26 7c 47 75 2e 25 62 4 72 23 3c 75 47 69 20 73 61 4d 61 39 6e 76 e 61 20 75 24 19 66 29 3a 3d 1f 70 65 33 20 e 3f 7d 34 37 4d 3e 74 23 31 e 3e 76 29 63 19 3e 75 68 31 5a 19 7c 75 26 1e 5 30 69 3b 10 f 7c 4a 26 5 5 73 57 35 0 1e 25 18 65 2d 1e 3d 1f 7e 20 56 71 5e 2c 6d 19 33 11 30 61 2 37 17 2c 25 4d 75 58 70 66 c 39 43 6a 60 43 36 43 74 6c 59 28 c 28 2f 18 64 4d 7a 25 3 28 40 7d 34 2 37 f 21 77 43 7b 4e 73 77 43 7b 45 21 75 42 30 a 24 73 59 7c 4b 76 3e 16 3e 4 66 28 d 72 2 60 6b 0 6b 1f 7c 7b 4f 29 50 20 38 e 65 56 26 7b d 60 4f 31 7c 42 65 4e 63 6b 45 6c 1 66 6d 46 6c 4e 3a 2e 7 20 f 68 4 48 3f 5 7f 9 7 3a 1e 2d 44 48 78 51 71 7 46 34 55 6a a 4d 78 55 3f 49 51 79 55 26 4f 1e 3b 1a 7a c 5f 77 1f 6d 1c 44 3b 1c 76 14 4e 77 7 6c 12 1 7d 4 71 6 b 63 18 23 9 5 7c 3 71 19 1a 62 5 6d 1d 55 20 4a 31 5e 14 6c 51 2b 58 5b 77 5b 35 57 14 68 5c 28 5a 1e 24 52 2e 19 1f 21 5a 34 e 50 63 15 68 4d 11 2f 2e 72 4f 1a 63 20 6e b 55 42 2a 6e 6 53 4b 65 7d b 1b 7 50 6a 6 15 18 1f 36 45 54 54 5e 64 43 4d 5d 43 6f 54 4a 58 42 7a 17 44 58 44 7e 11 b 1a b 22 52 4a 56 17 25 52 4e 53 16 70 11 55 57 1c 22 1e 53 5d 16 70 12 49 45 59 6d 17 6 4c 40 7a 6 10 54 47 61 b 18 18 6 33 46 57 5a 49 28 4b 18 42 4e 3b 5c 57 5d 55 26 51 5d 11 14 74 1c 12 53 5b 6f b 5d 52 41 6e 1c 12 5f 9 3c 1c 12 5e 3 6e 16 13 12 18 74 14 8 5e 4 72 18 9 57 4b 2e 5b 48 1b a 7c 48 4e d 0 60 4e 45 41 1b 7a 48 a 5a 1c 67 47 0 16 3 79 45 c 1f 4c 25 6 4d 53 d 77 1 57 51 45 71 42 53 53 45 74 1 4b 57 4b 72 42 4d 4f 4 77 40 4c 57 18 25 d 3 15 57 79 4e 18 11 59 7f d 5 12 43 63 a 4a a 44 78 7 42 46 5f 62 1 40 a 5d 75 c f 0 40 68 2 40 18 47 7f 41 4c 1b 44 61 47 44 12 b 77 51 4c 5e b 70 46 46 5c 44 76 4d 4c 10 58 70 41 4d 19 17 2c 2 c 55 56 7e 15 b 5c 40 2c 5 9 51 5c 36 3 2 1d 5a 30 40 43 51 1b 62 d c 54 0 30 19 2 4b 4f 36 12 c 53 0 37 10 e 5a 4f 26 1c d 59 55 26 5f 4c 15 14 74 12 3 13 1e 75 5 4c b 19 62 46 50 6 1b 75 9 1f 6 1d 6c f 50 1e 1a 7b 4c 59 1e 1a 7e 4a 44 1 55 6d 47 c 4d 4a 73 45 d 55 56 21 8 42 17 19 7d 4b 40 e 5 7b 8 4e 45 4a 6b e 4f 9 48 76 1f 45 45 48 62 5c d 4c 4a 30 11 42 e 5 6c 52 5e 7 f 7a 42 11 45 40 26 1 50 9 5c 31 7 5b 16 13 6d 44 1a 5a 52 3f 53 1d 53 44 6d 57 0 50 5c 7a 50 4f 12 13 26 13 e 5e 35 74 3 4 57 34 26 9 1f 1b 2f 3c f 50 11 35 3d 18 1f 9 33 22 1e 50 11 34 39 e 1f a 3e 2e 6 50 48 71 72 45 11 4 73 75 55 a 48 7d 20 16 2 4b 66 72 6 19 55 66 6e 2 56 56 67 3c 3b 5c 54 69 3d 78 1d 18 28 6f 35 52 1c 22 3d 21 5c 3 6d 2e 62 51 6 65 7c 63 51 13 26 2e 66 4b 13 25 7c 6a 3 5f 26 67 6f 9 13 67 35 22 46 51 28 2e 35 9 5f 22 3d 22 15 13 29 20 36 14 5f 3f 3d 20 9 13 3d 26 2d 2 5f 33 3a 69 4d 47 34 2d 64 2 4c 32 2b 74 4d 59 38 79 39 2 1b 77 25 7a f 2 6a 39 6a 40 17 60 6b 7c 5f 5b 21 39 31 10 19 6e 22 3c 5f 1 69 35 7f 47 8 6a 2b 3c 5f 5 71 3c 2d 10 47 3e 60 6e 51 b 28 7d 78 1e 10 26 7c 3b 3 15 2e 66 2c 4c 18 23 7b 3a 57 54 38 61 38 4c 18 79 33 75 3 5a 36 24 60 5 5a 79 21 62 1e 53 64 73 2f 51 11 2b 2f 6c 64 18 2a 3c 7c 2b 1a 20 38 7a 36 56 2c 25 74 3c 1a 21 36 74 38 56 28 36 78 3a 1a 33 2c 7e 75 1 39 32 71 3a 43 76 6e 32 7b f 7a 7d 3f 33 17 35 68 35 28 5b 3b 6d 37 3e 17 7a 3f 7a 71 55 35 29 6b 7f 4e 29 7b 71 75 2 68 29 3c 3a 40 27 22 3a 75 47 26 3f 2e 3a 58 3c 20 20 72 55 27 75 30 3d 5a 27 6a 3a 3c 11 64 38 3b 26 9 2b 6d 2c 28 c 2a 38 3b 67 e 2a 6a 2d 7b 7 65 36 6e 3a 4b 24 64 44 75 54 2e 73 49 3a 51 35 21 5e 3c 50 3f 73 5c 3d 1b 70 60 58 3b 19 3f 61 5e 3a 16 24 33 67 30 14 2a 32 24 28 19 36 60 33 28 1a 32 32 7e 67 58 7d 6e 3d 7f 5c 73 6e 79 63 10 52 7d 78 6e 5 11 2f 5a 6c 4 17 62 19 2d 48 56 30 54 62 49 40 62 5f 68 44 4b 37 4f 27 46 4b 65 4b 27 45 40 37 6 68 7 f 6b 45 63 1e e 3e 52 2c 19 f 23 46 63 1d f 26 5 60 1e e 33 46 7c 17 f 22 51 33 32 40 36 57 38 7e 47 21 46 77 3c 8 7d 5 36 70 e 7b 41 35 70 41 6e 4b 2e 3c 46 79 5a 61 35 4f 2b 4e 6b 79 41 30 43 23 61 e 29 45 29 7f 7 2e 4a 66 3d 48 72 9 27 71 4d 65 19 3c 3d 43 37 19 3c 3d 43 30 8 73 7f c 6c 4b 32 33 b 7b 5a 7d 39 5 6a 5c 32 3c 19 38 58 38 24 2 23 55 70 68 19 3e 16 77 61 0 6c 1 70 6c 1b 3e 1 70 6c 1b 39 10 3f 73 1b 26 16 24 76 19 31 6 6b 6e 19 34 4 76 66 5 66 9 70 6d 2 60 4a 31 21 43 32 7 7e 2c 42 67 44 78 34 d 77 52 65 36 11 25 50 64 7d 5e 24 46 68 7a 42 76 b 27 38 d 2a 48 21 20 42 3b 44 23 29 d 2f 55 23 28 42 2e 59 21 21 d 2c 56 2f 2e 7 7e 42 28 23 1a 2c 55 2f 26 1b 39 45 60 2b 1d 25 1 7b 67 13 24 42 60 63 19 2f 1 66 7c 56 35 7 7b 75 19 69 44 3a 39 58 3b 48 3b 30 17 26 c 74 28 10 31 2 3b 34 d 2c 7 31 2b 11 31 16 2d 67 d 22 1c 26 2b 11 3f 5f 67 67 50 6d 12 28 63 5a 3f 6 26 7c 15 3f c 2e 78 e 6d 41 61 3a 41 31 2 62 39 41 28 41 62 20 5a 76 2 4c 21 58 6d 4d 3 24 43 38 42 0 68 48 25 1 1c 71 53 3f b 1d 3a 1c 20 7 0 33 53 7c 44 41 7f 12 2e 54 5b 70 16 2f 17 40 74 1c 7d 18 46 7e 16 2f 14 5c 66 57 7d 59 13 24 18 21 18 5c 1c 1f 36 5b 70 1f 1c 2b 4d 6d 53 3c 2c 5a 22 50 35 7e 6a 3d 5d 39 69
diff --git a/puzzles/crypto/210/key b/puzzles/crypto/210/key
deleted file mode 100644
index 73d7fe3..0000000
--- a/puzzles/crypto/210/key
+++ /dev/null
@@ -1 +0,0 @@
-The Colour Out of Space
diff --git a/puzzles/crypto/210cbc.py b/puzzles/crypto/210cbc.py
deleted file mode 100644
index c554878..0000000
--- a/puzzles/crypto/210cbc.py
+++ /dev/null
@@ -1,20 +0,0 @@
-
-import cbc, crypto
-
-alice = b"""I'd say this was easy, but we didn't give them the key, did we? I'm adding some text to give them something to work with: Commencing his descent of the dark stairs, Ammi heard a thud below him. He even thought a scream had been suddenly choked off, and recalled nervously the clammy vapour which had brushed by him in that frightful room above. What presence had his cry and entry started up? Halted by some vague fear, he heard still further sounds below. Indubitably there was a sort of heavy dragging, and a most detestably sticky noise as of some fiendish and unclean species of suction. With an associative sense goaded to feverish heights, he thought unaccountably of what he had seen upstairs. Good God! What eldritch dream-world was this into which he had blundered? He dared move neither backward nor forward, but stood there trembling at the black curve of the boxed-in staircase. Every trifle of the scene burned itself into his brain. The sounds, the sense of dread expectancy, the darkness, the steepness of the narrow steps-and merciful heaven! . . . the faint but unmistakable luminosity of all the woodwork in sight; steps, sides, exposed laths, and beams alike! """
-bob = b"""No, and they\'ll have to figure out the key for the next one too. Here\'s some Lovecraft: "Nothin\' . . . nothin\' . . . the colour . . . it burns . . . cold an\' wet . . . but it burns . . . it lived in the well . . . I seen it . . . a kind o\' smoke . . . jest like the flowers last spring . . . the well shone at night . . . Thad an\' Mernie an\' Zenas . . . everything alive . . . suckin\' the life out of everything . . . in that stone . . . it must a\' come in that stone . . . pizened the whole place . . . dun\'t know what it wants . . . that round thing them men from the college dug outen the stone . . . they smashed it . . . it was that same colour . . . jest the same, like the flowers an\' plants . . . must a\' ben more of \'em . . . seeds . . . seeds . . . they growed . . . I seen it the fust time this week . . . must a\' got strong on Zenas . . . he was a big boy, full o\' life . . . it beats down your mind an\' then gits ye . . . burns ye up . . . in the well water . . . you was right about that . . . evil water . . . Zenas never come back from the well . . . can\'t git away . . . draws ye . . . ye know summ\'at\'s comin\', but \'tain\'t no use . . . I seen it time an\' agin senct Zenas was took . . . whar\'s Nabby, Ammi? . . . my head\'s no good . . . dun\'t know how long senct I fed her . . . it\'ll git her ef we ain\'t keerful . . . jest a colour . . . her face is gettin\' to hev that colour sometimes towards night . . . an\' it burns an\' sucks . . . it come from some place whar things ain\'t as they is here . . . one o\' them professors said so . . . he was right . . . look out, Ammi, it\'ll do suthin\' more . . . sucks the life out. . . ." The Colour Out of Space"""
-
-def C(text, key):
- out = bytearray()
- for i in range(len(text)):
- out.append( text[i] ^ key[i] )
-
- return bytes(out)
-
-IV = b'ahiru'
-key = b'color'
-
-encode = lambda t : cbc.cipherBlockChainingE(key, IV, C, t)
-decode = lambda t : cbc.cipherBlockChainingD(key, IV, C, t)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/220/index.mdwn b/puzzles/crypto/220/index.mdwn
deleted file mode 100644
index 23afa0b..0000000
--- a/puzzles/crypto/220/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
Alice
1c 1e 38 7 52 4f 72 72 71 2b 18 58 6 52 4 74 65 6c 78 37 16 53 18 c 1d 6c 6e 36 3a 2b 5f 4f 4c 5 54 2a 27 7f 20 25 18 43 47 52 0 67 73 77 31 27 18 45 47 7 11 33 7d 7d 65 66 13 46 58 14 2 37 76 72 24 61 1d 41 17 1e 53 64 73 78 20 67 58 e b 1 44 62 31 3e 68 62 1e a e 45 1c 6b 6c 7b 79 65 1 0 1e 16 15 7f 70 72 20 64 17 13 5f 7 0 2d 20 72 34 62 19 c 40 41 5d 34 38 7e 2c 29 c 5d 59 18 4d 2b 39 64 38 38 a 4b 43 58 18 35 76 65 27 31 11 54 52 56 4f 72 18 7c 7a 76 a 56 17 3f 1f 7e 7b 7e 24 5a 1b 36 5e 9 45 7e 24 77 4f 61 57 e c 40 3b 6d 5e 77 63 2b 1f 46 4d 2a 6 22 72 3f 35 a 4b 73 4a 13 15 6a 7a 24 6 77 50 1f 4 5d 26 61 52 31 69 7d 57 11 e 72 6 79 75 3b 7e 52 5e 21 16 18 5e 75 38 2e 44 71 e 19 1c 5b 30 7d 10 7c 7c 3f 5c 50 12 76 10 71 64 3b 39 56 5c 22 1e 44 5c 71 28 7c 56 64 5c b 19 4d 35 7c 41 2e 79 2e 40 59 5c 20 a 67 73 25 2b 0 5 75 8 6 41 28 20 76 1 6e 56 1 5e 45 75 2b f 76 71 3f 56 4a 47 6a 1e 33 7b 22 6a 2 47 6a 13 16 9 7a 64 26 4 65 48 a 5a d 72 3f 5c 24 7c 69
-
Bob
c 1b 35 0 52 41 31 69 63 20 19 4f 33 48 17 46 74 39 29 26 56 6 32 1d 47 12 28 3f 75 6e 4b 7 7f 4d 1d 5f 74 25 60 3e 49 12 32 4 5 47 25 69 70 70 1e 50 29 40 5e 4c 3b 3e 18 32 56 44 60 1b 79 13 14 33 64 74 5e 6 76 34 b 3a 7d 3b 26 5b 49 3d 5f 1e 47 3e 26 3d 1d 79 7 38 57 48 3d 3e 4e 6a 55 68 1d c 56 2b 30 3e 5d 3d 78 4e 55 6e 1e 29 1d 7d 3d 37 f 42 58 62 19 52 7d 7d 9 39 c 72 19 13 15 6c 7c 35 c 6d 7b 19 5 76 15 78 9 7d 7d 70 11 58 50 31 15 18 77 71 57 35 5d 6b 15 3 5 38 29 71 47 70 23 5d 13 38 5c 26 51 3d 25 33 48 55 56 75 48 57 66 2d 46 2 1d 2e 6e 4b 5a 27 76 3b 12 a 6b 49 7e 24 1b 61 1e 7e 3e 1c 48 5 3c 6b 1f 4d 21 3f 53 1c a 29 71 9 5a 32 26 3e 42 10 67 12 30 7d 57 26 9 33 7b 44 5d 47 28 28 56 5b 32 34 51 43 8 3a 37 56 5f 71 61 2b 4 5b 76 19 2c 6b 52 24 13 34 61 49 4b 45 3e 3c 14 0 2a 7a 5e 1e 53 20 3e 49 12 3b 3b 32 49 59 21 5c 37 72 5d 3c 45 35 3c 17 26 59 72 3c 15 4b 54 79 30 52 5b 2a 34 5e 59 5f 7b 79 1a 5c 3b 2f 70 49 d 72 1b 2d 73 1f 3b 6 3f 69 48 a 58 2c 36 4a 5 2a 6a 4b 43 42 6d 63 2 1c 2e 25 3c 4d d 67 5a 6b 35 59 6d 15 79 74 5 41 1a 25 63 0 58 23 68 57 5 17 39 60 55 48 20 7b 1 5b 4e 75 54 3d 36 76 3a 55 56 3b 5c 52 5f 3b 7f 39 4e 3a 4a 53 4b 1e 3d 6b 55 24 34 6a 43 5 e 75 58 60 78 34 6c 12 46 32 2 19 2 66 71 27 5c 39 43 15 e 14 2f 60 f 63 74 70 c 15 14 67 7 7c 69 2c 66 e 4b 61 15 7 46 7d 34 39 2 66 4d 3 19 14 70 39 19 28 70 63 8 b 4d 71 4 3f 63 6d 62 51 1f 34 51 2 e 71 67 7b 18 64 1f 17 14 9 71 77 1f 77 37 66 2 15 3 70 45 61 31 39 35 5 51 6b 41 45 54 29 35 3a 4b 20 54 54 5f 50 6b 7f 19 3c 31 32 5f 57 1e 77 59 7a 3d 2c 77 1e 44 77 5a 49 12 2d 60 36 57 26 16 51 5e 14 23 2a 4d 7f 22 7d 17 1a 4d 6d 4b 38 65 7f 3a 1d 17 3d 18 31 5f 77 7f 7a 52 5f 14 7f 0 1a 26 64 54 61 11 7f e 1a 44 27 7c 21 5 2e 6c 55 42 36 1 67 d 62 62 29 16 b 5a 6a 17 6 36 63 53 29 4a 6e 4a 1 1a 73 38 7f 18 39 72 17 5c 65 b 70 52 7f 31 29 16 19 5b 7d 5f 53 7f 7f 9 3c 18 3c 1c 54 1a 7b 5b 77 35 7d 24 1a 5d 68 50 46 66 3b 46 32 7 6a 56 3 5a 28 27 2d 54 22 23 49 4e 27 d 36 4a 6a 25 2a 7 44 44 64 1a 4c 60 75 40 22 16 21 47 44 1 28 64 6e 10 67 30 8 47 78 6 75 5f 26 3a 22 16 18 4d 6b 47 5e 61 28 4 63 4b 2e e 4f 46 24 2e 31 e 6a 20 57
diff --git a/puzzles/crypto/220/key b/puzzles/crypto/220/key
deleted file mode 100644
index de2bb17..0000000
--- a/puzzles/crypto/220/key
+++ /dev/null
@@ -1 +0,0 @@
-open meadows
diff --git a/puzzles/crypto/220cbc.py b/puzzles/crypto/220cbc.py
deleted file mode 100644
index acf0e0b..0000000
--- a/puzzles/crypto/220cbc.py
+++ /dev/null
@@ -1,15 +0,0 @@
-
-import cbc, crypto
-from transform import transform
-
-alice = b"""You know, I just realized it's kind of smug for us to be talking about how easy or difficult these puzzles are we we're making them rather than solving them. We've tried really hard to make them so that you don't have to follow some specific thread of logic to get to the correct answer; you just have to puzzle out the mechanism involved."""
-bob = b"""The next crypto function is something simple, but new. Here, have some more Lovecraft again: Ammi shewed them the back door and the path up through the fields to the ten-acre pasture. They walked and stumbled as in a dream, and did not dare look back till they were far away on the high ground. They were glad of the path, for they could not have gone the front way, by that well. It was bad enough passing the glowing barn and sheds, and those shining orchard trees with their gnarled, fiendish contours; but thank heaven the branches did their worst twisting high up. The moon went under some very black clouds as they crossed the rustic bridge over Chapman's Brook, and it was blind groping from there to the open meadows. open meadows """
-
-IV = b'ahiru'
-keyE = [2, 4, 0, 1, 3]
-keyD = [2, 3, 0, 4, 1]
-
-encode = lambda t : cbc.cipherBlockChainingE(keyE, IV, transform, t)
-decode = lambda t : cbc.cipherBlockChainingD(keyD, IV, transform, t)
-
-crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/230/index.mdwn b/puzzles/crypto/230/index.mdwn
deleted file mode 100644
index 3ecd630..0000000
--- a/puzzles/crypto/230/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
Alice
d3 d 1f 7 df 59 a2 c1 aa 1 c3 4b 69 4c a8 6a ab 3 ef 4c a 46 a2 87 b4 a7 e3 5d 69 53 21 80 f7 8 c7 ca 25 5d e8 8f 6b c7 b5 48 71 c1 6f 50 a8 e1 64 f7 e4 88 93 f7 8d 9e 24 3e 39 1a 39 c8 d2 d5 98 dc 28 79 5d 1b 6e d7 b ef 9e a 39 86 7c 17 a4 a2 6e c1 b5 29 86 11 51 31 b 3b bb d0 4 fa f 9d 2c aa 9d a6 38 f6 84 63 53 a7 71 5a ca b5 3b b7 ee 71 53 d1 79 8f 2 b5 6f f7 2a e2 5a e 89 c2 89 e8 f6 11 57 29 8d 82 98 d8 c9 67 62 76 59 69 5 c2 f9 d7 cb cc 9c 3f 58 6f 2c 74 c9 d9 e c c2 3 19 ba ab 71 aa aa 94 8d ef 46 4f 74 3 67 d1 e2 13 e5 16 66 38 f5 50 e9 b4 b 42 a7 25 73 dc bd 94 b b5 51 52 30 f3 7b a2 a0 7 49 b2 76 96 fb b8 62 b6 39 9b 24 c6 1f 1b 38 d4 6f ac be 18 29 bd 7d 90 f8 b 1c f1 25 99 e9 dc 79 c4 31 94 1c a 6d dc 33 dc a7 2 72 de 1c 2b af 4 45 81 b9 4e a6 f3 5d 79 1a 4f 64 83 f8 af ee 0 65 7d 5b 8d b6 cb 9 f4 73 26 66 a7 80 d5 d2 f2 42 31 69 45 79 d1 1f cf f3 f7 54 c1 7c 9e 87 d1 71 dc 37 11 50 1a 7b db 9a 90 b9 e2 7f 5e 24 4d 99 e5 df c1 eb 7f 89 42 62 80 a1 7 d3 f5 23 55 ad 15 54 d3 c2 4f 94 d9 35 60 fe 54 6d df b 26 de 2 6f 81 d6 2 90 0 20 72 ec 50 c3 d3 e1 8b 90 74 76 92 6d 27 1d 4 23 8 7 ab ac c2 aa e7 45 4b 73 8e 81 e0 e9 e1 27 16 95 4b 43 ca 98 33 ad e3 51 1f d4 48 89 97 ab 7c f3 2c 59 3f 15 55 a1 dc ba f7 c3 48 57 7a 9e 73 c5 c2 fe 3d d5 77 6d 8d 1f 7e 0 5 6d b4 19 bc aa 5 53 b9 90 8e ac ff 4e 2c 2d 4d 9d b2 cd cd ad 36 59 68 43 44 d8 c2 c8 d0 d0 6a 65 63 59 58 1e cb 14 d9 98 aa 64 fc 53 17 5f e 52 95 bf fa f2 fe 1c 3b 5a 9c 93 a8 fb ef 3b 20 40 3b 9d d4 0 e5 c9 32 69 bd 4b 5d da c 67 eb d4 7f a4 1d 72 50 d5 84 aa fd de 73 6f 27 7b 57 5 e1 c2 e1 97 b2 92 77 8b 24 92 35 e5 24 ca 39 1b 93 cd 2a d3 b6 20 13 c2 7c 5d cf d5 6d 12 83 45 43 8 f2 32 ec ee a6 52 c0 8d 71 42 bc 20 55 e2 d0 9c c8 f0 46 58 3f 6c 50 d2 d9 dd cc f3 5c 19 7c 68 99 df 9d dc 1d 33 50 1e 79 c3 c9 d8 9f f 25 47 50 1a f1 ce fd d8 9f 85 43 27 51 1a 39 ea 9 e6 aa d8 98 b4 86 86 38 3f 5a 26 66 d1 a2 eb a 5 65 59 98 a6 a0 3 bf 6 4f 32 a6 4f ad c3 f2 53 ea 5b 6d 32 f2 4e fb e1 bd 9f ee 92 71 3a 41 88 39 f0 c8 a3 20 a4 30 6c 42 d6 43 b4 cc ec 7f f9 74 69 9a 1e 99 b4 4 1 b0 37 23 ab b1 90 d3 cc 39 93 3 72 66 c0 75 be 19 9 52 6 62 b7 aa 92 a7 13 5a 31 5c 89 d6 eb f7 e8 23 75 55 8b 8d d0 7 bf 24 2b 30 b5 59 c7 b c9 54 f7 64 a3 6c ea 8c c4 4c 2 4e 38 6c ed b6 b2 d4 f 80 46 59 69 9d 15 eb ec 1a 43 9d 82 80 be a5 15 25 24 66 3a a1 ca c8 11 a2 4d 75 28 a2 49 d9 d7 dc 4a ec 50 67 3c f4 73 d3 2 d1 5c 9 5c b7 70 f6 93 9c 45 18 9d 55 2e ea bf 3b 9f e 6d 56 de 1a ee 7 f9 7a de 82 a8 9a 13 5d 26 88 38 b2 c2 cd 68 df 24 26 64 6 6c d0 c9 a b2 cc 73 43 ea 46 64 1e a5 79 ee b ba 4e e 8d b1 9a d8 af 23 23 1 67 8f cc cb e3 5 2a 41 64 91 a4 be e8 d 1 84 4d 89 f3 b7 2b d9 2c 61 56 d 6a c4 4 fa 9f f 76 b3 9c 18 ef 1e 5e 31 d8 86 b2 f6 e4 6d 12 55 84 9e 8 96 b7 26 34 a7 13 5b c6 1a 89 b2 f7 66 fa 11 40 98 d 5a ab e8 3b bf ba 38 7c cb 5a 5b b5 f9 67 ba 85 35 78 17 99 2c c6 f9 ae 7f a1 5a 76 5a a1 4b c1 b6 f2 40 f1 27 45 99 eb 61 9 d6 36 8a c 83 5e a1 24 b5 65 d8 44 c7 59 f 61 a4 7b f0 9c 4 88 dd 61 16 a8 33 3 1f 9f 88 c0 ae b3 14 68 64 47 4c 9e c8 7 e0 f7 19 66 e9 9b 89 9a 8 4b 31 23 1 e8 fd a3 c2 a6 8d 5f 4b 70 4f 20 81 fc 18 ea c3 2b 5c b4 86 66 d fd 4e 25 7 bb 23 c7 b3 a6 4d ca 75 3a 35 fe 2e e7 bb c7 8c c7 9f 7d 6f 2f 65 41 f2 7 c0 17 a3 7d a9 74 b8 8d f 41 13 98 6 a4 d8 ff 78 d1 30 18 88 1f 62 f0 92 3f ac 1e 30 13 e1 51 b3 bc 9c 94 e5 9d 22 29 20 4b 3d b3 bd 0 ee dd 4e 7d a5 87 73 e7 8 59 69 e4 87 e8 f6 1c 9e 69 8d 99 b2 2a 7 6d 36 40 a 91 8 d9 fa b1 1 9b 39 5e 30 91 1f 1b fc df 16 9e ae 91 7a da 3f 45 3c 1d 1e cd e0 a1 b2 9f 63 8b 56 59 1d c3 1 c2 f8 af 23 a2 73 9c 40 b6 50 a1 44 e7 38 f4 87 f1 8f bd 85 69 8f 29 3c 33 cf 5 c7 b5 c0 31 ab 6a 46 74 17 57 d ef 1a a5 b9 81 8a b9 4d 58 11 1e 9b e0 f7 a6 aa 7d 95 8d 31 46 13 7b 23 c4 d4 b8 dd c9 6d 63 56 3 47 b 6 e4 aa a9 a6 a8 44 22 43 45 88 f5 c9 f1 ef 64 57 67 9c 31 c f6 14 44 a1 a9 80 b7 fe 87 4b 27 56 90 69 da d2 c1 2c c 1a 60 68 d5 a4 ae c0 1d 44 4e 4d 67 f5 ac
-
Bob
d4 5 4 a2 df 5d ae ea 86 1 4 41 61 67 b7 a8 a1 11 6 52 4c 81 a7 b2 c5 c1 5b 89 8a 39 16 ab 7b 7c 14 d8 8b f1 14 b3 18 20 94 b3 9d ac c8 3f 40 47 38 61 d2 eb a9 b7 f2 32 4c 58 46 73 c4 ef ea d1 fd 65 51 66 54 73 3 e5 11 d8 0 e4 4d f3 18 b3 8d e0 9e d8 3e 22 96 5 18 ca c9 32 b3 d8 5e 66 16 59 43 dd b b6 c4 9f 1d ed 27 63 2c a9 4f c8 f c 28 ff 65 a9 93 c5 21 17 43 1a 25 cb 82 f1 9a b6 2d 30 98 2f 33 f c9 33 c5 b7 e5 2f d2 6d 33 47 dd 7a 8 c1 e2 3 e5 9e 64 42 bb 8c 16 8 e9 46 1 da 9f 80 f6 ab 1e 1b 27 95 25 c2 ac c8 3e c3 57 8c 7c da 62 e5 6c 12 7b c2 84 f4 b9 dd 6a 2b 87 9b 78 e4 b2 15 7d 1d 93 4a db df cf 5 d1 69 7a 31 ac 65 c da db 57 f9 a7 3a 7b fe 8d 35 d7 c 26 2e b9 72 a6 df f2 4e 1a 45 77 79 ae ae f3 12 bf 3a 5c 9a b9 4c fa f1 3a 5e dc 7f 53 dc c1 56 b f2 71 7f c1 a8 95 e3 1d 58 84 77 86 bd dc 64 0 32 58 52 1 e0 ca f0 dd af 40 68 82 56 40 ed 4 29 e6 d3 4f b0 a5 71 50 e4 5c 40 b7 e7 8f e8 e8 38 72 3d 48 97 b2 f7 d1 a8 1 35 81 78 4a ae fb 22 1b c1 4b 75 b6 fd 7b ed f0 76 9a 19 8c 62 2 7a ba 2a c6 91 11 54 ce 51 16 bb e0 20 97 b9 57 40 dc 1 3c b9 e9 7b 91 c8 57 8c b 57 5b fd 25 85 d6 e8 5f d7 37 55 7a fa 39 de e9 ff 5a a1 41 7d 72 eb 93 a3 fc fc 88 3e 4e 76 88 68 a1 e0 f6 68 1a 52 8d 63 f1 f6 b6 3a e 85 9e 9a cb 81 10 1 32 29 67 9d ae c7 da ce 1e 43 6a 76 6d 9a a5 f 1b ff 2e 44 a8 86 8c e e6 5e 2b 25 aa 91 f0 d4 b 4f 27 9b 6e ab ee cd 39 19 8d 81 7d dc b5 53 2e 13 78 9f e3 cb a4 d8 5a 73 6c 48 7f fc f9 cc fd 1e 61 8d 69 8b b3 c3 24 7 6d 49 75 c7 e7 3 ec 10 29 88 a7 4c b9 bd 2d 46 f8 9b 37 c8 e2 61 6 c4 13 42 5 bd 50 d3 f6 b3 58 e5 56 56 56 ea 80 96 f9 fe 8e 60 20 98 63 31 f2 b4 78 13 a6 8b 78 d8 a9 56 12 b8 71 40 f2 99 78 12 e8 65 14 f6 b9 97 1e d4 75 4d 26 bd 5a f9 e4 c8 5a 9e 78 8a 6c ba 2e f0 31 cc 4b ca 79 a1 6d e9 51 fd 83 e2 80 db 78 30 46 22 52 f4 d9 f1 d4 db 34 6b 94 6e 56 b8 4 27 e7 de 41 e4 cb 82 50 e4 87 41 2a 90 88 28 fa a 19 29 c7 98 b8 9c c5 29 2e 59 15 63 da 0 dd c7 b 41 e0 72 6d af a3 8a e7 7 44 85 26 8e 97 e1 67 c7 23 1f 84 c9 6a dc 82 1d 27 ce 47 2c 99 9 68 e8 a2 1c a0 11 8e 49 ae 55 f7 2a ea 8e fd 98 a6 4e 22 94 35 4d 92 b6 3d 1b e3 1d 40 d8 fd 99 9b e5 6a 98 79 5d 63 18 3 19 c2 b f7 c0 b8 6c aa 95 6f 5b 6 39 77 9 fa 90 bc d9 83 88 1f 39 7f 65 23 ad f5 a1 ec d9 4c 79 48 93 79 c1 b9 e0 36 11 64 79 94 c4 b8 7 fd 74 73 54 ed 3d 17 e3 f0 33 c9 81 8a 50 a5 66 2f 31 ed 8b e ce c9 88 6d ad 63 64 37 b3 4c f 0 19 39 e9 81 a7 b5 b3 8c 27 8f 9f 1e 18 9 2a 34 c2 96 a6 a2 1c 60 13 47 45 ab f5 96 a9 ee 57 3b 17 49 99 ed b5 9e e9 2 57 47 16 88 ba b9 e4 97 26 9e 25 87 57 d7 3d c0 2f 97 78 d1 20 c9 12 1b 65 cc 2f 9d ab cb 6c b2 13 51 69 b 3a df b3 d 86 b2 1f 53 a8 2f 35 aa e0 53 11 be 4c 40 e0 86 35 e9 f4 88 31 bd 8e 54 3c db 3c 1a b4 db 68 fc 93 5b 7e 11 7b 1d fe 1e c1 bd c9 96 bd 23 33 65 39 22 ce f5 c ca 6 60 7e 98 2a a7 11 f7 1c a 47 86 8b dc be f1 2d 6d 55 55 90 ca 4 db f4 24 6d ad 55 58 4 14 45 d1 b8 a0 85 e0 62 98 52 2a 74 c2 3a e0 cd fe 65 1a 96 68 73 f1 bc 25 c b5 75 4e c0 b7 38 6 ae 67 4d f8 a8 49 0 ef 8c 86 ab cf 65 6c 2b 5e 7c 13 cc c9 fd dc a9 64 60 8e 3c 26 c 9 2f d4 e a9 ac ca 64 87 8f 38 62 7 69 2f b7 10 a6 0 c8 39 b7 54 bd 28 b8 40 fb 4c 4 78 e6 94 c6 e4 f7 8a 30 2e 6b 7a 29 df 16 dd f3 cc 73 bf 58 33 64 16 54 98 bd 3 a0 f3 2e 7d b9 51 61 ce bd 4f ff c 65 7d e0 9f f4 4 f3 9b 2d 64 93 7d 3c 13 14 1a bd ce ba b9 9d 31 62 4f 9b 1d c3 f e6 45 af 6b aa 4a fe 3d f9 4d e4 9b b8 39 eb 8b 22 4d f7 4d 4e d1 e0 7e a3 b2 6e 88 f1 50 59 d6 20 74 f3 c3 3e c8 f5 80 25 a4 53 70 2e b 4f 95 fc c9 81 c5 1f 79 2b 30 70 9e fc db 10 1e 17 8e 3d af 85 9a 1c ce 85 6f 15 af 2e 37 9 90 8f c3 df af 2f 6f 6c 77 4a f1 f8 4 18 aa 86 8c af b4 4e 6a 1e 4a 5f f1 5 90 fb b5 53 ae 22 5d 46 c5 47 2 f8 f0 60 db e2 8c 97 14 50 71 6c 38 b2 90 5 4 a3 92 25 91 b6 46 4 c6 14 96 e6 af 41 a7 6f 4a 56 d1 43 d1 e6 fd 17 e7 70 94 98 a4 47 4 3d 78 40 e8 e4 cf 10 ef 7b 44 73 bf 8c fa f3 0 5a 6c 72 9a b5 ba 4 fd 31 4a 21 e4 74 c2 ae d2 8d b4 6c 4d 7d 1 74 18 eb 18 e7 fb a8 92 be 49 7d 43 39 52 d3 e a5 d8 c4 59 ee 53 70 63 9f 7a e3 17 1f 1e f6 91 b6 85 c2 84 3e 59 23 57 64 a1 ed d4 e6 a 47 53 9f 74 a1 f1 f6 32 be 6b 67 62 d9 4c e c9 1b 78 c1 ee 66 bb e5 64 4e 9 9d 99 d ef af 43 3e 9d 8a 5f a5 ca 1b 2f 81 53 6d 99 c3 32 b5 14 19 67 12 47 84 ad 8 a9 e0 34 73 9c 43 8b 1c b 1d f1 29 bb 96 ae 5f f 51 2 4f ed f1 ed a5 e1 4f 86 9b 39 80 e6 27 3d b3 60 93 d1 d8 47 5 75 6b 70 e6 e5 19 9 13 7b 71 bc b3 fd f5 f4 5f 49 9f 3b 7d ec af 33 b4 a 59 91 d3 47 9e bb 27 7e e8 2e 59 c6 a6 8d cb f8 7b 4d 2f 2b 8c 14 b7 be b8 2b f4 26 4e 78 ca 9e c2 92 f9 2a 30 69 2b 39 d8 a1 8 b1 f9 71 40 85 77 75 10 ef 23 b9 f6 a7 63 df 30 78 40 c5 7b b7 a a0 77 1c 40 ab 52 15 c4 d4 43 f9 fb 79 5d d6 8f 95 d9 83 82 3f 34 7a 2a 11 e1 dd e4 e a5 8b 78 4c a7 49 31 d8 ed 4f ec 13 7d 94 e7 4c a0 f 7 8d e0 80 b3 a2 53 86 31 4a 54 d9 66 d0 e9 c7 43 f5 64 4f 7d ed 70 c4 f8 18 88 f4 79 58 b9 12 34 18 b8 55 99 c0 af 4e c5 10 6e 48 b2 72 9f 2 ec 59 0 17 a7 61 ee f4 d9 46 11 8e 5c 6e e9 bc 2d 84 7 8f 9c df 34 a6 22 7c 68 a7 4e ce dc c 48 dd 6c 68 a0 f7 52 ff c8 4c 66 dc 78 6f c2 ce 5f e a 6c 36 e8 a6 b1 6 1e 80 47 5f a0 c6 14 ef fa 80 76 9d 83 96 31 3 12 63 39 c5 ae d6 5 d7 6e 43 56 a0 75 d2 ef df 32 d7 6a 89 5e f2 7b 11 6 82 80 1e a6 ad 10 16 b3 51 21 c2 d6 29 ff cc 6c 16 df 99 6b cc 92 7e 2d 0 2c 25 13 c6 ac a1 5 a4 71 40 33 e5 46 14 a0 b0 70 f2 f4 4c 21 7 9c 54 f7 b1 a3 7c e0 61 34 83 1e 8c 0 c9 17 bd 28 e0 67 92 5c dc 88 c9 25 f7 70 2c 2f b6 9d b c3 b3 33 31 ed 6f 36 c1 13 91 a be 6e a4 77 a8 36 fb 43 d9 21 b9 8f e6 6d d2 7f 18 8e 6 63 fe d8 3f b5 13 78 59 dc 50 fd f1 d0 70 fc 27 7c 59 2 92 c8 f2 99 b6 3e 77 36 2a 5f c9 d9 b9 c4 fd 2f 75 30 54 8f c5 10 f0 dd 23 2b ac 78 58 5 d8 5b fa 96 e7 9f ff 62 56 95 39 9a c6 e5 30 de 28 65 71 c5 2 c9 5 b1 73 ae 74 eb 42 9 5c 1f 8b e5 ac bc 85 2e 7c 21 9c 32 c9 f0 cf 7c d0 6c 30 60 16 7f cc c7 b a6 19 2c 53 a5 45 fb c8 d6 40 fb 25 5d 16 f5 62 ce d1 93 83 17 3f 17 1c 2f b6 e1 a0 95 dd 22 43 34 1d 78 6 f5 a3 99 1c a5 65 85 15 b5 59 0 6b 9a 55 bf b1 9 1e b7 50 52 ac 9f 5b bc b2 33 11 c1 9c 5d a1 9d 23 28 ff 44 5d ce d7 94 d0 d8 7c 72 7c 41 5e dc 6 16 e8 d3 7f ae fe 73 52 f 5e 9e a3 92 7 f 3e 4a 1c e9 ca e6 c3 99 89 42 4e 6e 17 3f f3 b6 fe 9f da 55 26 79 13 76 ea e f8 9d 12 4e b8 7f 11 b9 c3 98 d 9e 9b 70 37 81 28 3e f 19 29 c7 cc f1 b7 c7 62 2c 61 52 50 c2 de 4 e3 db 50 68 ad 8a 6f 90 1c 4b 31 fa 50 a8 e4 a7 62 90 47 87 89 fa 18 e2 69 3b 7a 99 83 c e5 f3 18 30 ec 80 8b 91 dc 46 60 21 19 7b c1 c0 bb 96 19 6b 20 3a 13 fb e1 c8 b5 a0 5d 88 6e 7b 21 f1 25 e fe cc 5f b b1 70 68 81 af 5c f5 9 34 5c fb 3b 9d dc c3 91 fd 14 71 25 30 23 a2 14 d9 cb 5 4d b8 43 35 97 e2 51 f3 1f 17 77 ff 61 c1 98 f1 21 1a 68 2c 72 cb fe c cf f5 6e 90 a8 5c 35 e9 70 24 d4 ba 9c 19 d4 60 7a 28 b7 73 c0 ff de 22 e1 20 72 6d d7 9f 0 f0 8 39 34 91 7d af d3 a4 18 f3 48 35 5d 90 7a ed a3 87 19 8 8c 53 2d 98 a5 1 b5 cf 1f 41 e3 46 69 9a d2 95 e5 e5 1 56 77 97 8a e7 d5 e1 2 2e 85 67 84 ac 16 17 f 36 45 ad 90 a7 16 ea 48 2 33 a5 98 e3 a9 c0 8d 78 79 47 65 6f 1a 18 ee 0 d1 fe ba 86 a1 62 8e 21 26 81 a 2d c0 b6 29 ea 13 7d 35 cc 89 ba 1b fb 58 26 9e be 62 98 d0 3d 54 fd 58 41 df f0 23 d9 f1 7d 50 b9 51 94 1c ec 4d d8 39 83 80 a7 18 d8 33 2c 89 b1 38 c4 cd 29 35 df 7a 68 b3 f5 79 1b e1 75 7c f fd 8b f4 f8 f1 62 2c 7f 7d 53 d c2 d f2 b5 bf 6a a8 32 55 50 e 45 be fa e6 b5 ab 31 9c 4a 5c 8d a1 2b f8 ff 1f 40 c7 58 91 9e ef 79 f4 3c 50 4f ef 9c db c2 af 66 7c 68 65 38 c6 8 0 4 cc 26 ac a3 9a 67 6 5d 4e 2f f3 b3 fc c4 cd 33 49 63 6a 6e bf ec c5 f 8 7f 8d 6f aa aa c 6f 12 4c 32 ec 1c 82 ed c6 89 b1 66 95 6f 1b 93 d 34 fc 9e 1 ad 18 3c 1f b1 4f f8 a1 9a 50 fc 67 4b 5a e4 95 c9 dc d5 8a 37 74 52 15 2d c5 dc d5 9b d4 77 7c 5c 15 75 d9 e6 df a6 1c 43 8d 6c 86 b7 f9 6 cc 29 40 99 ee 6f c5 e4 3c 64 b1 68 9f d1 10 34 fa 26 1 f0 83 8e 6 ba 93 10 6e ad 5b 23 82 7 45 fc d 1b af e0 96 f7 b6 8f 95 39 80 7a 26 23 1b 60 f8 b3 d9 fd 1d 70 32 7f 96 aa b0 be a 24 43 3b 3a ea cb f1 cc bb 95 78 53 58 33 30 e fe 9a f3 a4 aa 65 5e 87 56 51 0 d3 67 f3 e5 af 64 c7 89 8e 40 c4 53 23 29 ed 51 df da b 57 d0 51 7e ed ed 58 d4 19 61 57 ec 66 ac 11 c4 61 c6 5d b4 7e 4 26 eb 5d 13 e4 c4 82 fe fd 86 6b 30 22 64 28 f2 10 ce 3 cf 7e a4 6a ba 11 d0 43 e3 9a b4 5e e4 91 5 3e da 44 2a aa b7 5e aa e 6 21 db 58 ad ee ba 5a ed 93 9a 3b d5 4f 2 31 b8 5d b1 b7 d8 34 d8 21 54 47 f4 51 d1 b4 fd 7c d4 33 50 9c f7 14 d2 fc 30 76 ad 63 5c d2 f5 39 14 ff 79 7d f9 a0 99 e4 f0 35 80 38 8a 74 f5 34 d0 31 b4 73 d8 41 a6 4a b3 71 e0 5f ae 47 1e 91 81 23 e8 b8 2b 63 b4 81 4c c5 cd 40 29 eb 2b 6b e7 c7 80 d e 88 54 35 f3 b1 2a d0 17 62 50 a2 64 be c f9 37 c4 53 ae 5b a2 6a f7 49 ff 4d fe 92 af 8e e8 7f 20 5c 76 89 f9 0 f8 1d 2e 78 bb 5a c7
diff --git a/puzzles/crypto/230/key b/puzzles/crypto/230/key
deleted file mode 100644
index b765c05..0000000
--- a/puzzles/crypto/230/key
+++ /dev/null
@@ -1 +0,0 @@
-quavering tendrils
diff --git a/puzzles/crypto/230cbc.py b/puzzles/crypto/230cbc.py
deleted file mode 100644
index 78afd30..0000000
--- a/puzzles/crypto/230cbc.py
+++ /dev/null
@@ -1,38 +0,0 @@
-
-import cbc, crypto
-import diffie
-
-alice = """Lets do a diffie hellman key exchange, Bob. The next puzzle will be encrypted using CBC and sha512(.) ^ text as the cipher function,
-and an IV of 0xaa 64 times. The prime is: %d, mod: %d, and I chose %d. Also, have some more Lovecraft: Too awed even to hint theories, the seven shaking men trudged back toward Arkham by the north road. Ammi was worse than his fellows, and begged them to see him inside his own kitchen, instead of keeping straight on to town. He did not wish to cross the nighted, wind-whipped woods alone to his home on the main road. For he had had an added shock that the others were spared, and was crushed forever with a brooding fear he dared not even mention for many years to come. As the rest of the watchers on that tempestuous hill had stolidly set their faces toward the road, Ammi had looked back an instant at the shadowed valley of desolation so lately sheltering his ill-starred friend. And from that stricken, far-away spot he had seen something feebly rise, only to sink down again upon the place from which the great shapeless horror had shot into the sky. It was just a colour—but not any colour of our earth or heavens. And because Ammi recognised that colour, and knew that this last faint remnant must still lurk down there in the well, he has never been quite right since. """ % \
-(diffie.prime, diffie.mod, diffie.a)
-bob = """Umm, ok. You'll need this: %d. The key this time is 'quavering tendrils'. Some more text to decode: West of Arkham the hills rise wild, and there are valleys with deep woods that no axe has ever cut. There are dark narrow glens where the trees slope fantastically, and where thin brooklets trickle without ever having caught the glint of sunlight. On the gentler slopes there are farms, ancient and rocky, with squat, moss-coated cottages brooding eternally over old New England secrets in the lee of great ledges; but these are all vacant now, the wide chimneys crumbling and the shingled sides bulging perilously beneath low gambrel roofs.
-The old folk have gone away, and foreigners do not like to live there. French-Canadians have tried it, Italians have tried it, and the Poles have come and departed. It is not because of anything that can be seen or heard or handled, but because of something that is imagined. The place is not good for the imagination, and does not bring restful dreams at night. It must be this which keeps the foreigners away, for old Ammi Pierce has never told them of anything he recalls from the strange days. Ammi, whose head has been a little queer for years, is the only one who still remains, or who ever talks of the strange days; and he dares to do this because his house is so near the open fields and the travelled roads around Arkham.
-There was once a road over the hills and through the valleys, that ran straight where the blasted heath is now; but people ceased to use it and a new road was laid curving far toward the south. Traces of the old one can still be found amidst the weeds of a returning wilderness, and some of them will doubtless linger even when half the hollows are flooded for the new reservoir. Then the dark woods will be cut down and the blasted heath will slumber far below blue waters whose surface will mirror the sky and ripple in the sun. And the secrets of the strange days will be one with the deep’s secrets; one with the hidden lore of old ocean, and all the mystery of primal earth.
-When I went into the hills and vales to survey for the new reservoir they told me the place was evil. They told me this in Arkham, and because that is a very old town full of witch legends I thought the evil must be something which grandams had whispered to children through centuries. The name “blasted heath” seemed to me very odd and theatrical, and I wondered how it had come into the folklore of a Puritan people. Then I saw that dark westward tangle of glens and slopes for myself, and ceased to wonder at anything besides its own elder mystery. It was morning when I saw it, but shadow lurked always there. The trees grew too thickly, and their trunks were too big for any healthy New England wood. There was too much silence in the dim alleys between them, and the floor was too soft with the dank moss and mattings of infinite years of decay. """ % \
-(diffie.B,)
-
-alice = crypto.strip(alice)
-bob = crypto.strip(bob)
-
-def Ce(text, key):
- out = bytearray()
- for i in range(len(text)):
- out.append( ( (text[i] + key[i]) % 256) ^ key[i] )
-
- return bytes(out)
-
-def Cd(text, key):
- out = bytearray()
- for i in range(len(text)):
- out.append( ( (text[i] ^ key[i]) - key[i]) % 256 )
-
- return bytes(out)
-
-IV = b'ahiru'
-key = b'space'
-
-encode = lambda t : cbc.cipherBlockChainingE(key, IV, Ce, t)
-decode = lambda t : cbc.cipherBlockChainingD(key, IV, Cd, t)
-
-if __name__ == '__main__':
- crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat)
diff --git a/puzzles/crypto/240/index.mdwn b/puzzles/crypto/240/index.mdwn
deleted file mode 100644
index 1abd607..0000000
--- a/puzzles/crypto/240/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-
Alice
e3 75 ff 47 8e 96 a3 b 46 47 76 af a9 4 d6 13 99 65 79 d7 bd 3f 3a 5e f1 c4 29 f5 c 45 74 77 b6 84 4c dd 9 38 9c f6 bf a6 d6 ef 11 b5 22 b7 f7 b7 2 65 6b 84 7 3e 76 68 e3 d6 9b 3e 8a 95 92 a1 e6 a6 f9 a0 e4 ae aa a8 ab bd ef fe b3 b2 b5 f0 b6 ae ee f0 e5 c3 ed ab e1 ef ee de b6 a0 f3 ec a2 a2 aa a9 a0 ae aa f8 fe a8 b7 aa aa ab bb f8 bb e2 b1 b0 ed b2 e7 ee f9 b7 ac a0 bc a4
-
Bob
bb 29 86 18 a7 e0 a6 33 ec bc df 73 3e b5 dc 76 66 6d 74 68 30 81 9b 42 a1 41 ac 3b ee ab 3d ae d4 ae d0 33 d9 11 1 e4 57 3f 61 14 9b e2 85 f5 89 e0 cf 94 d8 56 71 a ec 99 7a 5d 4 7e 68 93
diff --git a/puzzles/crypto/240/key b/puzzles/crypto/240/key
deleted file mode 100644
index acc5b82..0000000
--- a/puzzles/crypto/240/key
+++ /dev/null
@@ -1 +0,0 @@
-in the same vein
diff --git a/puzzles/crypto/240diffie.py b/puzzles/crypto/240diffie.py
deleted file mode 100644
index 0120525..0000000
--- a/puzzles/crypto/240diffie.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import crypto
-import cbc
-import diffie
-import hashlib
-
-IV = [0xaa]*64
-aliceKey = hashlib.sha512(bytes('alice.%d' % diffie.key, 'utf-8')).digest()
-bobKey = hashlib.sha512(bytes('bob.%d' % diffie.key, 'utf-8')).digest()
-
-alice = b"""Only one more puzzle to go. They'll never get it though, since we use a one time pad. I need to add more text here to pad this."""
-bob = b"""I wouldn't be so sure of that. The key is: in the same vein """
-
-def C(text, key):
- out = bytearray()
- for i in range( len( text ) ):
- out.append(key[i] ^ text[i])
-
- return bytes(out)
-
-c = cbc.cipherBlockChainingE(aliceKey, IV, C, alice)
-print('
Alice
', crypto.hexFormat(c))
-assert cbc.cipherBlockChainingD(aliceKey, IV, C, c) == alice
-c = cbc.cipherBlockChainingE(bobKey, IV, C, bob)
-assert cbc.cipherBlockChainingD(bobKey, IV, C, c) == bob
-print('
f4 c9 40 41 ac 4b 9c 3f 32 58 2f 70 1c 49 fb bf a8 56 72 72 2 88 2c 87 cc d 13 6c 25 d5 da 30 64 dd dd b8 ba 58 c1 a3 17 26 6d ff 64 62 cb 69 b3 e2 ae 2d dd 11 2f a1 5d 79 b6 63 cb 51 5b de 9c 57 20 45 72 7b f2 35 15 40 60 8c 45 c9 a6 38 e0 79 7 a4 cc 18 e9 7e eb 4b 38 e2 ed 6b 17 a1 ee fd 69 2a 24 b5 21 be 96 92 d4 f6 5b 40 59 1d b f6 8a cb dd 6 43 16 6 f ab c8 4 fc b2 f3 c3 64 11 40 db 9e d6 7 f9 40 17 bd 2 1e cc b2 14 81 6a c1 6b b9 2c 6c ab 5f 7f
-
Bob
e9 d5 6 46 ac 52 92 38 32 5d 32 37 59 10 e3 af a8 46 72 6b 18 89 68 c2 c0 15 13 2f 3d 94 d0 2b 31 9e db ae ea 5f c1 ef 11 36 37 e4 66 7e 9e 21 99 e3 a7 6a ce 13 2f a1 50 74 ae 73 84 5b 41 96 da 1e a 10 76 60 a2 39 5b 19 6e d9 1 da ba 75 ac 71 1b b5 89 1e a1 7e f3 b 36 ab a3 6b 43 e9 ab fd 23 75 68 f6 68 b3 c8 dc 81 ae b 18 44 4f 50 eb aa cb d5 6 4f 16 a 49 b0 d2 41 df bb 93 cd 7d d 42 c6 cc 8d 1a b0 f 43 f6 46 52 8d bf 5d c5 21 8a 22 fa 79 20 ff 6 71
diff --git a/puzzles/crypto/400/key b/puzzles/crypto/400/key
deleted file mode 100644
index 0abb17e..0000000
--- a/puzzles/crypto/400/key
+++ /dev/null
@@ -1 +0,0 @@
---------========Thanks for Pl@y|ng========--------
diff --git a/puzzles/crypto/400onetimepad.py b/puzzles/crypto/400onetimepad.py
deleted file mode 100644
index a9a589b..0000000
--- a/puzzles/crypto/400onetimepad.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import crypto
-import random
-
-def mkPad(length):
- pad = bytearray()
- for i in range(length):
- pad.append( random.randint(0,255) )
- return bytes(pad)
-
-alice = b'That was it, you solved the last crypto puzzle! Congratulations. I hope you realize that, in the grand scheme of things, these were of trivial difficulty.'
-bob = b"It's not like we could expect you to solve anything actually difficult in a day, after all. --------========Thanks for Pl@y|ng========-------- "
-
-assert len(alice) == len(bob)
-key = mkPad(len(alice))
-
-def encode(text):
- out = bytearray()
- for i in range(len(text)):
- out.append(key[i] ^ text[i])
- return bytes(out)
-
-crypto.mkIndex(encode, encode, alice, bob, crypto.hexFormat)
-
diff --git a/puzzles/crypto/cbc.py b/puzzles/crypto/cbc.py
deleted file mode 100644
index d63f3d1..0000000
--- a/puzzles/crypto/cbc.py
+++ /dev/null
@@ -1,52 +0,0 @@
-
-def cipherBlockChainingE(key, IV, C, text):
- """Cypher block chaining encryption. Works in blocks the size of IV.
-@param key: the key for the Cipher.
-@param IV: initialization vector (bytes object).
-@param C: the cypher function C(text, key).
-@param text: A bytes object of the text. The length of the text
- must be a multiple of the length of the IV.
-"""
- mod = len(text) % len(IV)
- assert mod == 0, 'The text length needs to be a multiple of the key '\
- 'length. %d of %d' % (mod, len(IV))
-
- feedback = IV
- block = len(IV)
- out = bytearray()
- while text:
- p, text = text[:block], text[block:]
-
- c = bytearray(block)
- for i in range(block):
- c[i] = p[i] ^ feedback[i]
-
- c2 = C(c, key)
- out.extend(c2)
- feedback = c2
-
- return bytes(out)
-
-def cipherBlockChainingD(key, IV, C, text):
- """Cipher block chaining decryption. Arguments are the same as for the
-encrypting function."""
- mod = len(text) % len(IV)
- assert mod == 0, 'The text length needs to be a multiple of the IV '\
- 'length. %d of %d' % (mod, len(IV))
-
- feedback = IV
- block = len(IV)
- out = bytearray()
- while text:
- c, text = text[:block], text[block:]
-
- p = C(c, key)
- p = bytearray(p)
- for i in range(block):
- p[i] = p[i] ^ feedback[i]
-
- out.extend(p)
- feedback = c
-
- return bytes(out)
-
diff --git a/puzzles/crypto/crypto.py b/puzzles/crypto/crypto.py
deleted file mode 100644
index 9f0f6f4..0000000
--- a/puzzles/crypto/crypto.py
+++ /dev/null
@@ -1,46 +0,0 @@
-def mkIndex(encode, decode, alice, bob,
- format=lambda s: str(s, 'utf-8')):
- """Write out the index.html contents.
-@param encode: function to encrypt the plaintext
-@param decode: function to decrypt the plaintext
-@param alice: plaintext of alice line
-@param bob: plaintext of bob line
-@param format: formatter for the cypher text, run out output of encode before
- printing. Does string conversion by default."""
- c = encode(alice)
- print('
Alice
', format(c))
- assert decode(c) == alice
- c = encode(bob)
- print('
Bob
', format(c), '
')
- assert decode(c) == bob
-
-def hexFormat(text):
- return groups(text, 5, '{0:x} ')
-
-def groups(text, perLine=5, format='{0:c}'):
- i = 0
- out = []
- while i < len(text):
- out.append(format.format(text[i]))
-
- if i % (perLine*5) == (perLine * 5 - 1):
- out.append(' ')
- elif i % 5 == 4:
- out.append(' ')
-
- i = i + 1
-
- return ''.join(out)
-
-def strip(text):
- """Strip any unicode from the given text, and return it as a bytes
- object."""
-
- b = bytearray()
- for t in text:
- if ord(t) > 255:
- t = ' '
-
- b.append(ord(t))
-
- return bytes(b)
diff --git a/puzzles/crypto/diffie.py b/puzzles/crypto/diffie.py
deleted file mode 100644
index 5f0bbba..0000000
--- a/puzzles/crypto/diffie.py
+++ /dev/null
@@ -1,8 +0,0 @@
-prime = 51237129793
-mod = 321454621
-a = 341
-A = prime ** a % mod
-b = 573
-B = prime ** b % mod
-key = A**b % mod
-assert B**a % mod == key, 'Bad diffie math.'
diff --git a/puzzles/crypto/transform.py b/puzzles/crypto/transform.py
deleted file mode 100644
index d9ffe1b..0000000
--- a/puzzles/crypto/transform.py
+++ /dev/null
@@ -1,13 +0,0 @@
-def transform(text, map):
- size = len(map)
- div = len(text) % size
- assert div == 0, 'Text must be a multiple of the key size in length. '\
- 'At %d out of %d' % (div, size)
-
- out = bytearray()
- i = 0
- while i < len(text):
- for j in range(size):
- out.append( text[i + map[j]] )
- i = i+size
- return bytes(out)
diff --git a/puzzles/forensics/10/index.html b/puzzles/forensics/10/index.html
deleted file mode 100755
index 5b442e2..0000000
--- a/puzzles/forensics/10/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-You have suspicions that a certain windows box has been infected by a Trojan. You have been given access to a memory image from this box.xp-laptop-2005-06-25.img Use the memory image to determine if the machine has been infected.
-
-In order to answer the questions:
-
- - Determine if the machine has been infected.
-
- - If it has not been infected, list "no" as your answer.
-
- - If it has been infected, list the process name of the Trojan
-
-HINT: You know from googling that the Trojan uses the passWD.log file.
-
diff --git a/puzzles/forensics/10/key b/puzzles/forensics/10/key
deleted file mode 100755
index 97d62ab..0000000
--- a/puzzles/forensics/10/key
+++ /dev/null
@@ -1 +0,0 @@
-lsass.exe
diff --git a/puzzles/forensics/100/index.html b/puzzles/forensics/100/index.html
deleted file mode 100755
index bd74257..0000000
--- a/puzzles/forensics/100/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-What is the method of attack?
-image file
\ No newline at end of file
diff --git a/puzzles/forensics/100/key b/puzzles/forensics/100/key
deleted file mode 100755
index 30383c8..0000000
--- a/puzzles/forensics/100/key
+++ /dev/null
@@ -1 +0,0 @@
-dll injection
\ No newline at end of file
diff --git a/puzzles/forensics/20/index.html b/puzzles/forensics/20/index.html
deleted file mode 100755
index 94c6203..0000000
--- a/puzzles/forensics/20/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-You are currently employed as a SW engineer at KELCY INC. One of your clients has informed you that $10,000 has been deducted from their accounts from an authorized user. They have delivered a software image for you to investigate. Determine if the machine has been compromised.
-
-In order to answer the questions:
-
- - Determine if the machine has been compromised.
-
- - If it has not been compromised, list "no" as your answer.
-
- - If it has been compromised, list the file name (with its extension) being used by the malicious software
-
-winxppro.vmem
-
-
diff --git a/puzzles/forensics/20/key b/puzzles/forensics/20/key
deleted file mode 100755
index 8c72a46..0000000
--- a/puzzles/forensics/20/key
+++ /dev/null
@@ -1 +0,0 @@
-klog.txt
diff --git a/puzzles/forensics/200/index.html b/puzzles/forensics/200/index.html
deleted file mode 100755
index e137f68..0000000
--- a/puzzles/forensics/200/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-What is the name of what was injected?
-image file
\ No newline at end of file
diff --git a/puzzles/forensics/200/key b/puzzles/forensics/200/key
deleted file mode 100755
index bda2bd0..0000000
--- a/puzzles/forensics/200/key
+++ /dev/null
@@ -1 +0,0 @@
-winsecur.dll
\ No newline at end of file
diff --git a/puzzles/forensics/250/index.html b/puzzles/forensics/250/index.html
deleted file mode 100755
index 9937b0b..0000000
--- a/puzzles/forensics/250/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-SA Dumas from the Albuquerque FBI Cyber Squad has alerted you that Antoniette Balls (Iranian postdoc with a username of "aballs@tipmeover.org") working at the lab has been in contact with Iranian Jihad organization. Find the code that she is transmitting to the Iranian Jihad Organization.
-AD database
-
-
-To: Help Desk,
-Subject: Here is the .dit file for the domain controller as requested. Let me know if you need anything else.
-
-Ask for Gary:
-505.452.6718
-505.280.8668
\ No newline at end of file
diff --git a/puzzles/forensics/250/key b/puzzles/forensics/250/key
deleted file mode 100755
index 3d9c36f..0000000
--- a/puzzles/forensics/250/key
+++ /dev/null
@@ -1 +0,0 @@
-Dirka Dirka
\ No newline at end of file
diff --git a/puzzles/forensics/400/index.html b/puzzles/forensics/400/index.html
deleted file mode 100755
index 39c5b98..0000000
--- a/puzzles/forensics/400/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-Determine which file has been winrared in this archive.
-
-
-In order to answer the questions:
-
- - List the file name (including extension) of the file that has been winrared
-
-image file
-rar file
-
-
diff --git a/puzzles/forensics/400/key b/puzzles/forensics/400/key
deleted file mode 100755
index 9ab5189..0000000
--- a/puzzles/forensics/400/key
+++ /dev/null
@@ -1 +0,0 @@
-avatar.txt
diff --git a/puzzles/forensics/50/index.html b/puzzles/forensics/50/index.html
deleted file mode 100755
index a79d0e8..0000000
--- a/puzzles/forensics/50/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-You know that a machine has been comprimised. There is a malicious piece of software that logs all key strokes from a computer's keyboard. Find the driver associated with the malicious piece of software.
-
-
-In order to answer the questions:
-
- - List the driver name with its full path
-
-winxppro.vmem
-
-
diff --git a/puzzles/forensics/50/key b/puzzles/forensics/50/key
deleted file mode 100755
index d4e3038..0000000
--- a/puzzles/forensics/50/key
+++ /dev/null
@@ -1 +0,0 @@
-C:\WINDOWS\system32\klog.sys
diff --git a/puzzles/hackme/100/index.mdwn b/puzzles/hackme/100/index.mdwn
deleted file mode 100644
index b99f752..0000000
--- a/puzzles/hackme/100/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-There is no key. It is impossible to score 100 points in this category.
diff --git a/puzzles/hackme/200/index.mdwn b/puzzles/hackme/200/index.mdwn
deleted file mode 100644
index b4b4218..0000000
--- a/puzzles/hackme/200/index.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-The key is "james". Should you claim your points immediately, though?
-Go ahead, watch what happens when you do.
-
diff --git a/puzzles/hackme/200/key b/puzzles/hackme/200/key
deleted file mode 100644
index dc065e0..0000000
--- a/puzzles/hackme/200/key
+++ /dev/null
@@ -1 +0,0 @@
-james
diff --git a/puzzles/hackme/274/index.mdwn b/puzzles/hackme/274/index.mdwn
deleted file mode 100644
index 72dd672..0000000
--- a/puzzles/hackme/274/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-So was it a good idea to claim your points as soon as possible?
-Watch the scoreboard.
diff --git a/puzzles/hackme/300/index.mdwn b/puzzles/hackme/300/index.mdwn
deleted file mode 100644
index bcb3c57..0000000
--- a/puzzles/hackme/300/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-You're going to have to work harder now.
diff --git a/puzzles/hackme/614/index.mdwn b/puzzles/hackme/614/index.mdwn
deleted file mode 100644
index dc065e0..0000000
--- a/puzzles/hackme/614/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-james
diff --git a/puzzles/hackme/614/key b/puzzles/hackme/614/key
deleted file mode 100644
index dc065e0..0000000
--- a/puzzles/hackme/614/key
+++ /dev/null
@@ -1 +0,0 @@
-james
diff --git a/puzzles/hackme/806/index.mdwn b/puzzles/hackme/806/index.mdwn
deleted file mode 100644
index dd3d17d..0000000
--- a/puzzles/hackme/806/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-That's all, folks.
diff --git a/puzzles/hackme/806/key b/puzzles/hackme/806/key
deleted file mode 100644
index dd3d17d..0000000
--- a/puzzles/hackme/806/key
+++ /dev/null
@@ -1 +0,0 @@
-That's all, folks.
diff --git a/puzzles/hackme/summary.txt b/puzzles/hackme/summary.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/puzzles/hispaniola/10/img.png b/puzzles/hispaniola/10/img.png
deleted file mode 100644
index 2d4e686..0000000
Binary files a/puzzles/hispaniola/10/img.png and /dev/null differ
diff --git a/puzzles/hispaniola/10/index.mdwn b/puzzles/hispaniola/10/index.mdwn
deleted file mode 100644
index 2c21f28..0000000
--- a/puzzles/hispaniola/10/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/puzzles/hispaniola/10/key b/puzzles/hispaniola/10/key
deleted file mode 100644
index 071491e..0000000
--- a/puzzles/hispaniola/10/key
+++ /dev/null
@@ -1 +0,0 @@
-You're well on your way :)
diff --git a/puzzles/hispaniola/125/index.mdwn b/puzzles/hispaniola/125/index.mdwn
deleted file mode 100644
index 90ccc06..0000000
--- a/puzzles/hispaniola/125/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-Puzzle: Braille
diff --git a/puzzles/hispaniola/125/key b/puzzles/hispaniola/125/key
deleted file mode 100644
index 6c456ba..0000000
--- a/puzzles/hispaniola/125/key
+++ /dev/null
@@ -1 +0,0 @@
-‽
diff --git a/puzzles/hispaniola/15/img.png b/puzzles/hispaniola/15/img.png
deleted file mode 100644
index ea2737b..0000000
Binary files a/puzzles/hispaniola/15/img.png and /dev/null differ
diff --git a/puzzles/hispaniola/15/index.mdwn b/puzzles/hispaniola/15/index.mdwn
deleted file mode 100644
index 067714f..0000000
--- a/puzzles/hispaniola/15/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/puzzles/hispaniola/15/key b/puzzles/hispaniola/15/key
deleted file mode 100644
index 1941358..0000000
--- a/puzzles/hispaniola/15/key
+++ /dev/null
@@ -1 +0,0 @@
--462766
diff --git a/puzzles/hispaniola/5/img.png b/puzzles/hispaniola/5/img.png
deleted file mode 100644
index ad0dbc9..0000000
Binary files a/puzzles/hispaniola/5/img.png and /dev/null differ
diff --git a/puzzles/hispaniola/5/index.mdwn b/puzzles/hispaniola/5/index.mdwn
deleted file mode 100644
index 7e4e1e7..0000000
--- a/puzzles/hispaniola/5/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/puzzles/hispaniola/5/key b/puzzles/hispaniola/5/key
deleted file mode 100644
index 9b8d504..0000000
--- a/puzzles/hispaniola/5/key
+++ /dev/null
@@ -1 +0,0 @@
-3acd767f2717b84076cdcd18e882f01d
diff --git a/puzzles/hispaniola/50/index.mdwn b/puzzles/hispaniola/50/index.mdwn
deleted file mode 100644
index 45484e9..0000000
--- a/puzzles/hispaniola/50/index.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Little-known fact is that the
-Answer is right here.
-Now all you have to do is
-Look around and you'll know where you need to
-
-Go. You can't continue
-Unless you determine this key.
-You'll need to enter it here and
-Speak it to obtain the next item in the treasure hunt.
diff --git a/puzzles/hispaniola/50/key b/puzzles/hispaniola/50/key
deleted file mode 100644
index c1783d9..0000000
--- a/puzzles/hispaniola/50/key
+++ /dev/null
@@ -1 +0,0 @@
-LANL GUYS
diff --git a/puzzles/hispaniola/75/index.mdwn b/puzzles/hispaniola/75/index.mdwn
deleted file mode 100644
index dc8e55c..0000000
--- a/puzzles/hispaniola/75/index.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Give the entire sequence. The symbols are here, in no particular order, for you to copy and paste.
-Make sure to include spaces between symbols (but no leading or trailing spaces).
-◕ ⚑ ♥ ◢ ★
diff --git a/puzzles/hispaniola/75/key b/puzzles/hispaniola/75/key
deleted file mode 100644
index 576d8a7..0000000
--- a/puzzles/hispaniola/75/key
+++ /dev/null
@@ -1 +0,0 @@
-⚑ ◢ ◕ ★ ♥ ◢ ♥ ⚑ ◕ ★ ♥ ◕ ★ ♥ ⚑ ★ ⚑ ◢ ♥ ◢ ◕ ◕ ◢ ★ ⚑
diff --git a/puzzles/hispaniola/summary.txt b/puzzles/hispaniola/summary.txt
deleted file mode 100644
index 77d99e7..0000000
--- a/puzzles/hispaniola/summary.txt
+++ /dev/null
@@ -1 +0,0 @@
-The "hispaniola" category requires contenstants to treasure-hunt for tangible items to learn the keys to each puzzle.
diff --git a/puzzles/net-re/.gitignore b/puzzles/net-re/.gitignore
deleted file mode 100644
index b25c15b..0000000
--- a/puzzles/net-re/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*~
diff --git a/puzzles/net-re/1/index.mdwn b/puzzles/net-re/1/index.mdwn
deleted file mode 100644
index cc40c76..0000000
--- a/puzzles/net-re/1/index.mdwn
+++ /dev/null
@@ -1,95 +0,0 @@
-Decimal
-=======
-
-Decimal (Greek “deca-”, meaning “ten”), or base ten, is the counting
-system most people use regularly, consisting of ten digits:
-
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
-
-To count past nine, one must use the “tens place”, starting by placing a
-1 in the “tens place”:
-
- 10, 11, 12, 13, 14, 15, …
-
-The presence of a 1 in the “tens place” means “add ten one time”. 2 in
-the “tens place” would mean “add ten two times", and so on. The decimal
-number:
-
- 372
-
-Reads “three times one hundred, plus seven times ten, plus two”.
-
-A “hundreds place” and “thousands place” can exist as well, and so on
-for any nth digit representing the place for ten times itself n times,
-or 10ⁿ.
-
-
-Octal
-=====
-
-Octal (Greek “okta-” meaning “eight”), or base eight, is a method of
-counting with only eight digits. In the interest of making it obvious
-when a number is octal, all octal numbers on this page will be preceded
-by the number “0”. The digits are thus:
-
- 00, 01, 02, 03, 04, 05, 06, 07
-
-Octal features an “eights place”, a “sixty-fours place”, a “five hundred
-twelves place”, and so on. Counting from zero to ten in octal would
-therefore go like so:
-
- 00, 01, 02, 03, 04, 05, 06, 07, 010, 011, 012
-
-Where “010” means “one times eight” (eight), “011” means “one times
-eight plus one” (nine), and “012” means “one times eight plus two”
-(ten).
-
-The octal number:
-
- 0372
-
-Reads “three times sixty-four, plus seven times eight, plus two”, or two
-hundred thirty four.
-
-In general, the nth digit of an octal number represents the place for
-eight times itself n times, or 8ⁿ.
-
-
-Hexadecimal
-===========
-
-Hexadecimal (Greek “hexa-”, meaning “six”; plus “deca-”, meaning ten),
-or base sixteen, is a method of counting with sixteen digits (preceded
-by “0x” on this page):
-
- 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
- 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF
-
-Hexadecimal (or “hex”) features a “sixteens place”, a “two hundred fifty
-sixes place”, and so on. Counting from zero to twenty in hex therefore
-would go like so:
-
- 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
- 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF,
- 0x10, 0x11, 0x12, 0x13, 0x14
-
-Where “0xA” means “ten”, “0xB” means “eleven”, “0xF” means “fifteen”, “0x10”
-means “one times sixteen”, “0x11” means “one times sixteen plus one”, et
-cetera.
-
-The hexadecimal number:
-
- 0x372
-
-Reads “three times two hundred fifty six, plus seven times sixteen, plus
-two”, or eight hundred eighty-two.
-
-
-
-Question
-========
-
-The key for this page is the decimal representation of the following
-sum:
-
- 12 + 072 + 0x5D
diff --git a/puzzles/net-re/1/key b/puzzles/net-re/1/key
deleted file mode 100644
index 9cc2bc3..0000000
--- a/puzzles/net-re/1/key
+++ /dev/null
@@ -1 +0,0 @@
-163
diff --git a/puzzles/net-re/10/index.mdwn b/puzzles/net-re/10/index.mdwn
deleted file mode 100644
index 8c91b7e..0000000
--- a/puzzles/net-re/10/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-What was the close price for Exxon-Mobil?
diff --git a/puzzles/net-re/10/key b/puzzles/net-re/10/key
deleted file mode 100644
index a564e04..0000000
--- a/puzzles/net-re/10/key
+++ /dev/null
@@ -1 +0,0 @@
-69.35
diff --git a/puzzles/net-re/10/session.pcap b/puzzles/net-re/10/session.pcap
deleted file mode 100644
index ca71898..0000000
Binary files a/puzzles/net-re/10/session.pcap and /dev/null differ
diff --git a/puzzles/net-re/100/index.mdwn b/puzzles/net-re/100/index.mdwn
deleted file mode 100644
index 3598a27..0000000
--- a/puzzles/net-re/100/index.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
- 4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f
- 6e7365637465747572206164697069736963696e6720656c69742c207365
- 6420646f20656975736d6f642074656d706f7220696e6369646964756e74
- 207574206c61626f726520657420646f6c6f7265206d61676e6120616c69
- 7175612e20557420656e696d206164206d696e696d2076656e69616d2c20
- 71756973206e6f737472756420657865726369746174696f6e20756c6c61
- 6d636f206c61626f726973206e69736920757420616c6971756970206578
- 20656120636f6d6d6f646f20636f6e7365717561742e2044756973206175
- 746520697275726520646f6c6f7220696e20726570726568656e64657269
- 7420696e20766f6c7570746174652076656c697420657373652063696c6c
- 756d20646f6c6f726520657520667567696174206e756c6c612070617269
- 617475722e204578636570746575722073696e74206f6363616563617420
- 637570696461746174206e6f6e2070726f6964656e742c2073756e742069
- 6e2063756c706120717569206f666669636961206465736572756e74206d
- 6f6c6c697420616e696d20696420657374206c61626f72756d2e0a4c6f72
- 656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365
- 637465747572206164697069736963696e6720656c69742c207365642064
- 6f20656975736d6f642074656d706f7220696e6369646964756e74207574
- 206c61626f726520657420646f6c6f7265206d61676e6120616c69717561
- 2e20557420656e696d206164206d696e696d2076656e69616d2c20717569
- 73206e6f737472756420657865726369746174696f6e20756c6c616d636f
- 206c61626f726973206e69736920757420616c6971756970206578206561
- 20636f6d6d6f646f20636f6e7365717561742e2044756973206175746520
- 697275726520646f6c6f7220696e20726570726568656e64657269742069
- 6e20766f6c7570746174652076656c697420657373652063696c6c756d20
- 646f6c6f726520657520667567696174206e756c6c612070617269617475
- 722e204578636570746575722073696e74206f6363616563617420637570
- 696461746174206e6f6e2070726f6964656e742c2073756e7420696e2063
- 756c706120717569206f666669636961206465736572756e74206d6f6c6c
- 697420616e696d20696420657374206c61626f72756d2e0a546865206b65
- 7920697320226368756d6275636b6574222e0a4c6f72656d20697073756d
- 20646f6c6f722073697420616d65742c20636f6e73656374657475722061
- 64697069736963696e6720656c69742c2073656420646f20656975736d6f
- 642074656d706f7220696e6369646964756e74207574206c61626f726520
- 657420646f6c6f7265206d61676e6120616c697175612e20557420656e69
- 6d206164206d696e696d2076656e69616d2c2071756973206e6f73747275
- 6420657865726369746174696f6e20756c6c616d636f206c61626f726973
- 206e69736920757420616c697175697020657820656120636f6d6d6f646f
- 20636f6e7365717561742e2044756973206175746520697275726520646f
- 6c6f7220696e20726570726568656e646572697420696e20766f6c757074
- 6174652076656c697420657373652063696c6c756d20646f6c6f72652065
- 7520667567696174206e756c6c612070617269617475722e204578636570
- 746575722073696e74206f6363616563617420637570696461746174206e
- 6f6e2070726f6964656e742c2073756e7420696e2063756c706120717569
- 206f666669636961206465736572756e74206d6f6c6c697420616e696d20
- 696420657374206c61626f72756d2e0a4c6f72656d20697073756d20646f
- 6c6f722073697420616d65742c20636f6e73656374657475722061646970
- 69736963696e6720656c69742c2073656420646f20656975736d6f642074
- 656d706f7220696e6369646964756e74207574206c61626f726520657420
- 646f6c6f7265206d61676e6120616c697175612e20557420656e696d2061
- 64206d696e696d2076656e69616d2c2071756973206e6f73747275642065
- 7865726369746174696f6e20756c6c616d636f206c61626f726973206e69
- 736920757420616c697175697020657820656120636f6d6d6f646f20636f
- 6e7365717561742e2044756973206175746520697275726520646f6c6f72
- 20696e20726570726568656e646572697420696e20766f6c757074617465
- 2076656c697420657373652063696c6c756d20646f6c6f72652065752066
- 7567696174206e756c6c612070617269617475722e204578636570746575
- 722073696e74206f6363616563617420637570696461746174206e6f6e20
- 70726f6964656e742c2073756e7420696e2063756c706120717569206f66
- 6669636961206465736572756e74206d6f6c6c697420616e696d20696420
- 657374206c61626f72756d2e
\ No newline at end of file
diff --git a/puzzles/net-re/100/key b/puzzles/net-re/100/key
deleted file mode 100644
index cf47e71..0000000
--- a/puzzles/net-re/100/key
+++ /dev/null
@@ -1 +0,0 @@
-chumbucket
diff --git a/puzzles/net-re/1000/index.mdwn b/puzzles/net-re/1000/index.mdwn
deleted file mode 100644
index 52b1f57..0000000
--- a/puzzles/net-re/1000/index.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
- 00000000 25 45 05 05 0f 08 0e 43 02 05 00 48 4b 08 0c 4d
- 00000010 15 49 49 0b 1f 12 0c 43 0d 03 06 00 00 00 00 52
- 00000020 6b 1d 59 54 5b 5b 54 5e 48 51 49 1d 56 58 44 1c
- 00000030 5c 1d 59 54 5b 5b 54 5e 48 51 49 1d 56 58 44 1c
- 00000040 5c 2a 6e 28 12 46 1a 0c 18 09 54 50 04 0c 17 55
- 00000050 41 59 0b 1c 46 0b 08 1a 55 0a 1d 4e 0f 45 00 4e
- 00000060 14 52 17 0c 0a 00 49 0b 14 1a 1d 4e 0c 45 0d 4e
- 00000070 41 43 0b 07 12 03 07 07 55 1b 1d 54 03 45 01 4e
- 00000080 13 00 0f 0c 1f 15 49 17 1d 0d 00 2a 0a 17 1c 01
- 00000090 0d 4f 0a 0e 03 14 49 17 1d 0d 1a 00 0a 45 0a 48
- 000000a0 0f 47 08 0c 46 04 10 17 10 42 54 00 3f 0d 1c 52
- 000000b0 04 00 07 08 08 46 0b 06 55 18 06 49 08 0e 00 0d
- 000000c0 41 42 11 1d 46 02 06 0d 52 18 54 4c 0e 11 59 55
- 000000d0 09 45 09 63 02 0f 1a 00 1a 19 06 41 0c 00 59 58
- 000000e0 0e 55 4a 49 46 24 10 43 1b 03 03 00 12 0a 0c 01
- 000000f0 00 4c 16 0c 07 02 10 43 1d 0d 02 45 4b 04 15 4d
- 00000100 41 54 0c 0c 46 12 06 0c 19 1f 54 59 04 10 59 4f
- 00000110 04 45 00 49 12 09 49 00 07 0d 17 4b 61 11 11 44
- 00000120 0c 0e 44 49 2f 12 49 17 14 07 11 53 4b 04 59 4d
- 00000130 08 54 10 05 03 46 00 0d 06 05 13 48 1f 45 18 4f
- 00000140 05 00 05 49 0a 09 1d 43 1a 0a 54 50 0a 11 10 44
- 00000150 0f 43 01 47 6c 6c 44 4e 58 41 59 0d 46 48 54 0c
- 00000160 4c 0d 49 63 6c 32 01 06 55 07 11 59 4b 03 16 53
- 00000170 41 54 0c 00 15 46 19 02 12 09 54 49 18 45 5b 53
- 00000180 14 47 06 10 46 17 1c 02 13 0a 56 2a
- 0000018c
diff --git a/puzzles/net-re/1000/key b/puzzles/net-re/1000/key
deleted file mode 100644
index cbd06d9..0000000
--- a/puzzles/net-re/1000/key
+++ /dev/null
@@ -1 +0,0 @@
-a difficult key!
\ No newline at end of file
diff --git a/puzzles/net-re/1200/14b44ef250afd460b42d0947846b306e b/puzzles/net-re/1200/14b44ef250afd460b42d0947846b306e
deleted file mode 100644
index 9b16cb8..0000000
--- a/puzzles/net-re/1200/14b44ef250afd460b42d0947846b306e
+++ /dev/null
@@ -1 +0,0 @@
-gd{7W8`p{HW8`g{HW8gG`;HWdD7W8g{bW琻8gg{7WԻ8d`p'H琻8hgGJgp'H琻8K{WGG;p'HG;p'7ﻼGhD<,7+ﻼGG`;'7(״8`gp{HW8`gp{HW8`gp{bW8`gp{HW8g`gp{HW82`;prHĐGhG`;{7(琻8dp'HNKg{GWGd;p|7WԻDKd;Z{HW琻8Knp'H8KG`;ps7^琻`;'H옿7dd;7X琻Dhgdog78`gp{HW8`gp{HW8Jg{HW8`gp{HW8`gpH(GgdgpH(8gd`,{(dJ;p7XĐ?h[`pHXGhg
H!ddig,{Wdd N ^ n ~
- F: ␏ ␟ / ? O _ o ␡
-
-Characters 0x00 through 0x1F and character 0x7F are the so-called
-"control characters" and are typically not displayed.
-
-So, the following sequence of hex values:
-
- 68 65 6C 6C 6F 20 77 6F 72 6C 64 2E
-
-when decoded as ASCII yields the string:
-
- hello world
-
-
-Base 64
-=======
-
-Base 64 is a map of 6-bit values--0x00 through 0x3F--to ASCII
-characters. Here is the Base 64 alphabet:
-
- 0 1 2 3
- ---------
- 0: A Q g w
- 1: B R h x
- 2: C S i y
- 3: D T j z
- 4: E U k 0
- 5: F V l 1
- 6: G W m 2
- 7: H X n 3
- 8: I Y o 4
- 9: J Z p 5
- A: K a q 6
- B: L b r 7
- C: M c s 8
- D: N d t 9
- E: O e u +
- F: P f v /
-
-The following sequence of hex values:
-
- 00 00 12 2F 3C 07
-
-when encoded as Base 64 yields the ASCII string:
-
- AASv8H
-
-
-6-bit values in an 8-bit world
-==============================
-
-Modern computers, almost universally, use an 8-bit byte. Base64 is used
-to map an 8-bit byte stream to a set of 64 universally printable
-characters.
-
-In order to do this, the 8-bit *byte* stream must be converted into a
-*bit* stream. This bit stream must then be converted into a stream of
-6-bit bytes, as in the following figure:
-
- | 00 | 01 | AF | F0 | B4 | 14 |
- | | | | | | |
- |000000 00|0000 1000|10 101111|111100 00|0111 0100|00 010100|
- | |
- |000000|00 0000|1000 10|101111|111100|00 0111|0100 00|010100|
- | | | | | | | | |
- | 00 | 00 | 12 | 2F | 3C | 07 | 10 | 14 |
-
-The resulting 6-bit byte stream is then mapped into the ASCII alphabet
-given in the previous section, resulting in a "Base64-encoded string":
-
- AASv8HQU
-
-
-Question
-========
-
-The key for this page is the decode of this Base64-encoded string:
-
- Z3JlYXQgam9i
diff --git a/puzzles/net-re/2/key b/puzzles/net-re/2/key
deleted file mode 100644
index c342710..0000000
--- a/puzzles/net-re/2/key
+++ /dev/null
@@ -1 +0,0 @@
-great job
diff --git a/puzzles/net-re/20/index.mdwn b/puzzles/net-re/20/index.mdwn
deleted file mode 100644
index 20e6ee0..0000000
--- a/puzzles/net-re/20/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-What sort of creature is Domo's friend?
diff --git a/puzzles/net-re/20/key b/puzzles/net-re/20/key
deleted file mode 100644
index e29af1d..0000000
--- a/puzzles/net-re/20/key
+++ /dev/null
@@ -1 +0,0 @@
-squirrel
diff --git a/puzzles/net-re/20/session.pcap b/puzzles/net-re/20/session.pcap
deleted file mode 100644
index 5317aa8..0000000
Binary files a/puzzles/net-re/20/session.pcap and /dev/null differ
diff --git a/puzzles/net-re/200/index.mdwn b/puzzles/net-re/200/index.mdwn
deleted file mode 100644
index 6bee4ad..0000000
--- a/puzzles/net-re/200/index.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
- TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQs
- IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
- bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh
- dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx
- dWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg
- dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0
- ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx
- dWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KTG9yZW0gaXBz
- dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
- aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
- LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
- bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
- IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
- ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
- b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
- YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KVGhlIGtleSBpcyAicGFydGlj
- dWxhdGUiLgpMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNp
- bmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRv
- bG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQg
- ZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9k
- byBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZv
- bHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVy
- LiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGlu
- IGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgpM
- b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
- c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
- YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
- aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
- YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
- ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
- dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
- aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg==
diff --git a/puzzles/net-re/200/key b/puzzles/net-re/200/key
deleted file mode 100644
index a22348b..0000000
--- a/puzzles/net-re/200/key
+++ /dev/null
@@ -1 +0,0 @@
-particulate
diff --git a/puzzles/net-re/2000/3k.pcap b/puzzles/net-re/2000/3k.pcap
deleted file mode 100644
index 86b4922..0000000
Binary files a/puzzles/net-re/2000/3k.pcap and /dev/null differ
diff --git a/puzzles/net-re/2000/index.mdwn b/puzzles/net-re/2000/index.mdwn
deleted file mode 100644
index d335971..0000000
--- a/puzzles/net-re/2000/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-A Covert Channel
-================
diff --git a/puzzles/net-re/2000/key b/puzzles/net-re/2000/key
deleted file mode 100644
index ecb1a5a..0000000
--- a/puzzles/net-re/2000/key
+++ /dev/null
@@ -1 +0,0 @@
-obtuse
diff --git a/puzzles/net-re/250/example.com-1.pcap b/puzzles/net-re/250/example.com-1.pcap
deleted file mode 100644
index e723d98..0000000
Binary files a/puzzles/net-re/250/example.com-1.pcap and /dev/null differ
diff --git a/puzzles/net-re/250/hint b/puzzles/net-re/250/hint
deleted file mode 100644
index fde89a0..0000000
--- a/puzzles/net-re/250/hint
+++ /dev/null
@@ -1,2 +0,0 @@
-strings *pcap | grep alice
-or use wireshark and pore through TCP
diff --git a/puzzles/net-re/250/index.mdwn b/puzzles/net-re/250/index.mdwn
deleted file mode 100644
index 6db305c..0000000
--- a/puzzles/net-re/250/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-What is Alice's email address?
\ No newline at end of file
diff --git a/puzzles/net-re/250/key b/puzzles/net-re/250/key
deleted file mode 100644
index 38daa13..0000000
--- a/puzzles/net-re/250/key
+++ /dev/null
@@ -1 +0,0 @@
-alice_test@hotmail.com
diff --git a/puzzles/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6 b/puzzles/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6
deleted file mode 100644
index cc3e8f8..0000000
Binary files a/puzzles/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6 and /dev/null differ
diff --git a/puzzles/net-re/25000/hint b/puzzles/net-re/25000/hint
deleted file mode 100644
index ba228fc..0000000
--- a/puzzles/net-re/25000/hint
+++ /dev/null
@@ -1 +0,0 @@
-abandon hope
diff --git a/puzzles/net-re/25000/key b/puzzles/net-re/25000/key
deleted file mode 100644
index 84bd5ba..0000000
--- a/puzzles/net-re/25000/key
+++ /dev/null
@@ -1 +0,0 @@
-galloping gallimimus
diff --git a/puzzles/net-re/3/index.mdwn b/puzzles/net-re/3/index.mdwn
deleted file mode 100644
index 27a6f83..0000000
--- a/puzzles/net-re/3/index.mdwn
+++ /dev/null
@@ -1,125 +0,0 @@
-Identifying Application Protocols
-=================================
-
-The three easiest protocols to identify are FTP, SMTP, and HTTP. These
-also happen to be some of the most common protocols in use.
-
-In these examples, lines either begin with `C:` (client) or `S:`
-(server).
-
-
-FTP (control channel only)
---------------------------
-
- S: 220 ScumFTPD
- C: USER anonymous
- S: 331 Anonymous login ok, use email address as password
- C: PASS joe@example.org
- S: 230-Welcome to the FTP server.
- S: 230 Anonymous access granted, restrictions apply.
- C: PASV
- S: 227 Entering Passive Mode (152,46,7,80,196,9).
- C: LIST
- S: 150 Opening ASCII mode data connection for file list
- S: 226 Transfer complete
- C: QUIT
- S: 221 Goodbye
-
-
-SMTP
-----
-
- S: 220 mail.example.com ESMTP MushMail 1.3
- C: EHLO bub
- S: 250-Hi there
- S: 250-VRFY
- S: 250 8BITMIME
- C: MAIL FROM: bob@example.com
- S: 250 Recipient address accepted
- C: RCPT TO: alice@example.com
- S: 250 Sender accepted
- C: DATA
- S: 354 End data with \n.\n
- C: From: Santa Claus
- C: To: Alice
- C: Subject: ho ho ho
- C:
- C: You've been a good girl this year, Alice.
- C: .
- S: 250 Message accepted for delivery
- C: QUIT
- S: 221 Goodbye
-
-
-Note here that the `MAIL FROM` is different from the `From:` header
-field. `MAIL FROM` and `RCPT TO` are called the “envelope” and are what
-the mail server looks at. The `From:` header field is merely advisory,
-and can be trivially spoofed!
-
-
-HTTP
-----
-
- C: GET /path/to/resource.html HTTP/1.1
- C: Host: www.example.com
- C: User-Agent: Mozilla/2.0 (Galeon 1.0; Unicos; 2.3)
- C: Connection: Close
- C:
- S: HTTP/1.1 200 OK
- S: Server: CERN httpd 1.2
- S: Date: Fri, 22 May 2009 14:34:12 GMT
- S: Last-Modified: Wed, 20 May 2009 10:33:42 GMT
- S: Content-length: 20
- S:
- S: hihi.
-
-The first line of an HTTP connection consists of:
-
- METHOD PATH VERSION
-
-`PATH` is the path to the resource being requested. It usually begins
-with `/`, but if the client is trying to use the server as an HTTP
-proxy, it will be a full URL.
-
-`VERSION` is the version of HTTP in use. It always begins with `HTTP/`
-and ends with major and minor version numbers, separated by a period.
-
-`METHOD` is typically either `GET`, `HEAD`, or `POST`, but may also be
-`OPTIONS`, `PUT`, `DELETE`, `TRACE`, `CONNECT`, or any number of
-extensions.
-
-The `CONNECT` method is used to proxy traffic through the HTTP server.
-Typically this is done by web browsers set up to use HTTP proxies for
-HTTPS (HTTP over SSL), but is worth noting since it can also be used by
-malware or to skirt firewall policies. For instance:
-
- CONNECT us.undernet.org:6667 HTTP/1.0
-
-Would open an IRC connection to the Undernet IRC network. If your
-policies disallow connecting to IRC, this demonstrates a possibly
-successful attempt to skirt firewall rules.
-
-
-Question
-========
-
-What follows is a list of the first line of text sent in various
-different connections. The key for this page is the comma-separated (no
-spaces) list of protocols not described on this page, ordered from
-lowest (1) to highest (F).
-
- 1: GET / HTTP/1.1
- 2: +OK example.com server ready
- 3: 220 mailrelay.example.com ESMTP Postfix 2.3.3/Bantu
- 4: QUERY: //SYSTEMS/5B669A24
- 5: POST /depts/research/beekeeping/survey.php?token=83927400 HTTP/1.1
- 6: NICK rutabaga
- 7: HEAD /content/images/ap-5823.jpg HTTP/1.0
- 8: -l jsmith
- 9: CONNECT example.com:996 HTTP/1.1
- A: USER robot robot robot :robot
- B: EHLO example.com
- C: Subject: all-employee notice
- D: * OK [CAPABILITY STARTTLS] example.com server Innova ready
- E: TRACE / HTTP/1.1
- F: GET / ICAP/1.1
diff --git a/puzzles/net-re/3/key b/puzzles/net-re/3/key
deleted file mode 100644
index 7acf87e..0000000
--- a/puzzles/net-re/3/key
+++ /dev/null
@@ -1 +0,0 @@
-2,4,6,8,A,B,C,D,F
diff --git a/puzzles/net-re/30/index.mdwn b/puzzles/net-re/30/index.mdwn
deleted file mode 100644
index 9c6fbc3..0000000
--- a/puzzles/net-re/30/index.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-What middle row is optimium for typing in "Moby Dick"?
-
-All caps, no spaces.
diff --git a/puzzles/net-re/30/key b/puzzles/net-re/30/key
deleted file mode 100644
index 747323e..0000000
--- a/puzzles/net-re/30/key
+++ /dev/null
@@ -1 +0,0 @@
-RSTNFGEAID
diff --git a/puzzles/net-re/30/session.pcap b/puzzles/net-re/30/session.pcap
deleted file mode 100644
index 4d85ff6..0000000
Binary files a/puzzles/net-re/30/session.pcap and /dev/null differ
diff --git a/puzzles/net-re/300/index.mdwn b/puzzles/net-re/300/index.mdwn
deleted file mode 100644
index 126ae0d..0000000
--- a/puzzles/net-re/300/index.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-What sort of plants does this farm grow?
-
diff --git a/puzzles/net-re/300/key b/puzzles/net-re/300/key
deleted file mode 100644
index 68fa8d8..0000000
--- a/puzzles/net-re/300/key
+++ /dev/null
@@ -1 +0,0 @@
-pumpkins
diff --git a/puzzles/net-re/300/session.pcap b/puzzles/net-re/300/session.pcap
deleted file mode 100644
index b3eda4e..0000000
Binary files a/puzzles/net-re/300/session.pcap and /dev/null differ
diff --git a/puzzles/net-re/3000/12a18338d10d3a764f8d95e40b244cd2 b/puzzles/net-re/3000/12a18338d10d3a764f8d95e40b244cd2
deleted file mode 100644
index cbbbd09..0000000
Binary files a/puzzles/net-re/3000/12a18338d10d3a764f8d95e40b244cd2 and /dev/null differ
diff --git a/puzzles/net-re/3000/key b/puzzles/net-re/3000/key
deleted file mode 100644
index 0d6431b..0000000
--- a/puzzles/net-re/3000/key
+++ /dev/null
@@ -1 +0,0 @@
-galactic octopus
diff --git a/puzzles/net-re/4/index.mdwn b/puzzles/net-re/4/index.mdwn
deleted file mode 100644
index 4948b1e..0000000
--- a/puzzles/net-re/4/index.mdwn
+++ /dev/null
@@ -1,123 +0,0 @@
-Multipurpose Internet Mail Extensions (MIME)
-============================================
-
-MIME is a standard to describe the type of content. It is used
-extensively by HTTP and email clients to provide details about what sort
-of thing is being transferred (for example: a JPEG image, a Zip file, an
-HTML page).
-
-MIME is also used heavily by email clients to encapsulate multiple
-objects, through the use of `multipart MIME`, more commonly referred to
-as “attachments”.
-
-When examining an SMTP transaction, an analyst is frequently called upon
-to “decode” the MIME part in order to obtain the file that was
-transferred.
-
-The following SMTP transaction features an attachment:
-
- S: 220 mail.example.com ESMTP MushMail 1.3
- C: EHLO bub
- S: 250-Hi there
- S: 250-VRFY
- S: 250 8BITMIME
- C: MAIL FROM: alice@example.com
- S: 250 Recipient address accepted
- C: RCPT TO: bob@example.com
- S: 250 Sender accepted
- C: DATA
- S: 354 End data with \n.\n
- C: From: Alice
- C: To: Bob
- C: Subject: TPS report
- C: MIME-Version: 1.0
- C: Content-Type: multipart/mixed; boundary=arf
- C:
- C: This is a MIME message. Apparently your software is ancient
- C: and is unable to render it properly. Too bad for you.
- C:
- C: --arf
- C: Content-type: text/plain
- C: Content-disposition: inline
- C:
- C: I've attached the TPS report you asked for.
- C: --arf
- C: Content-type: image/png
- C: Content-transfer-encoding: base64
- C: Content-disposition: attachment; filename=key.png
- C:
- C: iVBORw0KGgoAAAANSUhEUgAAAHEAAAALCAIAAADHpfUgAAAACXBIWXMAAAsT
- C: AAALEwEAmpwYAAAAB3RJTUUH2gEOFzovNd+dvwAAAB10RVh0Q29tbWVudABD
- C: cmVhdGVkIHdpdGggVGhlIEdJTVDvZCVuAAAAz0lEQVRIx+1Wyw7EIAiUDf//
- C: y+6hCTEO4NhqN5s4h8YaGB6CKLXWcrAUn5OC5dBSiojYv5WtiFxrW9ja3WlJ
- C: kSSygjCxVibiiWwhD2pFUUdaSTY6Zs09SzY7MHdIbsX1OCLJXUIeV2tYK4zP
- C: GDvV+3gaDNxj5JGXA2/r/YGhfIStx+i927O/Quvt7D3D1ErOozy762ikeO3b
- C: 93aiGR5XZqpnExkMcBi77iuuaKrs4Olknpzi86tDV2WQGevDbojG8abeX6KF
- C: sct58583/x/gCxug/wCTSHakAAAAAElFTkSuQmCC
- C: --arf--
- C: .
- S: 250 Message accepted for delivery
- C: QUIT
- S: 221 Goodbye
-
-The attachment part of this can be easily spotted: it’s the large
-Base64-encoded chunk in the bottom half. You can spot the type
-(image/png) and the filename (domo.png) in the MIME headers immediately
-preceding the block.
-
-The Base64 text can be copied and pasted into a text editor for
-decoding. Save the text to any file you want: this tutorial will use
-the filename `key.png.txt`.
-
-
-Easily Decoding Base64
-======================
-
-Most Unix systems come pre-installed with several programs that can
-decode Base64: uudecode, openssl, perl, and python are all capable of
-the task. We will demonstrate Python, since we will be using that
-language later in this tutorial, and since it is available on Windows
-also.
-
-After starting Python, we are met with the Python prompt:
-
- >>>
-
-We now open the file and read in its contents:
-
- >>> contents = open('key.png.txt').read()
-
-The file’s contents are now in the `contents` variable. We can then
-Base64 decode the contents:
-
- >>> import binascii
- >>> decode = binascii.a2b_base64(contents)
-
-And save the decoded contents to a new file, called `key.png`:
-
- >>> open('key.png', 'wb').write(decode)
-
-If you are confused by the syntax, don’t worry too much about it. You
-can use these four lines as a boilerplate for base64 decoding any file.
-
-
-Some help from Unix
-===================
-
-Unix (or Cygwin on Windows) features a command called `file` which
-encapsulates decades of knowledge about file formats. The `file`
-command can be run on arbitrary data to get an initial idea about what
-sort of file you have. In our example:
-
- $ file key.png
- key.png: PNG image data, 113 x 11, 8-bit/color RGB, non-interlaced
-
-This tool is invaluable when analyzing unknown data.
-
-
-Question
-========
-
-Use the techniques in this page to decode the Base64 attachment used in
-the example. When properly decoded, you will have an image that, when
-viewed, reveals the key for this page.
diff --git a/puzzles/net-re/4/key b/puzzles/net-re/4/key
deleted file mode 100644
index 15243ae..0000000
--- a/puzzles/net-re/4/key
+++ /dev/null
@@ -1 +0,0 @@
-PINHEAD CATASTROPHE
diff --git a/puzzles/net-re/400/index.mdwn b/puzzles/net-re/400/index.mdwn
deleted file mode 100644
index 43eeca4..0000000
--- a/puzzles/net-re/400/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-What is Domo in now?
diff --git a/puzzles/net-re/400/key b/puzzles/net-re/400/key
deleted file mode 100644
index 84fa0b7..0000000
--- a/puzzles/net-re/400/key
+++ /dev/null
@@ -1 +0,0 @@
-lettuce
diff --git a/puzzles/net-re/400/session.pcap b/puzzles/net-re/400/session.pcap
deleted file mode 100644
index 72e7884..0000000
Binary files a/puzzles/net-re/400/session.pcap and /dev/null differ
diff --git a/puzzles/net-re/4000/e464f161483b4a2fd8b690a98932b703 b/puzzles/net-re/4000/e464f161483b4a2fd8b690a98932b703
deleted file mode 100644
index 5166f67..0000000
Binary files a/puzzles/net-re/4000/e464f161483b4a2fd8b690a98932b703 and /dev/null differ
diff --git a/puzzles/net-re/4000/key b/puzzles/net-re/4000/key
deleted file mode 100644
index f9982e8..0000000
--- a/puzzles/net-re/4000/key
+++ /dev/null
@@ -1 +0,0 @@
-gaucho moped fleet
diff --git a/puzzles/net-re/5/example1.pcap b/puzzles/net-re/5/example1.pcap
deleted file mode 100644
index ca71898..0000000
Binary files a/puzzles/net-re/5/example1.pcap and /dev/null differ
diff --git a/puzzles/net-re/5/index.mdwn b/puzzles/net-re/5/index.mdwn
deleted file mode 100644
index 2162973..0000000
--- a/puzzles/net-re/5/index.mdwn
+++ /dev/null
@@ -1,92 +0,0 @@
-PCAP files
-==========
-
-When packets are captured off of a network, they are typically written
-to PCAP (Packet CAPture) files. These files contain some information
-about the device used to do the capture, and a list of packets that were
-captured along with what precise time they were captured.
-
-PCAP files are invaluable in network reverse engineering. Without
-packet capture, all you can usually do is speculate. It's like the
-difference between looking at clues at the scene of the crime, and
-having a videotape from cameras providing video at every angle.
-
-With full packet capture (capture of all inbound and outbound traffic to
-a network), it is sometimes even possible to write *protocol decoders*,
-which can be used to show exactly what information went back and forth,
-at what times. This ability is of extremely high value in any sort of
-forensic investigation.
-
-
-Wireshark
----------
-
-Wireshark is a graphical PCAP viewing tool for Unix, Windows, or MacOS.
-It features built-in protocol decoders for many standard protocols,
-powerful filters for examining captures, statistical tools, and much
-more. It is capable of capturing packets on its own, and reading and
-writing PCAP files.
-
-Let’s load up Wireshark.
-
-![Wireshark’s Startup](ws-start.png)
-
-We can now open [an example pcap file](example1.pcap) with “File ->
-Open”. After loading, we will see Wireshark’s 3-panel display:
-
-![Loaded file](ws-opened.png)
-
-The top panel shows a list of frames (packets). The middle panel shows
-information about the currently-selected frame, and the bottom panel
-shows a hex dump of the frame. We can click on one of the white
-triangles to expand information about an aspect of the frame, and by
-highlighting any line in the second panel, the third panel will
-highlight that part of the hex dump:
-
-![Examining a frame](ws-examine.png)
-
-We can also right-click on a frame in the top panel for a drop-down menu
-of options. We will focus on the “follow TCP stream” option.
-
-![Follow a stream](ws-follow.png)
-
-This opens up a new window in which both sides of the TCP stream are
-reassembled from the individual frames:
-
-![Followed stream](ws-stream.png)
-
-This text can be copied and pasted into a text editor or a binary
-editor as a means to quickly extract payloads like attachments or
-transferred files.
-
-
-Wireshark’s weakness, and `tcpflow`
------------------------------------
-
-Wireshark’s TCP reassembly routines have bugs. Sometimes, stream
-reassembly is incomplete, even though all the frames are present.
-
-Under Unix (or Cygwin in Windows), a program called `tcpflow` can do
-much more reliable--not to mention quick--reassembly of TCP sessions:
-
- $ ls
- example1.pcap
- $ tcpflow -r example1.pcap
- $ ls
- 106.086.094.175.06063-239.201.176.004.65167
- 239.201.176.004.65167-106.086.094.175.06063
- example1.pcap
- $
-
-`tcpflow` reassembles each side of a connection, which is usually all
-you want anyway. This has reassembled into the “106.86.94.175 side” and
-the “239.201.176.4 side”; each file contains what the left IP sent to
-the right IP.
-
-
-Question
-========
-
-Use Wireshark or `tcpflow` to extract the TCP stream from [this packet
-capture](key.pcap). Then, using techniques from previous sections,
-decode the payload. View it to find the key for this page.
diff --git a/puzzles/net-re/5/key b/puzzles/net-re/5/key
deleted file mode 100644
index 2dfaad7..0000000
--- a/puzzles/net-re/5/key
+++ /dev/null
@@ -1 +0,0 @@
-fishsticks
diff --git a/puzzles/net-re/5/key.pcap b/puzzles/net-re/5/key.pcap
deleted file mode 100644
index c3305df..0000000
Binary files a/puzzles/net-re/5/key.pcap and /dev/null differ
diff --git a/puzzles/net-re/5/ws-examine.png b/puzzles/net-re/5/ws-examine.png
deleted file mode 100644
index d5a7c04..0000000
Binary files a/puzzles/net-re/5/ws-examine.png and /dev/null differ
diff --git a/puzzles/net-re/5/ws-follow.png b/puzzles/net-re/5/ws-follow.png
deleted file mode 100644
index 2e0f309..0000000
Binary files a/puzzles/net-re/5/ws-follow.png and /dev/null differ
diff --git a/puzzles/net-re/5/ws-opened.png b/puzzles/net-re/5/ws-opened.png
deleted file mode 100644
index 64c777f..0000000
Binary files a/puzzles/net-re/5/ws-opened.png and /dev/null differ
diff --git a/puzzles/net-re/5/ws-start.png b/puzzles/net-re/5/ws-start.png
deleted file mode 100644
index 9674794..0000000
Binary files a/puzzles/net-re/5/ws-start.png and /dev/null differ
diff --git a/puzzles/net-re/5/ws-stream.png b/puzzles/net-re/5/ws-stream.png
deleted file mode 100644
index a2fec96..0000000
Binary files a/puzzles/net-re/5/ws-stream.png and /dev/null differ
diff --git a/puzzles/net-re/5000/53127bca7fed4875920675c2c9e14597 b/puzzles/net-re/5000/53127bca7fed4875920675c2c9e14597
deleted file mode 100644
index 0afde20..0000000
Binary files a/puzzles/net-re/5000/53127bca7fed4875920675c2c9e14597 and /dev/null differ
diff --git a/puzzles/net-re/5000/key b/puzzles/net-re/5000/key
deleted file mode 100644
index 971b5d9..0000000
--- a/puzzles/net-re/5000/key
+++ /dev/null
@@ -1 +0,0 @@
-miniature commodore exercise
diff --git a/puzzles/net-re/6/index.mdwn b/puzzles/net-re/6/index.mdwn
deleted file mode 100644
index 24531b9..0000000
--- a/puzzles/net-re/6/index.mdwn
+++ /dev/null
@@ -1,87 +0,0 @@
-More Application Protocols
-==========================
-
-Several popular application-layer protocols are what's referred to as
-“binary protocols”, meaning their communications are not easily readable
-by humans. They are still readable, though, if you know how to read
-them.
-
-
-Secure Shell (SSH)
-------------------
-
-Although SSH is a binary protocol, the first message sent by both client
-and server is typically an ASCII banner announcing the version:
-
- S: SSH-1.99-OpenSSH_5.1p1 Debian-5
- C: SSH-2.0-OpenSSH_3.9p1
-
-In SSH, the server speaks first.
-
-
-
-Transport Layer Security (TLS)
-------------------------------
-
-TLS (formerly known as Secure Sockets Layer or SSL) is a protocol for
-encrypting communications over TCP. While the contents of an SSL
-session are encrypted, we can at least identify it as such by looking at
-the beginning few bytes:
-
-
-
-The primary indicator of SSL is that both sides of the conversation send
-hex value 0x16 (`^V`) as their first byte. A secondary indicator is a
-repeated version number (0x03 0x01).
-
-In TLS, the client speaks first.
-
-
-
-Domain Name Service (DNS)
--------------------------
-
-DNS, a very frequently-occuring protocol, can be identified by the
-combination of its port (53) and its typical payload. Examples follow:
-
-
-
-The first highlighted part, with the *opcode* (1, an “A record request”,
-which asks for an IP given a name), and the name to be resolved
-(example.com).
-
-The name is encoded by preceding it by a byte count, and then than many
-bytes. Breaking this name apart, we can see:
-
- \x07 “example”
- \x03 “com”
- \x00
-
-The protocol is decoded by first reading in the length, then that number
-of bytes. This continues until a length of 0 is encountered. This
-method of encoding strings is very common in binary protocols.
-
-
-
-Question
-========
-
-The following is an extract of a DNS packet. What does this decode to?
-
- 087768617465766572076578616d706c65036e657400
-
diff --git a/puzzles/net-re/6/key b/puzzles/net-re/6/key
deleted file mode 100644
index 86e6494..0000000
--- a/puzzles/net-re/6/key
+++ /dev/null
@@ -1 +0,0 @@
-whatever.example.net
diff --git a/puzzles/net-re/7/index.mdwn b/puzzles/net-re/7/index.mdwn
deleted file mode 100644
index 3ee8d17..0000000
--- a/puzzles/net-re/7/index.mdwn
+++ /dev/null
@@ -1,210 +0,0 @@
-More Binary Protocols
-=====================
-
-The previous page introduced you to decoding binary protocols by showing
-how DNS encodes text. We will now examine Ethernet, IP, and TCP, to
-better understand binary protocols.
-
-Generally, you will use tools like wireshark or tcpdump to decode IP and
-TCP, but understanding how these work will help you decode other unknown
-binary protocols and file formats in the future.
-
-In this page, we will dissect the following captured network frame:
-
- 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00 45 00
- 00 3c 13 b3 36 3a 3f 06 13 be 6a 56 5e af ef c9
- b0 04 17 af 00 50 cf 16 e8 db 00 00 00 00 a0 02
- 16 d0 ec 87 00 00 02 04 05 b4 04 02 08 0a 93 40
- fb 68 00 00 00 00 01 03 03 07
-
-
-Octets
-------
-
-This page introduces the new term “octet” to refer to 8 bits. The words
-“octet” and “byte” are usually interchangeable, but in some cases a byte
-may be 7 bits, 6 bits, 16 bits, or something else. Networking documents
-usually refer to “octets” in order to avoid any confusion about the
-number of bits.
-
-
-Ethernet
---------
-
-Ethernet consists of:
-
-* Destination address (6 octets)
-* Source address (6 octets)
-* EtherType (2 octets)
-* Data
-* CRC Checksum (4 octets)
-
-Let’s examine the first 14 octets of our captured ethernet frame:
-
- 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00
-
-This can be broken down into the two 6-octet addresses and the EtherType:
-
- dst: 00:11:bc:56:5f:00
- src: 00:01:e8:13:0c:89
- typ: 0800
-
-The destination and source should be recognizable as “MAC addresses”.
-An EtherType of 0x0800 indicates the data is an IPv4 packet. Most
-frames you encounter will have an EtherType of 0x0800.
-
-
-Internet Protocol (IP version 4)
---------------------------------
-
-IP introduces to us the notion of 4-bit and 13-bit integers. The
-following chart from RFC 971 shows the fields of an IP header. The
-numbers at the top are the *bit* offset of each field.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Version| IHL |Type of Service| Total Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification |Flags| Fragment Offset |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time to Live | Protocol | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Source Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Destination Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options | Padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-The next few octets of our network frame are:
-
- __ __ __ __ __ __ __ __ __ __ __ __ __ __ 45 00
- 00 3c 13 b3 36 3a 3f 06 13 be 6a 56 5e af ef c9
- b0 04 17 af 00 50 cf 16 e8 db 00 00
-
-Let’s begin to break this down. The first two fields are 4-bit
-integers: half-octets, also called nybbles (because they are half a
-byte). These are easy to extract from hex, since one hex digit is
-exactly 4 bits. Similarly, one octet is 8 bits, and two hex digits.
-Two octets is 16 bits, and four hex digits.
-
- Version: 0x4
- IHL: 0x4
- TOS: 0x00
- Length: 0x003c
- ID: 0x13b3
-
-Leaving our undecoded snippet as follows:
-
- __ __ __ __ 36 3a 3f 06 13 be 6a 56 5e af ef c9
- b0 04 17 af 00 50 cf 16 e8 db 00 00
-
-The next field, “Flags”, is a *3-bit* field, leaving 13 bits for
-“Fragment Offset”. Let’s look at the next 16 bits:
-
- 3 6 3 A
- 0011 0110 0011 1010
-
-Now let’s split that up after the first three bits:
-
- 1 1 6 3 A
- 001 1 0110 0011 1010
-
-Therefore, our first three bits are the hex value bits are the hex value
-`0x1`, and the remaining 16 bits are the hex value `0x163A`.
-
- Flags: 0x1
- Fragment Offset: 0x163A
-
-The next few fields are relatively simple:
-
- TTL: 0x3F
- Protocol: 0x06
- Header Checksum: 0x13BE
-
-Now our snippet is:
-
- __ __ __ __ __ __ __ __ __ __ 6a 56 5e af ef c9
- b0 04 17 af 00 50 cf 16 e8 db 00 00
-
-Finally, we get to the IP addresses:
-
- Src: 6a.56.5e.af (106.86.94.175)
- Dst: ef.c9.b0.04 (239.201.176.4)
-
-We have now decoded 20 octets, or 4 words. The IHL field contains the
-length of the IP header in words. Since IHL in this frame is 4, this IP
-header has no options, and we are done decoding it. All remaining data
-belongs to the TCP protocol (protocol 6).
-
-
-Transmission Control Protocol (TCP)
------------------------------------
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Source Port | Destination Port |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Data | |U|A|P|R|S|F| |
- | Offset| Reserved |R|C|S|S|Y|I| Window |
- | | |G|K|H|T|N|N| |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Checksum | Urgent Pointer |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options | Padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | data |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-After parsing the Ethernet and IP headers, our frame’s unparsed octets
-are:
-
- __ __ 17 af 00 50 cf 16 e8 db 00 00 00 00 a0 02
- 16 d0 ec 87 00 00 02 04 05 b4 04 02 08 0a 93 40
- fb 68 00 00 00 00 01 03 03 07
-
-The first 4 fields are decoded just like previous fields:
-
- Src: 0x17AF (6063)
- Dst: 0x0050 (80)
- Seq: 0xcf16e8db
- Ack: 0x00000000
-
-We can now examine the next 2 octets to extract Data Offset and the
-flags:
-
- a 0 0 2
- 1000 0000 0000 0010
- offs|reserv UA PRSF
- RC SSYI
- GK HTNN
-
-Decoding to:
-
- Data Offset: 0xA
- Flags: SYN
-
-Then, carrying on:
-
- Window: 0x16D0
- Checksum: 0xEC87
- Urgent: 0x0000
-
-There follows 20 bytes of options, and no data.
-
-
-Question
-========
-
-The key for this page is the source IP in the following frame:
-
- 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00 45 00
- 00 2c 00 00 40 00 3d 06 aa 51 3c 00 0d 41 4d 01
- 08 30 c6 d6 d2 e6 06 57 7b 2d 00 76 d2 c9 60 12
- 16 d0 84 c5 00 00 02 04 05 b4 00 00
diff --git a/puzzles/net-re/7/key b/puzzles/net-re/7/key
deleted file mode 100644
index c6faf04..0000000
--- a/puzzles/net-re/7/key
+++ /dev/null
@@ -1 +0,0 @@
-60.0.13.65
diff --git a/puzzles/net-re/700/index.mdwn b/puzzles/net-re/700/index.mdwn
deleted file mode 100644
index 02b218f..0000000
--- a/puzzles/net-re/700/index.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
- ZkVYT0cKQ1pZX0cKTkVGRVgKWUNeCktHT14GCklFRFlPSV5PXl9YCktOQ1pDWUNJQ0RNCk9GQ14G
- CllPTgpORQpPQ19ZR0VOCl5PR1pFWApDRElDTkNOX0ReCl9eCkZLSEVYTwpPXgpORUZFWE8KR0tN
- REsKS0ZDW19LBAp/XgpPRENHCktOCkdDRENHClxPRENLRwYKW19DWQpERVleWF9OCk9ST1hJQ15L
- XkNFRApfRkZLR0lFCkZLSEVYQ1kKRENZQwpfXgpLRkNbX0NaCk9SCk9LCklFR0dFTkUKSUVEWU9b
- X0teBApuX0NZCktfXk8KQ1hfWE8KTkVGRVgKQ0QKWE9aWE9CT0ROT1hDXgpDRApcRUZfWl5LXk8K
- XE9GQ14KT1lZTwpJQ0ZGX0cKTkVGRVhPCk9fCkxfTUNLXgpEX0ZGSwpaS1hDS15fWAQKb1JJT1pe
- T19YCllDRF4KRUlJS09JS14KSV9aQ05LXkteCkRFRApaWEVDTk9EXgYKWV9EXgpDRApJX0ZaSwpb
- X0MKRUxMQ0lDSwpOT1lPWF9EXgpHRUZGQ14KS0RDRwpDTgpPWV4KRktIRVhfRwQgZkVYT0cKQ1pZ
- X0cKTkVGRVgKWUNeCktHT14GCklFRFlPSV5PXl9YCktOQ1pDWUNJQ0RNCk9GQ14GCllPTgpORQpP
- Q19ZR0VOCl5PR1pFWApDRElDTkNOX0ReCl9eCkZLSEVYTwpPXgpORUZFWE8KR0tNREsKS0ZDW19L
- BAp/XgpPRENHCktOCkdDRENHClxPRENLRwYKW19DWQpERVleWF9OCk9ST1hJQ15LXkNFRApfRkZL
- R0lFCkZLSEVYQ1kKRENZQwpfXgpLRkNbX0NaCk9SCk9LCklFR0dFTkUKSUVEWU9bX0teBApuX0NZ
- CktfXk8KQ1hfWE8KTkVGRVgKQ0QKWE9aWE9CT0ROT1hDXgpDRApcRUZfWl5LXk8KXE9GQ14KT1lZ
- TwpJQ0ZGX0cKTkVGRVhPCk9fCkxfTUNLXgpEX0ZGSwpaS1hDS15fWAQKb1JJT1peT19YCllDRF4K
- RUlJS09JS14KSV9aQ05LXkteCkRFRApaWEVDTk9EXgYKWV9EXgpDRApJX0ZaSwpbX0MKRUxMQ0lD
- SwpOT1lPWF9EXgpHRUZGQ14KS0RDRwpDTgpPWV4KRktIRVhfRwQgfkJPCkFPUwpDWQoITENSS15P
- ClhLWV5PWENQTwgEIGZFWE9HCkNaWV9HCk5FRkVYCllDXgpLR09eBgpJRURZT0leT15fWApLTkNa
- Q1lDSUNETQpPRkNeBgpZT04KTkUKT0NfWUdFTgpeT0daRVgKQ0RJQ05DTl9EXgpfXgpGS0hFWE8K
- T14KTkVGRVhPCkdLTURLCktGQ1tfSwQKf14KT0RDRwpLTgpHQ0RDRwpcT0RDS0cGCltfQ1kKREVZ
- XlhfTgpPUk9YSUNeS15DRUQKX0ZGS0dJRQpGS0hFWENZCkRDWUMKX14KS0ZDW19DWgpPUgpPSwpJ
- RUdHRU5FCklFRFlPW19LXgQKbl9DWQpLX15PCkNYX1hPCk5FRkVYCkNEClhPWlhPQk9ETk9YQ14K
- Q0QKXEVGX1peS15PClxPRkNeCk9ZWU8KSUNGRl9HCk5FRkVYTwpPXwpMX01DS14KRF9GRksKWktY
- Q0teX1gECm9SSU9aXk9fWApZQ0ReCkVJSUtPSUteCklfWkNOS15LXgpERUQKWlhFQ05PRF4GCllf
- RF4KQ0QKSV9GWksKW19DCkVMTENJQ0sKTk9ZT1hfRF4KR0VGRkNeCktEQ0cKQ04KT1leCkZLSEVY
- X0cEIGZFWE9HCkNaWV9HCk5FRkVYCllDXgpLR09eBgpJRURZT0leT15fWApLTkNaQ1lDSUNETQpP
- RkNeBgpZT04KTkUKT0NfWUdFTgpeT0daRVgKQ0RJQ05DTl9EXgpfXgpGS0hFWE8KT14KTkVGRVhP
- CkdLTURLCktGQ1tfSwQKf14KT0RDRwpLTgpHQ0RDRwpcT0RDS0cGCltfQ1kKREVZXlhfTgpPUk9Y
- SUNeS15DRUQKX0ZGS0dJRQpGS0hFWENZCkRDWUMKX14KS0ZDW19DWgpPUgpPSwpJRUdHRU5FCklF
- RFlPW19LXgQKbl9DWQpLX15PCkNYX1hPCk5FRkVYCkNEClhPWlhPQk9ETk9YQ14KQ0QKXEVGX1pe
- S15PClxPRkNeCk9ZWU8KSUNGRl9HCk5FRkVYTwpPXwpMX01DS14KRF9GRksKWktYQ0teX1gECm9S
- SU9aXk9fWApZQ0ReCkVJSUtPSUteCklfWkNOS15LXgpERUQKWlhFQ05PRF4GCllfRF4KQ0QKSV9G
- WksKW19DCkVMTENJQ0sKTk9ZT1hfRF4KR0VGRkNeCktEQ0cKQ04KT1leCkZLSEVYX0cE
diff --git a/puzzles/net-re/700/key b/puzzles/net-re/700/key
deleted file mode 100644
index 06796b9..0000000
--- a/puzzles/net-re/700/key
+++ /dev/null
@@ -1 +0,0 @@
-fixate rasterize
diff --git a/puzzles/net-re/8/index.mdwn b/puzzles/net-re/8/index.mdwn
deleted file mode 100644
index 4444336..0000000
--- a/puzzles/net-re/8/index.mdwn
+++ /dev/null
@@ -1,172 +0,0 @@
-XOR Masks
-=========
-
-Exclusive or (XOR, ⊕) is the binary operation “one or the other but not
-both”. The following table demonstrates how a binary XOR works:
-
- p q p⊕q
- ---------
- 0 0 0
- 0 1 1
- 1 0 1
- 1 1 0
-
-To XOR two multi-bit numbers, one must simply XOR each bit individually:
-
- 11110000
- ⊕ 10101010
- ==========
- 01011010
-
-
-Reversing XOR
--------------
-
-XOR has the peculiar property that `(p⊕q)⊕q = p` for any value of `p` or `q`:
-
- p q p⊕q (p⊕q)⊕q
- ------------------
- 0 0 0 0
- 0 1 1 0
- 1 0 1 1
- 1 1 0 1
-
-This also works for multi-bit numbers:
-
- 11110000 (0xF0)
- ⊕ 10101010 (0xAA)
- ==========
- 01011010 (0x9A)
-
- 01011010 (0x9A)
- ⊕ 10101010 (0xAA)
- ==========
- 11110000 (0xF0)
-
-
-XOR in encryption
------------------
-
-XOR is used extensively in many encryption algorithms. One reason it is
-popular is because it is easy to implement in hardware, since there is
-no possibility for overflow or underflow, there are no “carry” bits as
-in addition, and XOR is one of the basic logic gates used in
-electronics. For these reasons, it is also one of the quickest
-operations most CPUs can carry out.
-
-One of the most basic ways to use XOR in encryption is to XOR the
-plaintext (the thing to be encrypted) against the key:
-
- ATTACK AT DAWN
- ⊕ keykeykeykeyke
- ================
- *1-*&2K$-K!8<+
-
-Because of the reversible nature of XOR, the same key can be applied to
-decrypt the ciphertext:
-
- *1-*&2K$-K!8<+
- ⊕ keykeykeykeyke
- ================
- ATTACK AT DAWN
-
-
-Doing XOR on strings in Python
-------------------------------
-
-The following function in Python 3:
-
- def xor(n, b):
- return bytes(c ^ n for c in b)
-
-Will take a byte array, and return it XORed with n.
-
-Let's try an example:
-
- >>> def xor(n, b):
- ... return bytes(c ^ n for c in b)
- ...
- >>> xor(22, b'hello')
- b'~szzy'
- >>> xor(22, b'~szzy')
- b'hello'
- >>> xor(22, bytes([0, 1, 2, 3, 4]))
- b'\x16\x17\x14\x15\x12'
- >>>
-
-We will use this last method of invoking xor in the following sections,
-to work with hex dumps.
-
-
-Converting hex strings to byte arrays
--------------------------------------
-
-The following Python 3 function will take an ASCII representation of hex
-octets, and convert it to a byte array:
-
- >>> def unhex(s):
- ... import binascii
- ... return binascii.unhexlify(s.replace(' ', '').replace('\n', ''))
-
-
-Known-plaintext attacks against XOR encryption
-----------------------------------------------
-
-We have intercepted a coded message. We suspect the plaintext to
-consist solely of ASCII characters. The hex dump of the message is:
-
-
- 00000000 69 62 65 0a 7d 6f 0a 78 0a 79 7f 61 0a 6c 63 72 ┆ibe◙}o◙x◙y⌂a◙lcr┆
- 00000010 0a 67 19 0a 6d 1a 6b 7e 70 ┆◙g↓◙m→k~p┆
- 00000019
-
-Right away we can see that the character ◙ (`0x0A`) occurs fairly
-frequently. We will first guess that `0x0A` represents the letter “e”,
-which is the most common letter in English. To find the XOR key needed
-to turn turn “e” (`0x65`) into `0x0A`, we can simply XOR the two values:
-
- 0x65 (e)
- ⊕ 0x0A (◙)
- ======
- 0x6F (o)
-
-Let’s try applying the XOR key `0x6F` to the ciphertext. First, we will
-load the hex octets into a Python 3 byte array using our `unhex`
-function from the previous section:
-
- >>> a = unhex('69 62 65 0a 7d 6f 0a 78 0a 79 7f 61 0a 6c 63 72') + \
- ... unhex('0a 67 19 0a 6d 1a 6b 7e 70')
- >>> a
- b'ibe\n}o\nx\ny\x7fa\nlcr\ng\x19\nm\x1ak~p'
-
-Now, we'll xor it with our guess of `0x6F`:
- >>> xor(0x6F, a)
- b'\x06\r\ne\x12\x00e\x17e\x16\x10\x0ee\x03\x0c\x1de\x08ve\x02u\x04\x11\x1f'
-
-That doesn't look right. Let's try another guess, maybe ◙ represents a space:
-
- 0x20 ( )
- ⊕ 0x0A (◙)
- ======
- 0x2A (*)
-
-Now we apply this key:
-
- >>> xor(0x2A, a)
- b'CHO WE R SUK FIX M3 G0ATZ'
-
-This is clearly English text, although possibly some sort of code. In
-any case, we have broken the code with the key `0x2A`.
-
-
-Question
-========
-
-Use the known-plaintext attack technique against this XORed cyphertext:
-
- 00000000 01 2d 2c 25 30 23 36 37 2e 23 36 2b 2d 2c 31 62 ┆☺-,%0#67.#6+-,1b┆
- 00000010 2d 2c 62 3b 2d 37 30 62 20 30 27 23 29 6c 62 62 ┆-,b;-70b␣0'#)lbb┆
- 00000020 16 2a 27 62 29 27 3b 62 24 2d 30 62 36 2a 2b 31 ┆▬*'b)';b$-0b6*+1┆
- 00000030 62 32 23 25 27 62 2b 31 62 60 20 23 21 2d 2c 60 ┆b2#%'b+1b`␣#!-,`┆
- 00000040 6c ┆l┆
- 00000041
diff --git a/puzzles/net-re/8/key b/puzzles/net-re/8/key
deleted file mode 100644
index 6e953b2..0000000
--- a/puzzles/net-re/8/key
+++ /dev/null
@@ -1 +0,0 @@
-bacon
diff --git a/puzzles/net-re/800/index.mdwn b/puzzles/net-re/800/index.mdwn
deleted file mode 100644
index 14e85d8..0000000
--- a/puzzles/net-re/800/index.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-What is the IP address of `bungle.dirtbags.net`?
-
- 18:59:44.128730 IP 67.18.176.203.50495 > 67.18.176.203.domain
- 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
- 0x0010: 0041 15e8 4000 4011 3d09 4312 b0cb 4312 .A..@.@.=.C...C.
- 0x0020: b0cb c53f 0035 002d ebb4 11d4 0100 0001 ...?.5.-........
- 0x0030: 0000 0000 0000 0662 756e 676c 6508 6469 .......bungle.di
- 0x0040: 7274 6261 6773 036e 6574 0000 0100 01 rtbags.net.....
- 18:59:44.128786 IP 67.18.176.203.domain > 67.18.176.203.50495
- 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
- 0x0010: 00fb 0000 4000 4011 5237 4312 b0cb 4312 ....@.@.R7C...C.
- 0x0020: b0cb 0035 c53f 00e7 2b3b 11d4 8500 0001 ...5.?..+;......
- 0x0030: 0001 0005 0005 0662 756e 676c 6508 6469 .......bungle.di
- 0x0040: 7274 6261 6773 036e 6574 0000 0100 01c0 rtbags.net......
- 0x0050: 0c00 0100 0100 000e 1000 040a 4894 42c0 ............H.B.
- 0x0060: 1300 0200 0100 000e 1000 0603 6e73 31c0 ............ns1.
- 0x0070: 13c0 1300 0200 0100 000e 1000 0603 6e73 ..............ns
- 0x0080: 32c0 13c0 1300 0200 0100 000e 1000 0603 2...............
- 0x0090: 6e73 33c0 13c0 1300 0200 0100 000e 1000 ns3.............
- 0x00a0: 0603 6e73 34c0 13c0 1300 0200 0100 000e ..ns4...........
- 0x00b0: 1000 0603 6e73 35c0 13c0 4100 0100 0100 ....ns5...A.....
- 0x00c0: 000e 1000 0443 12b0 cbc0 5300 0100 0100 .....C....S.....
- 0x00d0: 000e 1000 0445 5d7f 0ac0 6500 0100 0100 .....E]...e.....
- 0x00e0: 000e 1000 0441 13b2 0ac0 7700 0100 0100 .....A....w.....
- 0x00f0: 000e 1000 044b 7f60 0ac0 8900 0100 0100 .....K.`........
- 0x0100: 000e 1000 04cf c046 0a .......F.
diff --git a/puzzles/net-re/800/key b/puzzles/net-re/800/key
deleted file mode 100644
index 1724b8b..0000000
--- a/puzzles/net-re/800/key
+++ /dev/null
@@ -1 +0,0 @@
-10.72.148.66
diff --git a/puzzles/net-re/summary.txt b/puzzles/net-re/summary.txt
deleted file mode 100644
index b14aed8..0000000
--- a/puzzles/net-re/summary.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-1 base math
-2 ASCII, Base64
-3 Application protocols 1
-4 MIME
-5 PCAP files and Wireshark
-6 Application protocols 2
-7 IP, TCP
-8 XOR masks
-10 Examine pcap
-20 Reconstruct image from HTTP in pcap
-30 Reconstruct image from FTP in pcap
-100 Hex decode
-200 Base64 decode
-250 Pull email out of pcap
-300 More pulling things out of pcap
-400 Still more pulling things out of pcap
-700 Base64, then xor
-800 DNS packet; you're going to have to do some research
-1000 16-byte xor key, but can be obtained with 1-byte
-1200 Another 16-byte xor key, can't be obtained with 1-byte
-2000 Paul's covert channel thingy
-3000 ICMP tunnel
-5000 ICMP tunnel, with xor
-25000 ICMP tunnel, with xor, multiplexed transfers
diff --git a/puzzles/sequence/1/index.mdwn b/puzzles/sequence/1/index.mdwn
deleted file mode 100644
index dd0e891..0000000
--- a/puzzles/sequence/1/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 2 3 4 5 _
diff --git a/puzzles/sequence/1/key b/puzzles/sequence/1/key
deleted file mode 100644
index 1e8b314..0000000
--- a/puzzles/sequence/1/key
+++ /dev/null
@@ -1 +0,0 @@
-6
diff --git a/puzzles/sequence/100/index.mdwn b/puzzles/sequence/100/index.mdwn
deleted file mode 100644
index fa4d240..0000000
--- a/puzzles/sequence/100/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 21 22 25 2a 31 3a _
diff --git a/puzzles/sequence/100/key b/puzzles/sequence/100/key
deleted file mode 100644
index ea90ee3..0000000
--- a/puzzles/sequence/100/key
+++ /dev/null
@@ -1 +0,0 @@
-45
diff --git a/puzzles/sequence/16/index.mdwn b/puzzles/sequence/16/index.mdwn
deleted file mode 100644
index d2caefa..0000000
--- a/puzzles/sequence/16/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 5 6 7 8 9 _
diff --git a/puzzles/sequence/16/key b/puzzles/sequence/16/key
deleted file mode 100644
index 7898192..0000000
--- a/puzzles/sequence/16/key
+++ /dev/null
@@ -1 +0,0 @@
-a
diff --git a/puzzles/sequence/19/index.mdwn b/puzzles/sequence/19/index.mdwn
deleted file mode 100644
index ee8cdc1..0000000
--- a/puzzles/sequence/19/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 2 3 5 7 11 13 _
diff --git a/puzzles/sequence/19/key b/puzzles/sequence/19/key
deleted file mode 100644
index 98d9bcb..0000000
--- a/puzzles/sequence/19/key
+++ /dev/null
@@ -1 +0,0 @@
-17
diff --git a/puzzles/sequence/2/index.mdwn b/puzzles/sequence/2/index.mdwn
deleted file mode 100644
index 88b06fc..0000000
--- a/puzzles/sequence/2/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 10 11 100 101 110 _ _
diff --git a/puzzles/sequence/2/key b/puzzles/sequence/2/key
deleted file mode 100644
index 9c657f0..0000000
--- a/puzzles/sequence/2/key
+++ /dev/null
@@ -1 +0,0 @@
-111 1000
diff --git a/puzzles/sequence/200/index.mdwn b/puzzles/sequence/200/index.mdwn
deleted file mode 100644
index b320eaa..0000000
--- a/puzzles/sequence/200/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- E D C D E E E . D D D . _ _ _
diff --git a/puzzles/sequence/200/key b/puzzles/sequence/200/key
deleted file mode 100644
index a1f32aa..0000000
--- a/puzzles/sequence/200/key
+++ /dev/null
@@ -1 +0,0 @@
-E G G
diff --git a/puzzles/sequence/25/index.mdwn b/puzzles/sequence/25/index.mdwn
deleted file mode 100644
index 4224f45..0000000
--- a/puzzles/sequence/25/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 4 9 16 25 _
diff --git a/puzzles/sequence/25/key b/puzzles/sequence/25/key
deleted file mode 100644
index 7facc89..0000000
--- a/puzzles/sequence/25/key
+++ /dev/null
@@ -1 +0,0 @@
-36
diff --git a/puzzles/sequence/300/index.mdwn b/puzzles/sequence/300/index.mdwn
deleted file mode 100644
index 54f637c..0000000
--- a/puzzles/sequence/300/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- ┐ ┕ ┚ ┟ _
diff --git a/puzzles/sequence/300/key b/puzzles/sequence/300/key
deleted file mode 100644
index 4e818df..0000000
--- a/puzzles/sequence/300/key
+++ /dev/null
@@ -1 +0,0 @@
-┤
diff --git a/puzzles/sequence/35/index.mdwn b/puzzles/sequence/35/index.mdwn
deleted file mode 100644
index 597a960..0000000
--- a/puzzles/sequence/35/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 1 1 2 3 5 8 _ _
diff --git a/puzzles/sequence/35/key b/puzzles/sequence/35/key
deleted file mode 100644
index 126eeda..0000000
--- a/puzzles/sequence/35/key
+++ /dev/null
@@ -1 +0,0 @@
-13 21
diff --git a/puzzles/sequence/400/index.mdwn b/puzzles/sequence/400/index.mdwn
deleted file mode 100644
index 17eea60..0000000
--- a/puzzles/sequence/400/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 0000 0001 0011 0010 0110 0111 _
diff --git a/puzzles/sequence/400/key b/puzzles/sequence/400/key
deleted file mode 100644
index 7d0d318..0000000
--- a/puzzles/sequence/400/key
+++ /dev/null
@@ -1 +0,0 @@
-0101
diff --git a/puzzles/sequence/450/index.mdwn b/puzzles/sequence/450/index.mdwn
deleted file mode 100644
index c992165..0000000
--- a/puzzles/sequence/450/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 04 aa 12 7f 99 03 ed c1 22 __ dc be e1 45 94
diff --git a/puzzles/sequence/450/key b/puzzles/sequence/450/key
deleted file mode 100644
index eeee65e..0000000
--- a/puzzles/sequence/450/key
+++ /dev/null
@@ -1 +0,0 @@
-05
diff --git a/puzzles/sequence/50/index.mdwn b/puzzles/sequence/50/index.mdwn
deleted file mode 100644
index 0a0db63..0000000
--- a/puzzles/sequence/50/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 4 8 15 16 23 _
diff --git a/puzzles/sequence/50/key b/puzzles/sequence/50/key
deleted file mode 100644
index d81cc07..0000000
--- a/puzzles/sequence/50/key
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/puzzles/sequence/600/index.mdwn b/puzzles/sequence/600/index.mdwn
deleted file mode 100644
index 687ee22..0000000
--- a/puzzles/sequence/600/index.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
- 00000000 61 61 9e 23 01 0c 0c 40 0d 05 40 29 13 08 0d 01
- 00000010 05 0c 4e 40 40 33 0f 0d 05 40 19 05 01 12 13 40
- 00000020 01 07 0f 4d 4d 0e 05 16 05 12 40 0d 09 0e 04 40
- 00000030 08 0f 17 40 0c 0f 0e 07 6a 10 12 05 03 09 13 05
- 00000040 0c 19 4d 4d 08 01 16 09 0e 07 40 0c 09 14 14 0c
- 00000050 05 40 0f 12 40 0e 0f 40 0d 0f 0e 05 19 40 09 0e
- 00000060 40 0d 19 40 10 15 12 13 05 4c 40 01 0e 04 40 0e
- 00000070 0f 14 08 09 0e 07 6a 10 01 12 14 09 03 15 0c 01
- 00000080 12 40 14 aa 61 62 9d 0f 40 09 0e 14 05 12 05 13
- 00000090 14 40 0d 05 40 0f 0e 40 13 08 0f 12 05 4c 40 29
- 000000a0 40 14 08 0f 15 07 08 14 40 29 40 17 0f 15 0c 04
- 000000b0 40 13 01 09 0c 40 01 02 0f 15 14 40 01 6a 0c 09
- 000000c0 14 14 0c 05 40 01 0e 04 40 13 05 05 40 14 08 05
- 000000d0 40 17 01 14 05 12 19 40 10 01 12 14 40 0f 06 40
- 000000e0 14 08 05 40 17 0f 12 0c 04 4e 40 40 29 14 40 09
- 000000f0 13 40 01 40 17 01 19 40 29 40 08 01 16 05 40 0f
- 00000100 06 6a 04 12 09 16 09 3b 61 63 9c 0e 07 40 0f 06
- 00000110 06 40 14 08 05 40 13 10 0c 05 05 0e 40 01 0e 04
- 00000120 40 12 05 07 15 0c 01 14 09 0e 07 40 14 08 05 40
- 00000130 03 09 12 03 15 0c 01 14 09 0f 0e 4e 40 40 37 08
- 00000140 05 0e 05 16 05 12 40 29 6a 06 09 0e 04 40 0d 19
- 00000150 13 05 0c 06 40 07 12 0f 17 09 0e 07 40 07 12 09
- 00000160 0d 40 01 02 0f 15 14 40 14 08 05 40 0d 0f 15 14
- 00000170 08 5b 40 17 08 05 0e 05 16 05 12 40 09 14 40 09
- 00000180 13 40 01 40 04 01 0d 10 4c 6a 04 bb __ __ __
-
diff --git a/puzzles/sequence/600/key b/puzzles/sequence/600/key
deleted file mode 100644
index 7a6f1f6..0000000
--- a/puzzles/sequence/600/key
+++ /dev/null
@@ -1 +0,0 @@
-61 64 9b
diff --git a/puzzles/sequence/700/index.mdwn b/puzzles/sequence/700/index.mdwn
deleted file mode 100644
index ea9dc0e..0000000
--- a/puzzles/sequence/700/index.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
- C: 00 f1 00 b4 0b 68 65 6c 6c 6f 20 77 6f 72 6c 64
- S: 00 bf 00 f1 02 68 69
- C: 00 f3 00 bf 0b 68 6f 77 20 61 72 65 20 79 6f 75
- S: 00 ca 00 f3 0d 6e 6f 74 20 62 61 64 2c 20 79 6f 75 3f
- C: __ __ __ __ __ 62 65 65 6e 20 77 6f 72 73 65
diff --git a/puzzles/sequence/700/key b/puzzles/sequence/700/key
deleted file mode 100644
index b26eb5a..0000000
--- a/puzzles/sequence/700/key
+++ /dev/null
@@ -1 +0,0 @@
-01 00 00 ca 0a
\ No newline at end of file
diff --git a/puzzles/sequence/8/index.mdwn b/puzzles/sequence/8/index.mdwn
deleted file mode 100644
index 40b13dd..0000000
--- a/puzzles/sequence/8/index.mdwn
+++ /dev/null
@@ -1 +0,0 @@
- 66 67 70 71 72 73 74 75 76 77 _
diff --git a/puzzles/sequence/8/key b/puzzles/sequence/8/key
deleted file mode 100644
index 29d6383..0000000
--- a/puzzles/sequence/8/key
+++ /dev/null
@@ -1 +0,0 @@
-100
diff --git a/puzzles/sequence/summary.txt b/puzzles/sequence/summary.txt
deleted file mode 100644
index 0d50792..0000000
--- a/puzzles/sequence/summary.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-1 Count to 6
-2 Binary
-8 Octal
-16 Hex
-19 Primes
-25 Squares
-35 Fibonacci
-50 Numbers from Lost TV show
-100 Geometric sequence in hex
-200 Music
-300 Unicode
-400 Gray sequence (really awful puzzle)
-450 Pascal strings
-600 X-Modem + xor
-700 Packet sequence numbers
-
-
diff --git a/puzzles/skynet/100/index.mdwn b/puzzles/skynet/100/index.mdwn
deleted file mode 100644
index 2731c51..0000000
--- a/puzzles/skynet/100/index.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user complains that their computer is slow and that all of their
-email contacts are receving junk email from them. You find a file on
-their system. Reverse engineer this file and answer the following
-question:
-
-What is the name of the file that is copied to the system directory?
-(Answer is lowercase, and only the name of the file)
\ No newline at end of file
diff --git a/puzzles/skynet/100/key b/puzzles/skynet/100/key
deleted file mode 100644
index 9710187..0000000
--- a/puzzles/skynet/100/key
+++ /dev/null
@@ -1 +0,0 @@
-bbeagle.exe
diff --git a/puzzles/skynet/100/malware.zip b/puzzles/skynet/100/malware.zip
deleted file mode 100644
index e84b564..0000000
Binary files a/puzzles/skynet/100/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/102/index.mdwn b/puzzles/skynet/102/index.mdwn
deleted file mode 100644
index 60c331f..0000000
--- a/puzzles/skynet/102/index.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user complains that their computer is slow and that all of their
-email contacts are receving junk email from them. You find a file on
-their system. Reverse engineer this file and answer the following
-question:
-
-What is the agent string sent to the call-home website?
diff --git a/puzzles/skynet/102/key b/puzzles/skynet/102/key
deleted file mode 100644
index 1584a27..0000000
--- a/puzzles/skynet/102/key
+++ /dev/null
@@ -1 +0,0 @@
-beagle_beagle
diff --git a/puzzles/skynet/102/malware.zip b/puzzles/skynet/102/malware.zip
deleted file mode 100644
index e84b564..0000000
Binary files a/puzzles/skynet/102/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/200/index.mdwn b/puzzles/skynet/200/index.mdwn
deleted file mode 100644
index 3e040a8..0000000
--- a/puzzles/skynet/200/index.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-What is the original entry point (OEP)?
-(Answer in all lower case, enter the virtual address in hex)
\ No newline at end of file
diff --git a/puzzles/skynet/200/key b/puzzles/skynet/200/key
deleted file mode 100644
index e46ab34..0000000
--- a/puzzles/skynet/200/key
+++ /dev/null
@@ -1 +0,0 @@
-402fcc
diff --git a/puzzles/skynet/200/malware.zip b/puzzles/skynet/200/malware.zip
deleted file mode 100644
index 0a969b0..0000000
Binary files a/puzzles/skynet/200/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/202/index.mdwn b/puzzles/skynet/202/index.mdwn
deleted file mode 100644
index fe92ea3..0000000
--- a/puzzles/skynet/202/index.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-How does the program deliver its payload after the initial exploitation?
-(Answer in all lower case)
\ No newline at end of file
diff --git a/puzzles/skynet/202/key b/puzzles/skynet/202/key
deleted file mode 100644
index 63cfc22..0000000
--- a/puzzles/skynet/202/key
+++ /dev/null
@@ -1 +0,0 @@
-tftp
diff --git a/puzzles/skynet/202/malware.zip b/puzzles/skynet/202/malware.zip
deleted file mode 100644
index 0a969b0..0000000
Binary files a/puzzles/skynet/202/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/203/index.mdwn b/puzzles/skynet/203/index.mdwn
deleted file mode 100644
index cae30d0..0000000
--- a/puzzles/skynet/203/index.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-What is the name of the first Windows API executed after unpacking?
diff --git a/puzzles/skynet/203/key b/puzzles/skynet/203/key
deleted file mode 100644
index 322b67a..0000000
--- a/puzzles/skynet/203/key
+++ /dev/null
@@ -1 +0,0 @@
-FreeConsole
diff --git a/puzzles/skynet/203/malware.zip b/puzzles/skynet/203/malware.zip
deleted file mode 100644
index 0a969b0..0000000
Binary files a/puzzles/skynet/203/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/300/index.mdwn b/puzzles/skynet/300/index.mdwn
deleted file mode 100644
index 2b76225..0000000
--- a/puzzles/skynet/300/index.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-What is the name of the packer used to obfuscate this program?
-(Answer in lower case)
\ No newline at end of file
diff --git a/puzzles/skynet/300/key b/puzzles/skynet/300/key
deleted file mode 100644
index 40b7a6a..0000000
--- a/puzzles/skynet/300/key
+++ /dev/null
@@ -1 +0,0 @@
-pecompact
diff --git a/puzzles/skynet/300/malware.zip b/puzzles/skynet/300/malware.zip
deleted file mode 100644
index e83064e..0000000
Binary files a/puzzles/skynet/300/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/301/index.mdwn b/puzzles/skynet/301/index.mdwn
deleted file mode 100644
index f887ae6..0000000
--- a/puzzles/skynet/301/index.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-What is the address of the original entry point?
-(Answer in all lower case, enter the virtual address in hex)
\ No newline at end of file
diff --git a/puzzles/skynet/301/key b/puzzles/skynet/301/key
deleted file mode 100644
index c22deab..0000000
--- a/puzzles/skynet/301/key
+++ /dev/null
@@ -1 +0,0 @@
-4028de
diff --git a/puzzles/skynet/301/malware.zip b/puzzles/skynet/301/malware.zip
deleted file mode 100644
index e83064e..0000000
Binary files a/puzzles/skynet/301/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/302/index.mdwn b/puzzles/skynet/302/index.mdwn
deleted file mode 100644
index ef48518..0000000
--- a/puzzles/skynet/302/index.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-Your network is not working. The cheap routers that the network
-engineers decided to buy (largely because of all the free booze
-and golf trips the vendor paid for) are melting. Reverse engineer this
-file and answer the following question:
-
-What is the name of the second executed mutex?
diff --git a/puzzles/skynet/302/key b/puzzles/skynet/302/key
deleted file mode 100644
index 18d2446..0000000
--- a/puzzles/skynet/302/key
+++ /dev/null
@@ -1 +0,0 @@
-SkynetSasserVersionWithPingFast
diff --git a/puzzles/skynet/302/malware.zip b/puzzles/skynet/302/malware.zip
deleted file mode 100644
index e83064e..0000000
Binary files a/puzzles/skynet/302/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/400/index.mdwn b/puzzles/skynet/400/index.mdwn
deleted file mode 100644
index 6ff0aea..0000000
--- a/puzzles/skynet/400/index.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user is complaining of random blue screens. Their computer is
-running slowly. When you inspect the system you find a file named
-malware.sys. Reverse engineer it and answer the following question.
-
-What user mode process does the kernel module inject into?
\ No newline at end of file
diff --git a/puzzles/skynet/400/key b/puzzles/skynet/400/key
deleted file mode 100644
index 387eac7..0000000
--- a/puzzles/skynet/400/key
+++ /dev/null
@@ -1 +0,0 @@
-services.exe
diff --git a/puzzles/skynet/400/malware.zip b/puzzles/skynet/400/malware.zip
deleted file mode 100644
index 64d19cd..0000000
Binary files a/puzzles/skynet/400/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/401/index.mdwn b/puzzles/skynet/401/index.mdwn
deleted file mode 100644
index b9829d1..0000000
--- a/puzzles/skynet/401/index.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user is complaining of random blue screens. Their computer is
-running slowly. When you inspect the system you find a file named
-malware.sys. Reverse engineer it and answer the following question.
-
-What is the name of the DeviceObject for the kernel code?
\ No newline at end of file
diff --git a/puzzles/skynet/401/key b/puzzles/skynet/401/key
deleted file mode 100644
index 622d880..0000000
--- a/puzzles/skynet/401/key
+++ /dev/null
@@ -1 +0,0 @@
-67678dj*&78
diff --git a/puzzles/skynet/401/malware.zip b/puzzles/skynet/401/malware.zip
deleted file mode 100644
index 64d19cd..0000000
Binary files a/puzzles/skynet/401/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/500/index.mdwn b/puzzles/skynet/500/index.mdwn
deleted file mode 100644
index 28d6a42..0000000
--- a/puzzles/skynet/500/index.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user complains that they are getting complaints of mass amounts of
-penny stock scam emails coming from their computer. You happen to
-extract this file from your network captures.
-
-What is the name of the file that is written to disk by this sample?
-Enter your answer with all lower-case letters.
\ No newline at end of file
diff --git a/puzzles/skynet/500/key b/puzzles/skynet/500/key
deleted file mode 100644
index 6197846..0000000
--- a/puzzles/skynet/500/key
+++ /dev/null
@@ -1,2 +0,0 @@
-c:\windows\system32:lzx32.sys
-
diff --git a/puzzles/skynet/500/laststage-unpacker.exe b/puzzles/skynet/500/laststage-unpacker.exe
deleted file mode 100644
index db42b4f..0000000
Binary files a/puzzles/skynet/500/laststage-unpacker.exe and /dev/null differ
diff --git a/puzzles/skynet/500/malware.zip b/puzzles/skynet/500/malware.zip
deleted file mode 100644
index 759c395..0000000
Binary files a/puzzles/skynet/500/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/501/index.mdwn b/puzzles/skynet/501/index.mdwn
deleted file mode 100644
index 7285ef0..0000000
--- a/puzzles/skynet/501/index.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-This category contains live samples of real malware. If you participate
-in this category, you agree to take all proper precautions: running in
-a virtual machine, properly cleaning your system afterwards, and not
-exposing any networks to these samples.
-
-YOU HAVE BEEN WARNED!
-
-A user complains that they are getting complaints of mass amounts of
-penny stock scam emails coming from their computer. You happen to
-extract this file from your network captures.
-
-You'll need the previously dropped file for this exercise.
-
-What is the tag identifier for the ExAllocatePoolWithTag?
-(enter the ascii text)
\ No newline at end of file
diff --git a/puzzles/skynet/501/key b/puzzles/skynet/501/key
deleted file mode 100644
index ea5431b..0000000
--- a/puzzles/skynet/501/key
+++ /dev/null
@@ -1 +0,0 @@
- kdD
diff --git a/puzzles/skynet/501/laststage-unpacker.exe b/puzzles/skynet/501/laststage-unpacker.exe
deleted file mode 100644
index db42b4f..0000000
Binary files a/puzzles/skynet/501/laststage-unpacker.exe and /dev/null differ
diff --git a/puzzles/skynet/501/malware.zip b/puzzles/skynet/501/malware.zip
deleted file mode 100644
index 759c395..0000000
Binary files a/puzzles/skynet/501/malware.zip and /dev/null differ
diff --git a/puzzles/skynet/summary.txt b/puzzles/skynet/summary.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/puzzles/survey/1000000/,submit.cgi b/puzzles/survey/1000000/,submit.cgi
deleted file mode 100755
index 39a9a08..0000000
--- a/puzzles/survey/1000000/,submit.cgi
+++ /dev/null
@@ -1,25 +0,0 @@
-#! /usr/bin/env python3
-
-import cgi
-import time
-import os
-
-f = cgi.FieldStorage()
-if f.getfirst('submit'):
- print('Content-type: text/plain')
- print()
- print('Thanks for filling in the survey.')
- print()
- try:
- fn = '/var/lib/ctf/survey/%s.%d.%d.txt' % (time.strftime('%Y-%m-%d'), time.time(), os.getpid())
- o = open(fn, 'w')
- for k in f.keys():
- o.write('%s: %r\n' % (k, f.getlist(k)))
- except IOError:
- pass
- print('The key is:')
- print(' quux blorb frotz')
-else:
- print('Content-type: text/plain')
- print()
- print('You need to actually fill in the form to get the key.')
diff --git a/puzzles/survey/1000000/,survey.html b/puzzles/survey/1000000/,survey.html
deleted file mode 100644
index 0ed037b..0000000
--- a/puzzles/survey/1000000/,survey.html
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- Survey
-
-
-
-
-
-
-
diff --git a/puzzles/survey/1000000/index.mdwn b/puzzles/survey/1000000/index.mdwn
deleted file mode 100644
index 486aafe..0000000
--- a/puzzles/survey/1000000/index.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Thanks for playing Capture The Flag! We would like to know what you
-think of the game; please fill out this survey and you will
-recieve a key redeemable for **ONE MILLION POINTS**.
-
-
diff --git a/puzzles/survey/1000000/key b/puzzles/survey/1000000/key
deleted file mode 100644
index 0bb4c84..0000000
--- a/puzzles/survey/1000000/key
+++ /dev/null
@@ -1 +0,0 @@
-quux blorb frotz
diff --git a/puzzles/survey/summary.txt b/puzzles/survey/summary.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/puzzles/webapp/10/,binary.png b/puzzles/webapp/10/,binary.png
deleted file mode 100644
index 81cecbf..0000000
Binary files a/puzzles/webapp/10/,binary.png and /dev/null differ
diff --git a/puzzles/webapp/10/,ctf.css b/puzzles/webapp/10/,ctf.css
deleted file mode 100644
index 4f1b798..0000000
--- a/puzzles/webapp/10/,ctf.css
+++ /dev/null
@@ -1,62 +0,0 @@
-html,body {
- height: 100%;
- min-height: 100%;
- background-color: #000000;
- background-image: url(",binary.png");
- background-repeat: repeat;
- margin: 0;
- padding: 0;
-}
-
-#wrapper {
- min-height: 100%;
- height: 100%;
- width: 800px;
- margin: 0 auto;
- border-left: 2px solid #009900;
- border-right: 2px solid #009900;
- font: .9em monospace;
- color: #009900;
- padding: 0;
- background: #000;
-}
-
-#content {
- padding: 2em 1.5em 2em 1.5em;
-}
-
-#footer {
- padding: 0;
- margin: 0;
- height: 2em;
- line-height: 2em;
- width: 800px;
- text-align: center;
-}
-
-input {
- background-color: #222;
- color: #fff;
- border: 1px solid #009900;
- padding: 1px 2px 1px 2px;
-}
-
-h1,h2,h3,h4 {
- padding-bottom: 5px;
-}
-
-.vertsep {
- width: 100%;
- height: 1px;
- padding: 0;
- margin: 2em auto 2em auto;
- border-bottom: 1px dotted #222;
-}
-
-.error {
- padding: 1em;
- background: #fff;
- color: red;
- border: 1px solid red;
- font-weight: bold;
-}
diff --git a/puzzles/webapp/10/1.cgi b/puzzles/webapp/10/1.cgi
deleted file mode 100755
index 91ddffd..0000000
--- a/puzzles/webapp/10/1.cgi
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/python
-
-import cgi
-import cgitb
-
-print 'Content-Type: text/html'
-print ''
-
-print '''
-
-
- 1
-
-
-
-
-
-
-
Web Application Challenge 1
-
Through some manipulation or interpretation of this CGI script
- and the HTML page(s) that it generates, a 10 character key can be
- found.
-
-
-'''
-
diff --git a/puzzles/webapp/30/key b/puzzles/webapp/30/key
deleted file mode 100644
index 4023e13..0000000
--- a/puzzles/webapp/30/key
+++ /dev/null
@@ -1 +0,0 @@
-BRrHdtdADI
diff --git a/puzzles/webapp/summary.txt b/puzzles/webapp/summary.txt
deleted file mode 100644
index 03f7ce0..0000000
--- a/puzzles/webapp/summary.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-10: the key is in the generated source.
-20: enter a non-integer into form field and submit. the key is in the resulting
- traceback.
-30: change the value in the GET request to a non-integer. the key is in the
- resulting traceback.
-40: change the value in the POST request to a non-integer. the key is in the
- resulting traceback.
-50: change the quantity value (hidden form field) to something greater than the
- stated quantity limit. the key is in the resulting traceback. entering non-
- integers is caught and handled, so that no longer works.
-60: the key is in the cookie. note the javascript that reads a value from the
- cookie, hopefully causing the player to take a look at the cookie.
-70: modify the cookie's content_name field to something invalid, reload the page
- and the key will be printed on the page.
-80: an sql query is being constructed in javascript from form fields. change the
- form fields such that the query is SELECT * FROM key LIMIT 6 and the key will
- be displayed.