URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3264
[ Назад ]

Исходное сообщение
"Ловим пакеты.PCAP или что-то другое?"

Отправлено Skif , 10-Авг-04 11:48 
Никак не могу разобратся с такой вот фишкой - пишу сейчас свою прогу под фрю - она должна ловить куда, откуда и самое важное сколько пакетов (размер) ушло с тазика. Но это так, отступление. Суть такова, ковырялся в pcap - но не нашел нужных мне вещей - тобишь чудно пишет откуда куда и когда, но вот сколько - нет. Не могу отыскать функцию или использовать?
Или может вообще не к той библиотеке прицепился?
Подскажите как можно выхватить размер пакета проходящий через
устройство X?
Если актуально, то все происходит под FreeBSD5.X/4.X и ваяется все на Си

Содержание

Сообщения в этом обсуждении
"Ловим пакеты.PCAP или что-то другое?"
Отправлено Vladislav Lazarenko , 10-Авг-04 12:23 
>Никак не могу разобратся с такой вот фишкой - пишу сейчас свою
>прогу под фрю - она должна ловить куда, откуда и самое
>важное сколько пакетов (размер) ушло с тазика. Но это так, отступление.
Это не отступление, а вступление.

>Суть такова, ковырялся в pcap - но не нашел нужных мне
>вещей - тобишь чудно пишет откуда куда и когда, но вот
>сколько - нет. Не могу отыскать функцию или использовать?
Ты уже разобрался как чудно ? Так вот, пишет оно тебе все относительно одного пакета, так что сколько - считай сам, не стоит тут огород городить в библиотеке.

>Или может вообще не к той библиотеке прицепился?
Можешь прицепиться к SNMP, но я думаю не стоит.

>Подскажите как можно выхватить размер пакета проходящий через
>устройство X?
Уже запамятовал, но если вопрос остается актуальным, в информации о пакете  передается его размер. Пример можешь посмотреть в исходниках trafshow (очень доступно).

>Если актуально, то все происходит под FreeBSD5.X/4.X и ваяется все на Си
>

Не столь актуально, хоть под Windows. Но раз уж упомянул, то в FreeBSD можешь использовать BPF (Berkeley Packet Filter) PCAP - это надстройка над этим сабжем. (man bpf)

Удачи.


"Ловим пакеты.PCAP или что-то другое?"
Отправлено Skif , 10-Авг-04 12:34 
Вот что мне упало в файл:
skif@server :less /var/tmp/filter_skif.file

10:03:43.470994 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:44.201320 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20 hello 2 fdelay 15
10:03:44.327008 xxx.net.ua > elf.yandex.ru: icmp: echo request
10:03:44.450936 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:45.337141 xxx.net.ua > elf.yandex.ru: icmp: echo request
10:03:45.453594 elf.yandex.ru > xxx.net.ua: icmp: echo reply
10:03:46.210391 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20 hello 2 fdelay 15

Вот я и не пойму как из этого вырвать размер пакета упавшего в фильтр.


"Ловим пакеты.PCAP или что-то другое?"
Отправлено Vladislav Lazarenko , 10-Авг-04 12:37 
>Вот что мне упало в файл:
>skif@server :less /var/tmp/filter_skif.file
>
>10:03:43.470994 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:44.201320 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20
>hello 2 fdelay 15
>10:03:44.327008 xxx.net.ua > elf.yandex.ru: icmp: echo request
>10:03:44.450936 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:45.337141 xxx.net.ua > elf.yandex.ru: icmp: echo request
>10:03:45.453594 elf.yandex.ru > xxx.net.ua: icmp: echo reply
>10:03:46.210391 802.1d config 81c2.00:0c:85:bd:95:00.8018 root 81c2.00:0c:30:50:c1:c0 pathcost 100 age 1 max 20
>hello 2 fdelay 15
>
>Вот я и не пойму как из этого вырвать размер пакета упавшего
>в фильтр.

АХТУНГ! Ты что, файл парсишь ? Из этой информации никак, pcap_t* - это твой PCAP объект. При его инициализации ты обязан указать свой обработчик. Так вот в обработчике среди параметров присутствует указатель на пакет (я уже не помню названия структур)... Вот оттуда можно наковырять размер пакета, с заголовком и без оного. Пример смотреть в исходниках trafshow.


"Ловим пакеты.PCAP или что-то другое?"
Отправлено Skif , 10-Авг-04 13:14 
>АХТУНГ! Ты что, файл парсишь ? Из этой информации никак, pcap_t* -
>это твой PCAP объект. При его инициализации ты обязан указать свой
>обработчик. Так вот в обработчике среди параметров присутствует указатель на пакет
>(я уже не помню названия структур)... Вот оттуда можно наковырять размер
>пакета, с заголовком и без оного. Пример смотреть в исходниках trafshow.
>


Угу весь прикол оказался, кому интересно в функции pcap_compile, там
указывается  регулярное выражение для bpf по коему идет отбор того, чего нам
надо. Блин. Кривые руки и мозги.