Flags

Aus Labor für Echtzeitsysteme

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Version vom 19:24, 12. Jul. 2007 (bearbeiten)
Quade (Diskussion | Beiträge)
(Die Seite wurde neu angelegt: == Submitten == {{TODO}} Skript zum Submitten von Flags hier einstellen.)
← Zum vorherigen Versionsunterschied
Version vom 07:46, 13. Jul. 2007 (bearbeiten) (rückgängig)
Weiler (Diskussion | Beiträge)
(Submitten - Gameserver-Script)
Zum nächsten Versionsunterschied →
Zeile 1: Zeile 1:
== Submitten == == Submitten ==
-{{TODO}} Skript zum Submitten von Flags hier einstellen.+Perl-Skript zum Submitten von Flags:
 + 
 +<pre>
 +#!/usr/bin/perl -w
 + 
 +# Small and funny script for submitting flags to the CTF-Gameserver written by Lexi Pimenidis.
 +# The source of the gameserver is available at http://nets.rwth-aachen.de/~lexi/gameserver.php
 +#
 +# (C) 2006-2007 Lars Weiler <lars@weiler-online.name>, Released under the terms of the GPLv2
 + 
 +use strict;
 +use Net::Telnet ();
 + 
 +my $host = "10.0.0.37";
 +my $port = "31337";
 +my $team = "25";
 + 
 +my $commentator = "* Chuck Norris sagt:";
 + 
 +if ( @ARGV < 1 ) {
 + print "Flag muss als Argument angegeben werden!\n";
 + exit;
 +}
 +print "Flag: $ARGV[0]\n";
 + 
 +my $t = new Net::Telnet (-timeout => 10, -host => $host, -port => $port, -telnetmode => 0, -ors => "\r\n", -rs => "\r\n" );
 + 
 +#my $fhi = $t->input_log("submit-flag-in.log"); #DEBUG
 +#my $fho = $t->output_log("submit-flag-out.log"); #DEBUG
 + 
 +$t->open();
 +my $message = $t->getline( Input_record_separator => "\x0a" );
 + 
 +#print "1: $message\n"; #DEBUG
 + 
 +$message =~ /^Please identify your team/ ? $t->print("$team") : die "Team nicht identifizierbar.";
 +$message = $t->getline( Input_record_separator => "\x0a" );
 + 
 +#print "2: $message\n"; #DEBUG
 + 
 +if ( $message =~ /^(Sorry, don't recognize your team|Please identify your team with its numerical team-number)/ ) {
 + print "$commentator Checke dieses Script und stelle das Team richtig ein.\n";
 + exit;
 +}
 +elsif ( $message =~ /^Welcome/ ) {
 + 
 + foreach (@ARGV) {
 + $t->print("$_");
 + $message = $t->getline( Input_record_separator => "\x0a" );
 + #print "3: $message\n"; #DEBUG
 + 
 + print "Der gameserver sagt: $message";
 + 
 + if ( $message =~ /^Congratulations, you captured a flag/ ) {
 + system( "aplay ~/Cipher3/redteam-scores.wav" );
 + print "$commentator Prima! Weiter so!\n";
 + }
 + elsif ( $message =~ /^(Sorry, is this a flag|Sorry, flag not in database)/ ) {
 + print "$commentator Lamer!\n";
 + }
 + elsif ( $message =~ /^(Sorry, don't recognize your team|Please identify your team with its numerical team-number)/ ) {
 + print "$commentator Checke dieses Script und stelle das Team richtig ein.\n";
 + }
 + elsif ( $message =~ /^(Sorry, timeout|Sorry, flag expired)/ ) {
 + print "$commentator Hopphopp! Du musst schneller sein!\n";
 + }
 + elsif ( $message =~ /^Sorry, flag is your own/ ) {
 + print "$commentator Bist wohl ein kleiner Scherzkeks?\n";
 + }
 + elsif ( $message =~ /^Sorry, you already submitted this flag/ ) {
 + print "$commentator Nicht schlecht, aber schaff mal ein neues Flag an.\n";
 + }
 + elsif ( $message =~ /^Sorry, internal error/ ) {
 + print "$commentator An dem Fehler kann selbst ich nichts machen\n";
 + }
 + elsif ( $message =~ /^Sorry, game not started/ ) {
 + print "$commentator Ruhig, Brauner...\n";
 + }
 + elsif ( $message =~ /^Sorry, game over/ ) {
 + print "$commentator Rien ne va plus!\n";
 + }
 + else {
 + print "$commentator Mit dieser Fehlermeldung kann ich nichts anfangen!\n";
 + }
 + }
 +}
 +$t->print("QUIT\n");
 +$t->close;
 + 
 +exit;
 +</pre>

Version vom 07:46, 13. Jul. 2007

Submitten

Perl-Skript zum Submitten von Flags:

#!/usr/bin/perl -w

# Small and funny script for submitting flags to the CTF-Gameserver written by Lexi Pimenidis.
# The source of the gameserver is available at http://nets.rwth-aachen.de/~lexi/gameserver.php
#
# (C) 2006-2007 Lars Weiler <lars@weiler-online.name>, Released under the terms of the GPLv2

use strict;
use Net::Telnet ();

my $host = "10.0.0.37";
my $port = "31337";
my $team = "25";

my $commentator = "* Chuck Norris sagt:";

if ( @ARGV < 1 ) {
        print "Flag muss als Argument angegeben werden!\n";
        exit;
}
print "Flag: $ARGV[0]\n";

my $t = new Net::Telnet (-timeout => 10, -host => $host, -port => $port, -telnetmode => 0, -ors => "\r\n", -rs => "\r\n" );

#my $fhi = $t->input_log("submit-flag-in.log"); #DEBUG
#my $fho = $t->output_log("submit-flag-out.log"); #DEBUG

$t->open();
my $message = $t->getline( Input_record_separator => "\x0a" );

#print "1: $message\n"; #DEBUG

$message =~ /^Please identify your team/ ? $t->print("$team") : die "Team nicht identifizierbar.";
$message = $t->getline( Input_record_separator => "\x0a" );

#print "2: $message\n"; #DEBUG

if ( $message =~ /^(Sorry, don't recognize your team|Please identify your team with its numerical team-number)/ ) {
        print "$commentator Checke dieses Script und stelle das Team richtig ein.\n";
        exit;
}
elsif ( $message =~ /^Welcome/ ) {

        foreach (@ARGV) {
                $t->print("$_");
                $message = $t->getline( Input_record_separator => "\x0a" );
                #print "3: $message\n"; #DEBUG

                print "Der gameserver sagt: $message";

                if ( $message =~ /^Congratulations, you captured a flag/ ) {
                        system( "aplay ~/Cipher3/redteam-scores.wav" );
                        print "$commentator Prima! Weiter so!\n";
                }
                elsif ( $message =~ /^(Sorry, is this a flag|Sorry, flag not in database)/ ) {
                        print "$commentator Lamer!\n";
                }
                elsif ( $message =~ /^(Sorry, don't recognize your team|Please identify your team with its numerical team-number)/ ) {
                        print "$commentator Checke dieses Script und stelle das Team richtig ein.\n";
                }
                elsif ( $message =~ /^(Sorry, timeout|Sorry, flag expired)/ ) {
                        print "$commentator Hopphopp!  Du musst schneller sein!\n";
                }
                elsif ( $message =~ /^Sorry, flag is your own/ ) {
                        print "$commentator Bist wohl ein kleiner Scherzkeks?\n";
                }
                elsif ( $message =~ /^Sorry, you already submitted this flag/ ) {
                        print "$commentator Nicht schlecht, aber schaff mal ein neues Flag an.\n";
                }
                elsif ( $message =~ /^Sorry, internal error/ ) {
                        print "$commentator An dem Fehler kann selbst ich nichts machen\n";
                }
                elsif ( $message =~ /^Sorry, game not started/ ) {
                        print "$commentator Ruhig, Brauner...\n";
                }
                elsif ( $message =~ /^Sorry, game over/ ) {
                        print "$commentator Rien ne va plus!\n";
                }
                else {
                        print "$commentator Mit dieser Fehlermeldung kann ich nichts anfangen!\n";
                }
        }
}
$t->print("QUIT\n");
$t->close;

exit;
Persönliche Werkzeuge