Бормотухи.НЕТ

Вернуться   Бормотухи.НЕТ > Web-мастеру > Сайтостроение
Расширенный поиск

Сайтостроение В этой категории темы о создании сайтов, их раскрутке, скриптах и т.п

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2008, 22:50 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Скрипт ICQ бота (ICQ bot)

hICeQ bot - ICQ бот + Web-админка


О скрипте:
  • hICeQ будет не только ботом, но и спамером, флудером и брутом....
  • Все будет доступно в админке

Фиксы:
  • Fix: Пустые сообщения, когда бот долго в сети
  • Fix: Плохая кодировка в админке
  • Added: Удаление логов, как всех, так и конкретного номера
  • Added: Новый дизайн

Установка:
1) Залейте папку hICeQ в любую директорию у вас на сервере (которая доступна из web) - /public_html/www/
2) Создайте базу данных hICeQ, пользователя для этой базы и установите значения в config.php
3) Откройте config.php и впишите путь до вашей папки
4) Выполните SQL запрос из файла hICeQ.sql в базу данных hICeQ
5) Теперь можно зайти в свою админку http://site.com/hICeQ/
6) На главной странице нажмите "добавить номер" и вписывайте номер/пароль от вашего будущего бота...Ботов можете делать неогр.кол-во
6) Далее запускайте ботов...
7) Можете добавлять свои команды в меню "Команды" или "Ответы" ...

Скачать скрипт ICQ бота:
Народ:диск

Последний раз редактировалось Serberg; 01.08.2008 в 22:55..
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 15.03.2008, 14:26 Вверх   #2
Новичок
 
Аватар для Виталий
Виталий вне форума
Доп. информация
По умолчанию Бот ICQ

Код:
<?php
# Режим отладки? (true=отсылать, false=нет)
#  ВНИМАНИЕ: Если режим отладки включён, то установите на папку со сриптом права доступа 777 или 755 для правельной работы!
$DEBUG = false;
# ICQ UIN номер для бота
$cfg['server_uin'] = '222333';
# ICQ UIN пароль для бота
$cfg['server_passw'] = 'пароль_аськи';

# Посылка отчёта на номер администратора (true=отсылать, false=нет)
$cfg['send_report'] = true;
# ICQ UIN администратора для получения отчётов
$cfg['report_uin'] = '446225754';
# Сообщение отчёта о начале работы бота
$cfg['report_msg_start'] = '> Начал работу! '.date("d.m.Y H:i:s");
# Сообщение отчёта о завершение работы бота
$cfg['report_msg_end'] = '> Закончил работу! '.date("d.m.Y H:i:s");
# Ответ бота в случае неверного запроса!
$report = 'Вас приветствует ICQ бот сайта http://smsu.msk.ru . В настоящее время, поддержка не доступна! Для получения помощи наберите !help';

