- Следене на конекциите - под Windows
WT форуми -> PHP и MySQL готови кодове -> Следене на конекциите - под Windows
Създайте нова тема Напишете отговор 
Автор Съобщение
r0073xbg
Нов
Нов

Регистриран на: 16/11/2014 12:07 pm

Support: 1
Bonus: 2
Мнения: 12
Мнение 28/11/2014 10:47 pm     Следене на конекциите - под Windows Отговорете с цитат


Преди няколко години бях писал код за следене на конекциите под Windows, тъй като повечето приложения от това естество са писани за unix-based OS-s.
Кодът си е писан отдавна, бозав е и нямам намерението да го коригирам, но важното е, че върши някаква работа, а именно - да дава информация, колко връзки са осъществени към определени от вас портове, дали надхвърлят някакъв определен лимит + списък с ip адресите, които са се закачили в този момент към host-a.

PHP code:

<?php
error_reporting(0);
header("Content-type:text/html; charset=Windows-1251");
set_time_limit(0);

$ip = "192.168.0.100"; # задава се ip на хоста. Ако сте за рутер, давате вътрешното ip
$apacheport = "80"; # мисля, че това е ясно - порт, през който комуникира апаче (или каквото се ползва, там)
$mysqlport = "3306"; # порт за mysql
$listen = "80=>Apache:1,3306=>MySQL:10";

// каква е идеята тук: порт=>Име на приложението:максимален брой връзки, които да се възприемат за нормални


$apcon = shell_exec("netstat -ano | find /c \"$ip:$apacheport\"");
$apcons = shell_exec("netstat -ano | find /i \"$ip:$apacheport\"");

$sqlcon = shell_exec("netstat -ano | find /c \"$ip:$mysqlport\"");
$sqlcons = shell_exec("netstat -ano | find /i \"$ip:$mysqlport\"");

$ano = shell_exec("netstat -ano");
$stat = shell_exec("netstat -e");
$result = "
<table border=0 cellspacing=0 cellpadding=10 align=left>
<tr><td align=left><code><b>Apache: $apcon конекции</b></code><p><pre>$apcons</pre></td></tr>
<tr><td align=left><code><b>MySQL: $sqlcon конекции</b></code><p><pre>$sqlcons</pre></td></tr>
<tr><td align=left><pre>
";
$result = "$result<b>---------------------<br>";

function listen($port,$name,$max){
global $ip,$result;
$visitors = array();

$cons = shell_exec("netstat -ano | find /i \"$ip:$port\"");



$explode = explode("TCP ",$cons);
foreach($explode as $test){
$test = explode("$ip:$port",$test);
$test = trim("$test[1]");
$test = explode(" ",$test);
$visitor = explode(":",$test['0']);
$visitor = $visitor['0'];
array_unshift($visitors,$visitor);
}

$explode = explode("UDP ",$apcons);
foreach($explode as $test){
$test = explode("$ip:$port",$test);
$test = trim($test['1']);
$test = explode(" ",$test);
$visitor = explode(":",$test['0']);
$visitor = $visitor['0'];
array_unshift($visitors,$visitor);
}
$stat = array_count_values($visitors);
foreach($stat as $visitor=>$connections){
if(!empty($visitor)){

$result = "$result<b>";
if($connections > $max) $result = "$result<font color=red>Приложение: $name<br>IP: $visitor<br>Брой връзки: $connections</font>";
else $result = "$result<font color=green>Приложение: $name<br>IP: $visitor<br>Брой връзки: $connections</font>";
$result = "$result</b><br>---------------------<br>";
}
}

}
$result = "$result</b>";

$listen = explode(",", $listen);
foreach($listen as $info){
$exp = explode("=>", $info);
$port = $exp['0'];
$name = $exp['1'];
$name = explode(":",$name);
$danger = $name['1'];
$name = $name['0'];
listen("$port","$name","$danger");

}


$result = "$result</pre></td></tr>
<tr><td align=left><pre><b>$ano</b></pre></td></tr>
<tr><td align=left><pre><b>$stat</b></pre></td></tr>
</table>";
echo $result;
?>


Ако някой има по-конкретен въпрос и/или идеи, може да сподели Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP и MySQL готови кодове Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети