suntzu.overthewire.org

How To Connect
Simple! Just SSH to suntzu.overthewire.org and use the Login and Password "watcher". You can view how to connect via putty here
Contributing
You can contribute by recording a Shell Session! you can use TTYRec and email the output to people@overthewire.org with a description of what you are showing!
How it All works
The user "watcher"
The user watch has a modified login shell - which is actually a Dialog script!

root@suntzu:~# grep watcher /etc/passwd
watcher:x:1000:1000:watcher,,,:/home/watcher:/usr/bin/watcher
root@suntzu:~# cat /usr/bin/watcher
#!/bin/sh
# PullThePlug.org TTY record menu script

DISCLAIMER=`cat /etc/disclaimer`;
dialog --title "Disclaimer" --yesno "$DISCLAIMER" 0 0
if [ "$?" -eq "1" ];
then
   echo "Goodbye";
   exit 1;
fi

submissions="If you would like to submit your own session please email \n\n
                     people@pulltheplug.org.\n\nContact:\n\n irc.pulltheplug.org \\ 
                    #social\n\n All Recordings where made by ttyrec 
                     http://namazu.org/~satoru/ttyrec/index.html.en "


dialog --title "Instructions" --msgbox "$submissions" 0 0


lock() {
while [ -e ".$1" ]; do :; done
touch "$1"
}

unlock() {
rm "$1"
}

TTYRECORD="/etc/ttyrecords"
CATEGORIES=`grep -v "^#" $TTYRECORD|cut -sf 1 -d :|uniq|xargs -i% echo % ...|sort`

lock ".choice"
dialog --menu "Please select your preferred category" \
        15 50 10 $CATEGORIES 2> ".choice"

CHOICE=`cat .choice`
unlock ".choice"

if [ ! "$CHOICE" ]; then
        exit 1
fi

CLASS=`grep "$CHOICE" $TTYRECORD|awk -F : '{print $3,"..."}'|sort`

lock ".course"

COMMAND='dialog --menu "Please select your preferred course" 15 50 10 '$CLASS' \\
                   2> .course'
echo $COMMAND|sh

COURSE=`cat .course`
unlock ".course"

if [ ! "$COURSE" ]; then
        exit 1
fi

FILE=`grep "$COURSE" $TTYRECORD|awk -F : '{print $2}'`

rm -rf .course

echo "---------------------------------"
echo "       STARTING SESSION          "
echo "---------------------------------"
ttyplay $FILE;
exit;

Where/How we store the ttyrecordings
The TTYRecordings locations and descriptions are stored in the file "/etc/ttyrecords"

root@suntzu:~# cat /etc/ttyrecords
#Syntax for this
#group:file:description
Administration:/ttysessions/BuildingVserverDebian:"Building a Debian Linux-Vserver"
Administration:/ttysessions/BuildingKDCfromSrc:"Building a MIT Kerberos KDC from .."
Administration:/ttysessions/KerberosAdminBasics:"Kerberos Administration Basics"
Programming:/ttysessions/SimpleBufferOverflow:"Simple Buffer Overflow"
Programming:/ttysessions/MachOInfection:"Mac OS X - Mach-o File Format Infection"
root@suntzu:~#

Our Directory Listing for "/ttysessions"

root@suntzu:~# ls -l /ttysessions/
total 2712
-rw-r--r--  1 root root 1662882 Aug  7  2005 BuildingKDCfromSrc
-rw-r--r--  1 root root  335703 Aug  7  2005 BuildingVserverDebian
-rw-r--r--  1 root root   95593 Aug  7  2005 KerberosAdminBasics
-rw-r--r--  1 root 1006  491282 Oct  4  2005 MachOInfection
-rw-r--r--  1 root 1006  153984 Aug 27  2005 SimpleBufferOverflow
-rwxr-xr-x  1 root root     904 Aug  7  2005 go.sh
-rw-r--r--  1 root root     259 Aug 27  2005 ttyrecords
-rwxr-xr-x  1 root root    1355 Nov 27  2005 watcher
root@suntzu:~#