|
|
Сайтостроение В этой категории темы о создании сайтов, их раскрутке, скриптах и т.п |
|
Опции темы | Поиск в этой теме |
05.03.2008, 22:50 Вверх | #1 | |||
Коварный тип
|
Скрипт ICQ бота (ICQ bot)
hICeQ bot - ICQ бот + Web-админка
О скрипте:
Фиксы:
Установка: 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.. |
||||
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); ?> Это бот аськи, тока вот проблема. Вылетает через 5 минут! Что за дела? |
|||
Последний раз редактировалось Serberg; 15.03.2008 в 14:48.. Причина: Автообъединение |
||||
Cказали cпасибо: |
15.04.2008, 06:32 Вверх | #3 | |||
Новичок
|
А где можно достать бот, чтобы он пересылал все входищие сообщения на мобильный? Так, чтобы я не был в это время в сети, и не требовалось подключение к интернету в этот момент.
|
|||
Cказали cпасибо: |
18.04.2008, 21:29 Вверх | #5 | |||
Новичок
|
Эт точно. удобно но дорого
Добавлено через 3 минуты И всетаки у когонибудь получилось сделать Icq бота? |
|||
Последний раз редактировалось izu; 18.04.2008 в 21:33.. Причина: Автообъединение |
||||
Cказали cпасибо: |
20.04.2008, 03:03 Вверх | #8 | |||
Опытный пользователь
|
Представляю вам icq-бота 100% рабочего.
Для начала нам необходимо выбрать место где его ставить. Есть два варианта, первый это завести себе на платном хостинге имя, и спокойно выложить бота там, нельзя делать на бесплатном хотинге, потому что большенство из них не поддерживают сокеты (extension php_sockets), да и платные не все поддерживают. Второй вариант не очень выгоден так как ваш бот будет нахотся в сети только тогда когда вы его запуститеи будете подкючены к Интернет, все заключается в том что вы запускаете бота у себя на компе при помощи сервера приложений (например: TopServer #http://www.topserver.ru/#). Наш бот будет выполнять 5 простых функций(которые вы потом сможе дополнять, незнаете как пишите): 1. выводит список команд. необходимо ввести команду "помощь" 2. выводит информацию о боте. необходимо ввести команду "info" 3. выводит курс валют ЦБ РФ. необходимо ввести команду "курс" 4. выключает бота. необходимо ввести команду "quit" 5. если вы введете неверную команду бот вам ответит. Вот содеражание файлов которые необходимо закачать закачать на сервер. index.php PHP код:
PHP код:
ну а после чего тестите его, вводя различные команды, которые представлены выше. PS: Извените за мою грамотность |
|||
Последний раз редактировалось MrSam; 20.04.2008 в 03:35.. |
||||
Cказали cпасибо: |
20.04.2008, 22:04 Вверх | #9 | |||
Новичок
|
Блин, а у меня не работает. Вот что вылазеет:
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пасибо: |
01.05.2008, 17:54 Вверх | #12 | |||
Опытный пользователь
|
могу организовать, пишите zhuginsergey@ya.ru
|
|||
Cказали cпасибо: |
12.01.2009, 22:25 Вверх | #16 | |||
Опытный пользователь
|
Поставил скрип на локале, при подключении на некоторое время появляется в контакт листе, в ходе подключения на странице выдает ошибку:
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.. |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скрипт соц сети | 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 |