diff --git a/packages/rlyeh/service/rlyeh/finish b/packages/rlyeh/service/rlyeh/finish new file mode 100755 index 0000000..54ba047 --- /dev/null +++ b/packages/rlyeh/service/rlyeh/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +read IP < ip.txt +ip addr del $IP dev eth0 diff --git a/packages/rlyeh/service/rlyeh/ip.txt b/packages/rlyeh/service/rlyeh/ip.txt new file mode 100644 index 0000000..6ac003d --- /dev/null +++ b/packages/rlyeh/service/rlyeh/ip.txt @@ -0,0 +1 @@ +10.0.0.28/24 diff --git a/packages/rlyeh/service/rlyeh/rlyeh-ctf b/packages/rlyeh/service/rlyeh/rlyeh-ctf new file mode 100755 index 0000000..1ea6aca --- /dev/null +++ b/packages/rlyeh/service/rlyeh/rlyeh-ctf @@ -0,0 +1,42 @@ +#! /bin/sh + +base=${CTF_BASE:-/var/lib/ctf} + +read -p "Team password: " -r teamhash + +if ! KEY='Too much cheese.' arc4 < $base/teams.txt | grep -q -F -e "$teamhash"; then + echo 'No such team.' + exit +fi + +cd $base/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 0 > $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 ./rlyeh $level; then + echo "10 points for Gryffindor!" + expr $level + 1 > $teamhash + else + touch $teamhash + fi +) 8<$teamhash diff --git a/packages/rlyeh/service/rlyeh/run b/packages/rlyeh/service/rlyeh/run new file mode 100755 index 0000000..40644a0 --- /dev/null +++ b/packages/rlyeh/service/rlyeh/run @@ -0,0 +1,10 @@ +#! /bin/sh -e + +exec 2>&1 +read IP < ip.txt +ip addr add $IP label eth0:rlyeh dev eth0 + +dir=/var/lib/ctf/rlyeh +install -o nobody -d $dir + +exec setuidgid nobody tcpsvd ${IP#/*} 1928 ./rlyeh-ctf