if($DEBUG){
  error_reporting(E_ALL);
  ini_set("error_log","errors.txt");
  ini_set("log_errors",true);
}else{
  error_reporting(0);
}
set_time_limit(0);
ob_implicit_flush(TRUE);
ignore_user_abort(1);
#
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();

    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->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 = 'Соединение прервано';
        if ($array['int1'] == 4)
        {
            switch ($array['int2'])
            {
                case 1:
                        $this->error = 'Ошибка в отправке сообщения';
                        return false;
                    break;
                case 0x0c:
                        return true;
                    break;
            }
        }

        $this->error = 'Соединение прервано';
        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',                 'QIP');
        $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',             'ru');
        $this->body .= $this->setTLV('CLIENT_COUNTRY',         'ru');


        $this->channel = 1;
        $pack = $this->prepare();
        socket_write($this->socet, $pack, strlen($pack));
        $this->parseCookieFLAP();

        $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 = 'Соединение прервано';
            return false;
        }
        $this->getFLAP();
        $this->body = $this->setSNAC0102();
        $pack = $this->prepare();
        if (!socket_write($this->socet, $pack, strlen($pack)))
        {
            $this->error = 'Соединение прервано';
            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 = 'Соединение прервано';
            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);
    }
}
# Ниже код для работы с вышепреведённым классом для функционирования бота.
#
$cfg['icq'] = new WebIcqLite();
if($cfg['icq']->connect($cfg['server_uin'],$cfg['server_passw'])){
if($cfg['send_report']){ $cfg['icq']->send_message($cfg['report_uin'],$cfg['report_msg_start']); }
echo $cfg['report_msg_start'].'<br />\n';
do{
$cfg['msg'] = $cfg['icq']->get_message();
if($cfg['msg']['message'] == '/shutdown'){ $cfg['icq']->send_message($cfg['msg']['from'],"Пока!\n"); break; }

      if($cfg['msg']['message'] == '!help') { $cfg['icq']->send_message($cfg['msg']['from'],"О сервисе: !about, стоимость sms: !cost, Правила сервиса: !rules, Контакты: !contact;"); }
      if($cfg['msg']['message'] == '!about') { $cfg['icq']->send_message($cfg['msg']['from'],"Мы предоставляем сервис отправки sms сообщений от любого номера! Все ваши sms будут доставлены получателю, в кратчайшие сроки!"); }
      if($cfg['msg']['message'] == '!cost') { $cfg['icq']->send_message($cfg['msg']['from'],"На данный момент стоимость sms сообщений составляет $ 0.30. Для отправки sms оптом, цены могут быть снижены! "); }
      if($cfg['msg']['message'] == '!rules') { $cfg['icq']->send_message($cfg['msg']['from'],"Соблюдайте данные правила:
Ваши правила"); }
      if($cfg['msg']['message'] == '!contact') { $cfg['icq']->send_message($cfg['msg']['from'],"Контакты: E-mail:admin@123.ru, ICQ 21321."); }



      if($cfg['msg']['message'] != '!help' && $cfg['msg']['message'] != '!about' &&  $cfg['msg']['message'] != '!cost' && $cfg['msg']['message'] != '!rules' && $cfg['msg']['message'] != '!contact')
      {
      $cfg['icq']->send_message($cfg['msg']['from'],$report);
      }


}while(true);
if($cfg['send_report']){ $cfg['icq']->send_message($cfg['report_uin'],$cfg['report_msg_end']); }
$cfg['icq']->disconnect();
echo $cfg['report_msg_end'].'<br />\n------<br /><br />\n';
}else{ echo "> bad connect<br />\n"; }
unset($cfg);
?>
Добавлено через 1 минуту
Это бот аськи, тока вот проблема. Вылетает через 5 минут! Что за дела?

Последний раз редактировалось Serberg; 15.03.2008 в 14:48.. Причина: Автообъединение
  Ответить с цитированием
Cказали cпасибо:
Старый 15.04.2008, 06:32 Вверх   #3
Новичок
 
Аватар для grozzza
grozzza вне форума
Доп. информация
По умолчанию

А где можно достать бот, чтобы он пересылал все входищие сообщения на мобильный? Так, чтобы я не был в это время в сети, и не требовалось подключение к интернету в этот момент.
  Ответить с цитированием
Cказали cпасибо:
Старый 15.04.2008, 08:33 Вверх   #4
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
По умолчанию

Цитата Сообщение от grozzza Посмотреть сообщение
А где можно достать бот, чтобы он пересылал все входищие сообщения на мобильный? Так, чтобы я не был в это время в сети, и не требовалось подключение к интернету в этот момент.
Если у тебя бабла много, то можешь заказать такой на изготовление. Отвалишь за работу, договор с мобильным оператором и постоянно будешь отваливать за СМС оператору. Зато удобно ))))
  Ответить с цитированием
Cказали cпасибо:
Старый 18.04.2008, 21:29 Вверх   #5
Новичок
 
Аватар для izu
izu вне форума
Доп. информация
По умолчанию

Эт точно. удобно но дорого

Добавлено через 3 минуты
И всетаки у когонибудь получилось сделать Icq бота?

Последний раз редактировалось izu; 18.04.2008 в 21:33.. Причина: Автообъединение
  Ответить с цитированием
Cказали cпасибо:
Старый 20.04.2008, 01:28 Вверх   #6
Опытный пользователь
 
Аватар для MrSam
MrSam вне форума
Доп. информация
По умолчанию

у меня есть 100 % рабочий бот. если есть необходимость могу выложить.
  Ответить с цитированием
Cказали cпасибо:
Старый 20.04.2008, 01:39 Вверх   #7
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
По умолчанию

Цитата Сообщение от MrSam Посмотреть сообщение
у меня есть 100 % рабочий бот. если есть необходимость могу выложить.
Был бы благодарен.
  Ответить с цитированием
Cказали cпасибо:
Старый 20.04.2008, 03:03 Вверх   #8
Опытный пользователь
 
Аватар для MrSam
MrSam вне форума
Доп. информация
По умолчанию

Представляю вам icq-бота 100% рабочего.
Для начала нам необходимо выбрать место где его ставить. Есть два варианта, первый это завести себе на платном хостинге имя, и спокойно выложить бота там, нельзя делать на бесплатном хотинге, потому что большенство из них не поддерживают сокеты (extension php_sockets), да и платные не все поддерживают. Второй вариант не очень выгоден так как ваш бот будет нахотся в сети только тогда когда вы его запуститеи будете подкючены к Интернет, все заключается в том что вы запускаете бота у себя на компе при помощи сервера приложений (например: TopServer #http://www.topserver.ru/#).
Наш бот будет выполнять 5 простых функций(которые вы потом сможе дополнять, незнаете как пишите):
1. выводит список команд. необходимо ввести команду "помощь"
2. выводит информацию о боте. необходимо ввести команду "info"
3. выводит курс валют ЦБ РФ. необходимо ввести команду "курс"
4. выключает бота. необходимо ввести команду "quit"
5. если вы введете неверную команду бот вам ответит.

Вот содеражание файлов которые необходимо закачать закачать на сервер.

index.php
PHP код:
<?php  
//
//Редакция от MrSam
//специально для [url]http://www.bormotuhi.net[/url], работает на webicqlite.class
//Функция вывода валют в комплекте
//Вместо ********** вписываем uin
//вместо #### его пароль

error_reporting (E_ALL);  
set_time_limit(0);  
ini_set ('max_execution_time'"0");  
require_once(
'WebIcqLite.class.php');  
define('UIN''**********'); 
define('PASSWORD''####'); 

//начало курс валют



  
$content get_content(); 
  
$pattern "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"
  
preg_match_all($pattern$content$outPREG_SET_ORDER); 
  
$dollar ""
  
$euro ""
  foreach(
$out as $cur
  { 
    if(
$cur[2] == 840$dollar str_replace(",",".",$cur[4]); 
    if(
$cur[2] == 978$euro   str_replace(",",".",$cur[4]); 
  } 
  
 function 
get_content() 
  { 
    
// Формируем сегодняшнюю дату 
    
$date date("d/m/Y"); 
    
// Формируем ссылку 
    
$link "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"
    
// Загружаем HTML-страницу 
    
$fd fopen($link"r"); 
    
$text=""
    if (!
$fd) echo "Запрашиваемая страница не найдена"
    else 
    { 
      
// Чтение содержимого файла в переменную $text 
      
while (!feof ($fd)) $text .= fgets($fd4096); 
    } 
    
// Закрыть открытый файловый дескриптор 
    
fclose ($fd); 
    return 
$text
  } 

// конец курс валют

$icq = new WebIcqLite();  
if(!
$icq->connect(UINPASSWORD))  
{  
    echo 
$icq->error;  
    exit();  
}  

while(
$icq->is_connected()){  
    
$msg $icq->read_message();  
    switch (
strtolower($msg['message'])) {                           
         case
'курс':  
         
$icq->send_message($msg['from'], 'Центральный банк Российской Федерации ([url]http://www.cbr.ru/[/url])
         Доллар -  '
.$dollar.
         Евро - '
.$euro);  
        break;   

        case
'помощь':  
         
$icq->send_message($msg['from'], 'Доступные команды:
курс - выводит курс валют #Доллар и Евро#
info - информаци о БОТе
'
);  
        break;   

        case
'info':  
        
$icq->send_message($msg['from'], ' исходник БОТа для [url]http://www.bormotuhi.net[/url] с функцией вывода вылют');  
        break; 
          
        case
'quit'//сообщение для бота 
        
$icq->disconnect(); //действие бота (выход) 
        
exit;  
        break;  
       
        default: 
//если сообщение не содержит команду 
        
$icq->send_message($msg['from'], 'Введена неверная команда для отображения списка команд введите: помощь'); //ответ бота 
    
}  
    
flush();  
    
sleep(1);  
}  
?>
webicqlite.class.php
PHP код:
<?php
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($data04));
        
$this->type $arr[1];
        
$this->size $arr[2];
        return 
substr($data4$this->size);
    }

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

class 
WebIcqLite_SNAC extends WebIcqLite_TLV {
    
    var 
$request_id 0;
    var 
$uin;
    
    function 
setSNAC0102()
    {
        
$this->request_id++;
        
$out pack('nnnN'120$this->request_id);
        
$out .= pack('n*'13272650);
        
$out .= pack('n*'21272650);
        
$out .= pack('n*'31272650);
        
$out .= pack('n*'211272650);
        
$out .= pack('n*'41272650);
        
$out .= pack('n*'61272650);
        
$out .= pack('n*'91272650);
        
$out .= pack('n*'101272650);
        
        return 
$out;
    }
    
    function 
setSNAC0406($uin$message)
    {
        
$this->request_id++;
        
$cookie microtime();
        
$out pack('nnnNdnca*'460$this->request_id$cookie2strlen($uin), $uin);
        
        
$capabilities pack('H*''094613494C7F11D18222444553540000'); // utf-8 support
        // '97B12751243C4334AD22D6ABF73F1492' rtf support
        
        
$data pack('nd'0$cookie).$capabilities;
        
$data .= pack('nnn'1021);
        
$data .= pack('nn'150);
        
$data .= pack('nnvvddnVn'10001strlen($message)+622780003$this->request_id);
        
$data .= pack('nndnn'14$this->request_id000); //45
        
$data .= pack('ncvnva*'1001, (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*'460$this->request_id$cookie1strlen($uin), $uin);
        
        
$data pack('ccnc'5111);
        
$data .= pack('ccnnna*'11strlen($message)+430$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'] == && $msg['subtype'] == 7
            {
                
$body substr($body21);
                
$from substr($body0$msg['namesize']);
                
$channel $msg['channel'];
                
$body substr($body$msg['namesize']);
                
$msg unpack('nwarnlevel/nTLVnumber'$body);
                
$body substr($body4);
                for (
$i 0$i <= $msg['TLVnumber']; $i++)
                {
                    
$part $this->getTLV($body);
                    
$body substr($body$this->size);
                    if (
$channel == && $this->type == 2
                    {
                        while (
strlen($part)) 
                        {
                            
$frg $this->getTLVFragment($part);
                            if (
$frg['id'] == && $frg['version'] == 1
                            {
                                return array(
'from' => $from'message' => substr($frg['data'], 4));
                            }
                            
$part substr($part4+$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();

    function 
WebIcqLite_FLAP() {
        
$this->sequence rand(130000);
    }
    
    function 
getFLAP()
    {
        if(
$this->socet && !socket_last_error($this->socet))
        {
            
$header socket_read($this->socet6);
            if (
$header
            {
                
$header unpack('c2channel/n2size'$header);
                
$this->channel $header['channel2'];
                
$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->sequencestrlen($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',             2662);
        
$this->body .= $this->setTLV('CLI_MAJOR_VER',         202);
        
$this->body .= $this->setTLV('CLI_MINOR_VER',         342);
        
$this->body .= $this->setTLV('CLI_LESSER_VER',         02);
        
$this->body .= $this->setTLV('CLI_BUILD_NUMBER',     23212);
        
$this->body .= $this->setTLV('DISTRIB_NUMBER',         10854);
        
$this->body .= $this->setTLV('CLIENT_LNG',             'en');
        
$this->body .= $this->setTLV('CLIENT_COUNTRY',         'us');
        
        
        
$this->channel 1;
        
$pack $this->prepare();
        
socket_write($this->socet$packstrlen($pack));
        
$this->parseCookieFLAP();
        
        
$this->body 0x0000;
        
$pack $this->prepare();
        
socket_write($this->socet$packstrlen($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$packstrlen($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$packstrlen($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$packstrlen($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$packstrlen($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(0xF30x260x810xC40x390x860xDB0x920x710xA30xB90xE60x530x7A0x950x7c);
        
$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_INETSOCK_STREAMSOL_TCP);
        if (
$this->socet || $this->socet === false
        {
            
$this->error "socket_create() failed: reason: " socket_strerror($this->socet);
            return 
false;
        }
        
$result socket_connect($this->socetgethostbyname($url[0]), $url[1]);
        if (
$result || $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);
    }
    function 
GetUin() {
    global 
$uin;
    return 
$uin;
}
}
?>
Вводите свой uin и пароль в файле index.php. Затем добовляете этот uin себе в контакты в вашем icq клиенте, предварительно отредактировав uin bot'a. Далее файлы вы закачиваете в отдельную папку например "bot". После чего запускаете "http://www.domain.ru/bot/" или "http://www.localhos/bot/" в зависимости от способа который вы выбрали. и ждете пока бот не появится в сети. (это окола 5 сек в зависимости от скорости интернета).
ну а после чего тестите его, вводя различные команды, которые представлены выше.

PS: Извените за мою грамотность

Последний раз редактировалось MrSam; 20.04.2008 в 03:35..
  Ответить с цитированием
Cказали cпасибо:
Старый 20.04.2008, 22:04 Вверх   #9
Новичок
 
Аватар для foter
foter вне форума
Доп. информация
По умолчанию

Блин, а у меня не работает. Вот что вылазеет:
Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 10

Warning: require_once(WebIcqLite.class.php) [function.require-once]: failed to open stream: No such file or directory in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 12

Fatal error: require_once() [function.require]: Failed opening required 'WebIcqLite.class.php' (include_path='.:./includes:/usr/local/lib/php') in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 12


Может кто в курсе - стукните в аську 377103333

Последний раз редактировалось foter; 20.04.2008 в 22:08.. Причина: ICQ 377103333
  Ответить с цитированием
Cказали cпасибо:
Старый 20.04.2008, 22:33 Вверх   #10
Опытный пользователь
 
Аватар для MrSam
MrSam вне форума
Доп. информация
По умолчанию

Цитата Сообщение от foter Посмотреть сообщение
Блин, а у меня не работает. Вот что вылазеет:
Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 10

Warning: require_once(WebIcqLite.class.php) [function.require-once]: failed to open stream: No such file or directory in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 12

Fatal error: require_once() [function.require]: Failed opening required 'WebIcqLite.class.php' (include_path='.:./includes:/usr/local/lib/php') in /home/users/f/foter/domains/fotograd.net/bot/index.php on line 12
возможно ваш хостинг не поддерживает сокеты
PS отписался что бы другим было понятно.
  Ответить с цитированием
Cказали cпасибо:
Старый 26.04.2008, 11:29 Вверх   #11
Новичок
 
Аватар для DezZz0
DezZz0 вне форума
Доп. информация
По умолчанию

нужен бот, чтобы выдирал новости с сайта(тов). помогите с ним)
или напишите мну 5893979. там же договоримсо об оплате
  Ответить с цитированием
Cказали cпасибо:
Старый 01.05.2008, 17:54 Вверх   #12
Опытный пользователь
 
Аватар для MrSam
MrSam вне форума
Доп. информация
По умолчанию

Цитата Сообщение от DezZz0 Посмотреть сообщение
нужен бот, чтобы выдирал новости с сайта(тов). помогите с ним)
или напишите мну 5893979. там же договоримсо об оплате
могу организовать, пишите zhuginsergey@ya.ru
  Ответить с цитированием
Cказали cпасибо:
Старый 01.08.2008, 21:45 Вверх   #13
Новичок
 
Аватар для fsn
fsn вне форума
Доп. информация
По умолчанию

перезалейте скрипт плиз, а то не закачивается,

Последний раз редактировалось fsn; 01.08.2008 в 22:23..
  Ответить с цитированием
Cказали cпасибо:
Старый 01.08.2008, 22:55 Вверх   #14
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
По умолчанию

Перезалил.
  Ответить с цитированием
Cказали cпасибо:
Старый 02.08.2008, 00:46 Вверх   #15
Новичок
 
Аватар для fsn
fsn вне форума
Доп. информация
По умолчанию

Цитата Сообщение от Serberg Посмотреть сообщение
Перезалил.

Спасибо за скорость, порадовало!
Буду теперь скриптик юзать
  Ответить с цитированием
Cказали cпасибо:
Старый 12.01.2009, 22:25 Вверх   #16
Опытный пользователь
 
Аватар для remus-a
remus-a вне форума
Доп. информация
По умолчанию

Поставил скрип на локале, при подключении на некоторое время появляется в контакт листе, в ходе подключения на странице выдает ошибку:

Warning: fsockopen() [function.fsockopen]: unable to connect to :0 (Failed to parse address "") in Z:\home\localhost\www\webicqbot\icq.php on line 368

Warning: fread(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 237

Warning: socket_set_blocking(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 370

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259

Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 259
493299677 OK. Status: ONLINE
Warning: fread(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 237

Warning: fread(): supplied argument is not a valid stream resource in Z:\home\localhost\www\webicqbot\icq.php on line 237
(и так до конца )
при вклучении и отключении одинаковые ошибки. после кратковременного присутствия в контактлисте пропадает и на сообщения не отвечает

Последний раз редактировалось remus-a; 12.01.2009 в 22:28..
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт соц сети Bahok Разные скрипты 19 13.01.2019 19:13
Ищу скрипт. tanka1380 Разные скрипты 3 31.03.2011 01:51
Ищю скрипт Finger Разные скрипты 3 27.07.2010 19:17
Парни доработайте форумного бота! sertaras vBulletin 3.х 5 16.06.2010 00:08
Как запустить бота на форуме чтобы он задавал вопросы ? Nezlobin vBulletin 3.х 6 23.05.2009 19:55


Текущее время: 17:46. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
 

Время генерации страницы 0.42152 секунды с 14 запросами