Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> снифер на perl, помогите разобраться 
:(
    Опции темы
rainz
Дата 4.10.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



Код

#!/usr/bin/perl

$LIMIT = shift || 5000;

$|=1;
open (STDIN,"/usr/sbin/tcpdump -lnx -s 1024 dst port 80 |");
while (<>) {
    if (/^\S/) {
    last unless $LIMIT--;
    while ($packet=~/(GET|POST|WWW-Authenticate|Authorization).+/g)  {
        print "$client -> $host\t$&\n";
    }
    undef $client; undef $host; undef $packet;
    ($client,$host) = /(\d+\.\d+\.\d+\.\d+).+ > (\d+\.\d+\.\d+\.\d+)/
        if /P \d+:\d+\((\d+)\)/ && $1 > 0;
    }
    next unless $client && $host;
    s/\s+//;
    s/([0-9a-f]{2})\s?/chr(hex($1))/eg;
    tr/\x1F-\x7E\r\n//cd;
    $packet .= $_;
}


Начал учить perl, под руку попал исходник сниффера.. надо запускать из под рута, ./sniffer.pl > dump.. но он нихрена не хочет писать в файл дамп. читал маны что бы понять код. запускал tcpdump с теми же параметрами, в консоль выводит. еще мне интересно зачем писать $LIMIT = shift || 5000; если shift возвращает первый элемент массива, а в строчке просто выставляется максимум записей в файл? как эта строка работает на самом деле?
PM MAIL WWW ICQ   Вверх
Egik2
Дата 4.10.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

Репутация: 1
Всего: 11



Код

$LIMIT = shift || 5000;


Здесь shift возвращает первый параметр переданный скрипту, если его нет то 5000. 

Он будет что-то ловить если ты с машины, откуда его запускаешь устанавливаешь соединение на 80 порт удаленной машины.
Если ты не соединяешься не с кем, то ничего и не будет.

Код

 while ($packet=~/(GET|POST|WWW-Authenticate|Authorization).+/g)  {
        print "$client -> $host\t$&\n";
    }


Анализирует пакет - если в нем содержатся слова GET, POST, WWW-Authenticate или Authorization - то этот это печатается в выходной файл.
и т.д.

Вот обобщенно смысл скрипта.


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
rainz
Дата 4.10.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



Я думал он слушает 80 порт моей машины, запускал скрипт и начинал лазить браузером по инету.. ведь если запустить просто tcpdump в консоли с теми же параметрами, и лазить по сайтам, то в консоли отображается результаты tcpdump..
PM MAIL WWW ICQ   Вверх
Egik2
Дата 4.10.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

Репутация: 1
Всего: 11



tcpdump не слушает порт, а сниферит трафик который идет на 80 порт удаленной машины.
То есть по идее если ты лазишь в интернет, то что-то тебе в файл должно писаться.

Попробуй замени код на следующий:
Код

#!/usr/bin/perl
$LIMIT = shift || 5000;
$|=1;
open (STDIN,"/usr/sbin/tcpdump -lnx -s 1024 dst port 80 |");
while (<>) {
    if (/^\S/) {
    last unless $LIMIT--;

    print "$client -> $host\t$&\n";

    undef $client; undef $host; undef $packet;
    ($client,$host) = /(\d+\.\d+\.\d+\.\d+).+ > (\d+\.\d+\.\d+\.\d+)/
        if /P \d+:\d+\((\d+)\)/ && $1 > 0;
    }
    next unless $client && $host;
    s/\s+//;
    s/([0-9a-f]{2})\s?/chr(hex($1))/eg;
    tr/\x1F-\x7E\r\n//cd;
    $packet .= $_;
}


Просто убрали цикл while.
Посмотри будет ли что-нить выводить.




--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
rainz
Дата 4.10.2010, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



perl sniffer.pl > dump 

в файле теперь лежит вот такая муть: 
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1
 ->    1

А что если в опере пустить трафик через прокси с 80 портом, по сути тогда должно заработать..
PM MAIL WWW ICQ   Вверх
arto
Дата 4.10.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# tcpdump -c5 -lnx -s 1024 dst port 80 or src port 80 | perl -lne 'chomp; if (m#^\S#) { $body =~ s#(\w\w)\s*#chr(hex $1)#ge; print "$from -> $to: $body" if ($body =~ m#\w{5,}#); ( $from,$to,$body ) = ( split ":?\\s+" )[2,4] } else { $body .= ( split ":\\s+" )[1]; }' M
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 1024 bytes
5 packets captured
47 packets received by filter
0 packets dropped by kernel
192.168.1.25.11038 -> 192.168.1.9.http: E^@^@[93]^MЛ@^@[80]^Fi^Fю╗^A^Yю╗^A      +^^^@P0:[9A]ЙTеk[P^XDp^G6^@^@GET /cgi/printenv.pl HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: arto
Connection: Keep-Alive

...

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.