Собираем спам базу с http://otvet.mail.ru/

Discussion in 'Уязвимости Mail-сервисов' started by Red_EYEs, 10 Apr 2010.

  1. Red_EYEs

    Red_EYEs Member

    Joined:
    7 Aug 2009
    Messages:
    32
    Likes Received:
    12
    Reputations:
    11
    Кодеры с mail.ru грешат выставляя напоказ мыла пользователей. Их можно собрать с сервера ответов.
    Для начала я написал универсальный сборщик мыл по url'ам
    ему подаёшь файл с проксями, файл с url, выходной файл.
    Code:
    #!/usr/bin/perl
    #(c) RED_EYEs  forum.antichat.ru
    #!/usr/bin/perl
    use threads;
      sub usage(){
    print <<END
     -p file with proxyies
     -o output file [default stdout]
     -i input file [default stdin]
     -t pause between requests(seconds дробное)
     -s use self
    END
    ;
        die "___";    
      }
    
    use LWP::UserAgent;
    use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
    		      clock_gettime clock_getres clock_nanosleep clock
                          stat );
    our $cc='';
    my %StartKeys=(-p=>"proxys",-i=>"input",-t=>"time",-o=>"output");
    our %conf=(proxys=>"",input=>"",time=>0.2,-o=>"",-s=>"");
    my $i=0;
    our $self;
    while($i<=$#ARGV)
    {
        
        $self=1,$i++,next if($ARGV[$i] eq "-s");
       usage() unless(defined $StartKeys{$ARGV[$i]});
       $conf{$StartKeys{$ARGV[$i]}}=$ARGV[$i+1];
       $i+=2
    }
    
      close (STDIN), open (STDIN,"<",$conf{input}) if $conf{input};
      close (STDOUT),open (STDOUT,">>",$conf{output}) if $conf{output};
    
    if ($conf{proxys}) {
                        open (PRX,"<",$conf{proxys});
                        our @proxs=<PRX>;
                        close(PRX)
    };
    
      
     # sub geturl(){
    #    local $z=<STDIN>;
        #warn "!";
        #return $z;
      #}
      sub MainThread($)
      {
    #  return if(fork()); 
      my $ua = LWP::UserAgent->new;
      $zz=$_[0];
      $ua->proxy(['http', 'ftp'], 'http://'.$zz.'/') if($zz);  
      $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5");
        while(<STDIN>){
        my $tm=Time::HiRes::time();
        my $req = HTTP::Request->new(GET => "$_") ;
            
          my $res = $ua->request($req) or sleep(2) and next;      
          if ($res->is_success) {      
          print STDOUT $_."\n" for($res->content=~/[^A-Za-z0-9._%+-]([A-Za-z0-9._%+-]+\@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})[^A-Za-z]/gm);
          }
        usleep(($conf{time}+$tm-Time::HiRes::time())*1000000) if(Time::HiRes::time()-$tm<$conf{time});
      }
        #$_->join() for (@thrd);
        #exit();
      return;
      }
      $z=0;
    for $i(@proxs)
    {    
        $thrd[$z++]=threads->create(\&MainThread,$i);   
    }
    MainThread('') if($self);
    $_->join() for (@thrd);
    
    Все вопросы можно получить по следующему url
    их можно сгенерировать вот таким образом.

    ./script.pl -p ./proxy.txt -t 0.3 -i ./urls.txt > ./trash.txt - запускаем

    sort -u ./trash.txt
    - получаем уникальные отсортированные
     
    #1 Red_EYEs, 10 Apr 2010
    Last edited: 11 Apr 2010
  2. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    PS на перле многопоточные приложения писать не удобно.


    Чиво? Если не умеешь - так и скажи, а не хуиту какую-то неси.
     
  3. Kusto

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

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    зачем так сложно? тут вроде бы все описывалось
    http://forum.antichat.ru/thread167280.html
    - весь код можно было уместить в одной регулярке
     
  4. Red_EYEs

    Red_EYEs Member

    Joined:
    7 Aug 2009
    Messages:
    32
    Likes Received:
    12
    Reputations:
    11
    а не заберёт ли эта регулярка текст введёный пользователями?
    PS. Собственно это будет полезный текст
    PS. Сменил регулярку
    PS да собственно и код то сам в регулярке
     
    #4 Red_EYEs, 10 Apr 2010
    Last edited: 10 Apr 2010
  5. Kusto

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

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    как можно кодить , незная что такое регулярка?
    http://forum.antichat.ru/showpost.php?p=1792606&postcount=2
    там пример работы скрипта,(на ответах майлру) ну а сама регулярка
    preg_match_all('/[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,}/', $text, $out);

    Собирает ТОЛЬКО емайлы с заданной страници(причем в любом их виде), ну а еслиб мне потребовалось собирать и ответы я бы составил регулярку которая б выдергивала и их

    P.S. Большая просьба- если выкладываете не свой софт, скрипт то указывайте источник . навеянно

     
  6. Tigger

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

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    о да!!!
    Заюзать shift для прокси и для номер страниц. Потом запустить потоки в цикле. Очень трудно.
    Статья ниочем, приведенный код - какашка.
     
  7. Red_EYEs

    Red_EYEs Member

    Joined:
    7 Aug 2009
    Messages:
    32
    Likes Received:
    12
    Reputations:
    11
    щас всё подругому
    to Wildsman: не сильно по ресурсам различаются многопоточное приложение и приложение размноженное через fork/exec если там нет взаимосвязи между потоками.
    Kusto: она собирает из сети. а не со страницы
     
    #7 Red_EYEs, 10 Apr 2010
    Last edited: 10 Apr 2010