diff --git a/puzzles/compaq/100/aacaaebb0cd0503e7bad97c42321a738 b/puzzles/bletchley/150/aacaaebb0cd0503e7bad97c42321a738
similarity index 100%
rename from puzzles/compaq/100/aacaaebb0cd0503e7bad97c42321a738
rename to puzzles/bletchley/150/aacaaebb0cd0503e7bad97c42321a738
diff --git a/puzzles/bletchley/150/index.html b/puzzles/bletchley/150/index.html
new file mode 100644
index 0000000..672516c
--- /dev/null
+++ b/puzzles/bletchley/150/index.html
@@ -0,0 +1,2 @@
+Recovery, while not strictly necessary, may be tremendously helpful.
+
diff --git a/puzzles/bletchley/150/key b/puzzles/bletchley/150/key
new file mode 100644
index 0000000..1349adc
--- /dev/null
+++ b/puzzles/bletchley/150/key
@@ -0,0 +1 @@
+jackalope wheeze
\ No newline at end of file
diff --git a/puzzles/compaq/300/936bc08007a9076673a81040024728be b/puzzles/bletchley/350/936bc08007a9076673a81040024728be
similarity index 100%
rename from puzzles/compaq/300/936bc08007a9076673a81040024728be
rename to puzzles/bletchley/350/936bc08007a9076673a81040024728be
diff --git a/puzzles/compaq/300/key b/puzzles/bletchley/350/key
similarity index 100%
rename from puzzles/compaq/300/key
rename to puzzles/bletchley/350/key
diff --git a/puzzles/compaq/50/adddbafb502355634d9ef10e1848cf52 b/puzzles/bletchley/50/adddbafb502355634d9ef10e1848cf52
similarity index 100%
rename from puzzles/compaq/50/adddbafb502355634d9ef10e1848cf52
rename to puzzles/bletchley/50/adddbafb502355634d9ef10e1848cf52
diff --git a/puzzles/bletchley/50/key b/puzzles/bletchley/50/key
new file mode 100644
index 0000000..0db4aae
--- /dev/null
+++ b/puzzles/bletchley/50/key
@@ -0,0 +1 @@
+extra special text
diff --git a/puzzles/compaq/1000/1d45b460b5844d0d769ca469f7b5bdc7 b/puzzles/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7
similarity index 100%
rename from puzzles/compaq/1000/1d45b460b5844d0d769ca469f7b5bdc7
rename to puzzles/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7
diff --git a/puzzles/compaq/1000/key b/puzzles/bletchley/900/key
similarity index 100%
rename from puzzles/compaq/1000/key
rename to puzzles/bletchley/900/key
diff --git a/puzzles/compaq/100/index.html b/puzzles/compaq/100/index.html
index 672516c..b2dc9d2 100644
--- a/puzzles/compaq/100/index.html
+++ b/puzzles/compaq/100/index.html
@@ -1,2 +1,48 @@
-Recovery, while not strictly necessary, may be tremendously helpful.
-
+
+
+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
index 1349adc..53d2da6 100644
--- a/puzzles/compaq/100/key
+++ b/puzzles/compaq/100/key
@@ -1 +1 @@
-jackalope wheeze
\ No newline at end of file
+root:x:0:0:root:/root:/bin/bash
\ No newline at end of file
diff --git a/puzzles/compaq/50/index.html b/puzzles/compaq/50/index.html
new file mode 100755
index 0000000..c4a1490
--- /dev/null
+++ b/puzzles/compaq/50/index.html
@@ -0,0 +1,48 @@
+
+
+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
index 0db4aae..1661a56 100644
--- a/puzzles/compaq/50/key
+++ b/puzzles/compaq/50/key
@@ -1 +1 @@
-extra special text
+4C
\ No newline at end of file
diff --git a/tanks/lib/Pflanzarr.py b/tanks/lib/Pflanzarr.py
index ac600a2..ae0d985 100644
--- a/tanks/lib/Pflanzarr.py
+++ b/tanks/lib/Pflanzarr.py
@@ -202,14 +202,16 @@ class Pflanzarr:
winner = random.choice(winners)
html = ['',
- 'Game %d results',
- '',
+ 'Game %d Results' % self._gameNum ,
+ '',
'',
'',
- '
Team
Kills
Cause of Death']
+ '
Game %d Results
' % self._gameNum,
+ '
',
+ '
Team
Kills
Cause of Death']
for tank in tanks:
if tank is winner:
- rowStyle = 'style="font-weight:bold; '\
+ rowStyle = 'style="text-decoration:underline; '\
'background-color:%s"' % tank.color
else:
rowStyle = 'style="background-color:%s"' % tank.color
@@ -238,7 +240,7 @@ class Pflanzarr:
movieCmd = ['ffmpeg',
'-r', '10', # Set the framerate to 10/second
- '-b', '8k', # Set the bitrate
+ '-b', '4000k', # Set the bitrate
'-i', '%s/%%05d.ppm' % self._imageDir, # The input files.
# '-vcodec', 'msmpeg4v2',
'%s/game.avi' % self._gameDir]
diff --git a/tanks/run b/tanks/run
index 5a5b932..4344c7f 100755
--- a/tanks/run
+++ b/tanks/run
@@ -2,5 +2,5 @@
[ -f /var/lib/ctf/disabled/tanks ] && exit 0
-exec envuidgid ctf python2.6 run_tanks.py /var/lib/tanks/ easy 100 2>&1
+exec envuidgid ctf python2.6 run_tanks.py /var/lib/tanks/ easy 500 2>&1
#envuidgid ctf report_score.py 2>&1
diff --git a/tanks/www/ctf.css b/tanks/www/ctf.css
index f3b91d1..cf21d76 100644
--- a/tanks/www/ctf.css
+++ b/tanks/www/ctf.css
@@ -98,3 +98,7 @@ fieldset * {
margin: 3px;
}
+table.results td, th{
+ padding : 3px;
+ font-weight : bold;
+}
diff --git a/tanks/www/errors.cgi b/tanks/www/errors.cgi
index f61d2bc..821082a 100755
--- a/tanks/www/errors.cgi
+++ b/tanks/www/errors.cgi
@@ -24,6 +24,7 @@ teams.build_teams()
head = open('head.html').read() % "Error Report"
print(head)
+print('
Your Errors
')
print(open('links.html').read())
def done():
diff --git a/tanks/www/results.cgi b/tanks/www/results.cgi
index ceb4ae2..3055cf7 100755
--- a/tanks/www/results.cgi
+++ b/tanks/www/results.cgi
@@ -42,7 +42,7 @@ gameNums.sort(reverse=True)
i = 0
num = str(gameNums[i])
for i in range(len(gameNums)):
- path = os.path.join( 'results', str(gameNums[i]), 'results.html') )
+ path = os.path.join( 'results', str(gameNums[i]), 'results.html')
if os.path.exists( path ):
break
gameNums = gameNums[i:]