diff --git a/packages/crypto/200/index.mdwn b/packages/crypto/200/index.mdwn
new file mode 100644
index 0000000..dafffc1
--- /dev/null
+++ b/packages/crypto/200/index.mdwn
@@ -0,0 +1,2 @@
+
- Alice
- 25 7 49 b 1a 50 27 3d 63 73 3e 4c 1d 17 1b 5b 35 3a 61 7e 7b 53 53 6 b
9 36 37 26 64 7c 42 17 52 c 1d 36 37 26 64 74 45 17 51 5 7 65 72 3f 66
75 1c 2 4b 3 11 3c 77 38 6a 7f 5b 57 5b 3 f 33 32 29 23 6d 5f 5d 4a 48
4d 3c 35 2b 21 23 55 5b 4c 1 54 3c 2f 24 21 35 1c 4c 4d 51 5d 79 3e 6d 3e
3b 59 7d 45 55 5e 20 51 65 21 3b 58 25 4c 1 6 78 51 29 79 72 47 71 9 30
14 67 5 61 55 6d 47 76 e 38 8 2f 19 79 18 7b 5b 6c 14 7a 17 3e 8 34 1b
74 4c 67 47 68 54 38 f 22 48 27 57 63 57 3c 4e 38 d 77 4b 27 4c 65 57 20
49 23 12 3e 4e 2e 3 65 56 2f 5a 23 c 22 f 2d 42 7f e 2f 59 2a 1a 2e 41
3c 52 6e e 35 54 20 b 6b 15 23 49 67 7 35 41 2c 47 6f 54 33 48 69 4f 74
+ - Bob
- 36 d 5 1e 59 16 68 6c 6a 31 73 1a 4c 1d 50 a 36 6c 6a 35 2a 5b 5 d 5d
5e 7b 64 7e 7d 29 1e 8 12 5d 45 7b 7c 32 29 2d 1e 11 12 42 43 71 66 32 36
2b 10 12 12 42 43 75 32 7c 27 3b 1 12 8 4f 49 64 77 28 3f 3c 1e d 44 5a
4f 3e 6c 28 36 6f 4b 1f 4d 45 4f 8 5d e 69 6f 6a 28 7a 49 18 3 5c 12 69
68 71 33 75 1b d 2 40 1c 6d 68 6e 39 3c 0 7 1c 5c 1c 64 6e 7a 3a 75 7
1b 16 4e 55 64 72 66 26 30 16 52 0 53 5e 75 26 69 3c 30 6 8 49 1c 44 6e
6d 69 6f 35 1b 4 1b 1d 50 77 77 3b 7e 22 18 0 1b 1f 56 38 6e 74 70 38 18
diff --git a/packages/mcp/Makefile b/packages/mcp/Makefile
deleted file mode 100644
index f46402d..0000000
--- a/packages/mcp/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-SUBDIRS = src
-PKGDIR = pkg
-PACKAGE = mcp.pkg
-
-all: package
-
-package: $(PACKAGE)
-
-$(PACKAGE): build
- mkdir -p $(PKGDIR)
-
- cp setup $(PKGDIR)
-
- find bin -not -name '*~' | cpio -p $(PKGDIR)
- cp src/in.tokend $(PKGDIR)/bin
- cp src/tokencli src/pointscli $(PKGDIR)/bin
- cp src/puzzles.cgi $(PKGDIR)/bin
-
- find service -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR)
-
- find www -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR)
- cp src/puzzler.cgi src/claim.cgi $(PKGDIR)/www
-
- mksquashfs $(PKGDIR) $(PACKAGE) -all-root -noappend
-
-
-include $(addsuffix /*.mk, $(SUBDIRS))
-
-test: build
- ./test.sh
-
-build: $(addsuffix -build, $(SUBDIRS))
-clean: $(addsuffix -clean, $(SUBDIRS))
- rm -rf $(PKGDIR) $(PACKAGE)
diff --git a/packages/mcp/fnord.patch b/packages/mcp/fnord.patch
new file mode 100644
index 0000000..dc0260f
--- /dev/null
+++ b/packages/mcp/fnord.patch
@@ -0,0 +1,15 @@
+diff -Naur fnord-1.10-orig//httpd.c fnord-1.10/httpd.c
+--- fnord-1.10-orig//httpd.c 2011-03-08 22:28:18.000000000 -0700
++++ fnord-1.10/httpd.c 2011-03-08 22:31:12.000000000 -0700
+@@ -663,8 +663,9 @@
+ static char* mimetype="text/plain";
+
+ static struct mimeentry { const char* name, *type; } mimetab[] = {
+- { "html", "text/html" },
+- { "htm", "text/html" },
++ { "html", "text/html; charset=utf-8" },
++ { "htm", "text/html; charset=utf-8" },
++ { "txt", "text/plain; charset=utf-8" },
+ { "css", "text/css" },
+ { "dvi", "application/x-dvi" },
+ { "ps", "application/postscript" },
diff --git a/packages/mcp/mcp.mk b/packages/mcp/mcp.mk
index e91d9d8..2aca76a 100644
--- a/packages/mcp/mcp.mk
+++ b/packages/mcp/mcp.mk
@@ -1,6 +1,30 @@
MCP_PKGDIR = $(TARGET)/mcp
+MCP_BUILDDIR = $(BUILD)/mcp
-mcp-install: mcp-build
+MCP_FNORD_VERSION = 1.10
+MCP_FNORD_TARBALL = fnord-$(MCP_FNORD_VERSION).tar.bz2
+MCP_FNORD_TARCACHE = $(CACHE)/$(MCP_FNORD_TARBALL)
+MCP_FNORD_URL = http://www.fefe.de/fnord/$(MCP_FNORD_TARBALL)
+MCP_FNORD_SRCDIR = $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION)
+
+$(MCP_FNORD_TARCACHE):
+ @ mkdir -p $(@D)
+ wget -O $@ $(MCP_FNORD_URL)
+
+mcp-source: $(MCP_BUILDDIR)/source
+$(MCP_BUILDDIR)/source: $(MCP_FNORD_TARCACHE)
+ mkdir -p $(@D)
+ bzcat $< | (cd $(@D) && tar xf -)
+ (cd $(@D)/fnord-$(MCP_FNORD_VERSION) && patch -p 1) < packages/mcp/fnord.patch
+ touch $@
+
+mcp-build: $(MCP_BUILDDIR)/build
+$(MCP_BUILDDIR)/build: $(MCP_BUILDDIR)/source
+ $(MAKE) -C packages/mcp/src build
+ $(MAKE) -C $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION) DIET= CC=$(CC) fnord-cgi
+
+
+mcp-install: $(MCP_BUILDDIR)/build
mkdir -p $(MCP_PKGDIR)
$(call COPYTREE, packages/mcp/bin, $(MCP_PKGDIR)/bin)
@@ -8,6 +32,8 @@ mcp-install: mcp-build
cp packages/mcp/src/pointscli $(MCP_PKGDIR)/bin/
cp packages/mcp/src/puzzles.cgi $(MCP_PKGDIR)/bin/
+ cp $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION)/fnord-cgi $(MCP_PKGDIR)/bin/
+
$(call COPYTREE, packages/mcp/service, $(MCP_PKGDIR)/service)
$(call COPYTREE, packages/mcp/tokend.keys, $(MCP_PKGDIR)/tokend.keys)
@@ -20,10 +46,7 @@ mcp-test: mcp-build
packages/mcp/test.sh
mcp-clean:
- rm -rf $(MCP_PKGDIR)
+ rm -rf $(MCP_PKGDIR) $(MCP_BUILDDIR)
$(MAKE) -C packages/mcp/src clean
-mcp-build:
- $(MAKE) -C packages/mcp/src build
-
PACKAGES += mcp
\ No newline at end of file
diff --git a/packages/mcp/service/httpd/run b/packages/mcp/service/httpd/run
index 9319dcb..a3b1026 100755
--- a/packages/mcp/service/httpd/run
+++ b/packages/mcp/service/httpd/run
@@ -14,11 +14,8 @@ for d in /opt/*; do
fi
done
-cd /var/www
-exec thttpd -D \
- -h 10.0.0.2 \
- -c "**.cgi" \
- -u ctf \
- -l /proc/self/fd/1 \
- -T UTF-8 \
- -nos
+
+mkdir -p sites
+cd sites
+ln -sf /var/www default
+exec tcpsvd -u ctf 10.0.0.2 80 /opt/mcp/bin/fnord-cgi
diff --git a/packages/mcp/service/tokend/run b/packages/mcp/service/tokend/run
index e40b9e5..52860c5 100755
--- a/packages/mcp/service/tokend/run
+++ b/packages/mcp/service/tokend/run
@@ -2,7 +2,7 @@
exec 2>&1
-ip addr add 10.0.0.2/24 label eth0:mcp dev eth0
+ip addr add 10.0.0.2/16 label eth0:mcp dev eth0
DB=/var/lib/ctf/tokens.db
diff --git a/packages/mcp/src/puzzles.cgi.c b/packages/mcp/src/puzzles.cgi.c
index 8edf29d..f7efed1 100644
--- a/packages/mcp/src/puzzles.cgi.c
+++ b/packages/mcp/src/puzzles.cgi.c
@@ -156,7 +156,7 @@ main(int argc, char *argv[])
printf(" %s\n", cat);
printf(" \n");
for (i = 0; i < ncatpoints; i += 1) {
- printf(" %ld\n",
+ printf(" %ld\n",
cat, catpoints[i], catpoints[i]);
if (catpoints[i] > maxpoints) break;
}
diff --git a/packages/mcp/www/register.cgi b/packages/mcp/www/register.cgi
new file mode 100755
index 0000000..e71c445
--- /dev/null
+++ b/packages/mcp/www/register.cgi
@@ -0,0 +1,34 @@
+#! /bin/sh -e
+
+team=$(echo "$QUERY_STRING" | sed -n s'/.*team=\([^&]*\).*/\1/p')
+team=$(busybox httpd -d "$team" || echo "$team")
+
+cat <
+
+
+ Team Registration
+
+
+
+ Team Registration
+EOF
+
+if [ ! -w /var/www ] || [ ! -w /var/lib/ctf/teams ]; then
+ echo "It looks like the server isn't set up for self-registrations."
+ echo "Go talk to someone at the head table to register your team.
"
+else
+ echo "Team name: $team
"
+ echo -n ""
+ if /opt/mcp/bin/addteam "$team"; then
+ echo "
Write this hash down. You will use it to claim points.
"
+ else
+ echo "Oops, something broke. Better call Neale."
+ fi
+fi
+cat <
+
+EOF
diff --git a/packages/mcp/www/register.html b/packages/mcp/www/register.html
index b02848d..96257e6 100644
--- a/packages/mcp/www/register.html
+++ b/packages/mcp/www/register.html
@@ -6,9 +6,14 @@
Team Registration
-
diff --git a/packages/net-re/1200/hint b/packages/net-re/1200/hint
deleted file mode 100644
index 387eace..0000000
--- a/packages/net-re/1200/hint
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a 16-byte xor key. Lots of spaces (0x20).
-[55, 56, 59, 64, 71, 80, 91, 104, 119, 136, 155, 176, 199, 224, 251, 24]
-
diff --git a/packages/net-re/4000/summary b/packages/net-re/4000/summary
new file mode 100644
index 0000000..0becd68
--- /dev/null
+++ b/packages/net-re/4000/summary
@@ -0,0 +1 @@
+PNG transmitted in ICMP payloads
diff --git a/packages/net-re/5000/summary b/packages/net-re/5000/summary
index 71febf3..ffce12c 100644
--- a/packages/net-re/5000/summary
+++ b/packages/net-re/5000/summary
@@ -1 +1 @@
-ICMP tunnel, with xor
+Horrendously inefficient compression algorithm
diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk
index 687a43f..08ec44d 100644
--- a/packages/rlyeh/rlyeh.mk
+++ b/packages/rlyeh/rlyeh.mk
@@ -1,10 +1,14 @@
RLYEH_PKGDIR = $(TARGET)/rlyeh
RLYEH_BUILDDIR = $(BUILD)/rlyeh
+RLYEH_CACHE = $(CACHE)/rlyeh.git
RLYEH_URL = "http://woozle.org/~neale/projects/rlyeh"
+$(RLYEH_CACHE):
+ git clone --bare $(RLYEH_URL) $@
+
rlyeh-source: $(RLYEH_BUILDDIR)
-$(RLYEH_BUILDDIR):
- git clone $(RLYEH_URL) $@
+$(RLYEH_BUILDDIR): $(RLYEH_CACHE)
+ git clone $< $@
rlyeh-build: rlyeh-source
$(MAKE) -C $(RLYEH_BUILDDIR)
diff --git a/packages/rlyeh/service/rlyeh/log/run b/packages/rlyeh/service/rlyeh/log/run
new file mode 100755
index 0000000..1e7bd9d
--- /dev/null
+++ b/packages/rlyeh/service/rlyeh/log/run
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+exec svlogd -tt $PWD
diff --git a/packages/rlyeh/tokens/rlyeh/category b/packages/rlyeh/tokens/rlyeh/category
new file mode 100644
index 0000000..0724055
--- /dev/null
+++ b/packages/rlyeh/tokens/rlyeh/category
@@ -0,0 +1 @@
+rlyeh
diff --git a/packages/rlyeh/tokens/rlyeh/category.key b/packages/rlyeh/tokens/rlyeh/category.key
new file mode 100644
index 0000000..8d72a26
--- /dev/null
+++ b/packages/rlyeh/tokens/rlyeh/category.key
@@ -0,0 +1 @@
+qVA.SF֨,.}
\ No newline at end of file
diff --git a/packages/rlyeh/tokens/rlyeh/enc.key b/packages/rlyeh/tokens/rlyeh/enc.key
new file mode 100644
index 0000000..34a088b
--- /dev/null
+++ b/packages/rlyeh/tokens/rlyeh/enc.key
@@ -0,0 +1 @@
+7X)>
!r|!
\ No newline at end of file
diff --git a/packages/tanks/tanks.mk b/packages/tanks/tanks.mk
index 587513d..9007d20 100644
--- a/packages/tanks/tanks.mk
+++ b/packages/tanks/tanks.mk
@@ -1,10 +1,14 @@
TANKS_PKGDIR = $(TARGET)/tanks
+TANKS_CACHE = $(CACHE)/tanks.git
TANKS_BUILDDIR = $(BUILD)/tanks
TANKS_URL = "http://woozle.org/~neale/projects/ctanks"
+$(TANKS_CACHE):
+ git clone --bare $(TANKS_URL) $@
+
tanks-source: $(TANKS_BUILDDIR)
-$(TANKS_BUILDDIR):
- git clone $(TANKS_URL) $@
+$(TANKS_BUILDDIR): $(TANKS_CACHE)
+ git clone $< $@
tanks-build: tanks-source
$(MAKE) -C $(TANKS_BUILDDIR)
diff --git a/packages/wopr/service/wopr/run b/packages/wopr/service/wopr/run
new file mode 100755
index 0000000..09e4d6f
--- /dev/null
+++ b/packages/wopr/service/wopr/run
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+# Work around busybox bug
+chmod a+r /dev/urandom
+
+mkdir -p /var/tmp/wopr
+chown ctf /var/tmp/wopr
diff --git a/packages/wopr/wopr.mk b/packages/wopr/wopr.mk
index 6f3d09e..9e453f9 100644
--- a/packages/wopr/wopr.mk
+++ b/packages/wopr/wopr.mk
@@ -8,6 +8,7 @@ wopr-install: packages/wopr/tokens.txt
cp packages/wopr/tokens.txt $(WOPR_PKGDIR)/
$(call COPYTREE, packages/wopr/www, $(WOPR_PKGDIR)/www)
+ $(call COPYTREE, packages/wopr/service, $(WOPR_PKGDIR)/service)
wopr-clean:
diff --git a/packages/wopr/www/wopr/wopr.cgi b/packages/wopr/www/wopr/wopr.cgi
index c35a49e..1a9e382 100755
--- a/packages/wopr/www/wopr/wopr.cgi
+++ b/packages/wopr/www/wopr/wopr.cgi
@@ -94,7 +94,7 @@ do
for i = 1, 4 do
seed = seed*256 + string.byte(r:read(1))
end
- r:close()
+ io.close(r)
math.randomseed(seed)
end