Здравствуйте, MindGhost, Вы писали:
MG> адресного пространства нашей локалки.(мой: 192.168.0.234, ловит с: 16.90.192.168 и т.п.). Строка "arp net 192.168.0 mask 255.255.255.0" дает такой же результат.
Вас выделенные фрагменты никак не настораживают? Сдаётся мне, что вам нужно пользоваться функцией ntohl, для получения IP адреса.
Прошу перенести свою тему в Раздел "Сети, сокеты, протоколы".
Приношу свои извинения за ошибку в выборе раздела.
Всем привет!
Задача в следующем:
Использую библиотеку WinPcap. Программирую в MS VC++ 6.0 .
Генерирую ARP-запросы на диапазон IP-адресов. Пакеты запросов генерируются верно и принимаются хостом назначения. Хост отвечает. Исходный комп ответы получает. (Проверял сниффером CommView).
Задача: принять эти ответы для формирования ARP-таблицы. Теоретически необходимо грамотно настроить фильтр принятия пакетов. Мне известны обе функции установки фильтра pcap_compile() и pcap_setfilter(). В первую функцию необходимо передать строку с описанием фильтра. Что я не вставлял желаемого результата не получал. Строка "arp" теоретически должна настроить фильтр на прием ARP-пакетов. При установке фильтра программа пакеты ответов с нужных IP не ловит, а ловит пакеты с IP которые вне адресного пространства нашей локалки.(мой: 192.168.0.234, ловит с: 16.90.192.168 и т.п.). Строка "arp net 192.168.0 mask 255.255.255.0" дает такой же результат.
Подскажите что я делаю не так.
Заранее благодарен.
27.05.05 23:27: Перенесено из 'C/C++'
Здравствуйте, butcher, Вы писали:
MG>> адресного пространства нашей локалки.(мой: 192.168.0.234, ловит с: 16.90.192.168 и т.п.). Строка "arp net 192.168.0 mask 255.255.255.0" дает такой же результат.
B>Вас выделенные фрагменты никак не настораживают? Сдаётся мне, что вам нужно пользоваться функцией ntohl, для получения IP адреса.
Дело в том, что на ряду с пакетами с этих IP я получаю и пакеты с нужных мне IP при отсутствии фильтра вообще. А при настройки фильра на прием ARP протокол — получаю с этих, а необходимые мне ARP-ответы игнорируются. Возможно вы сможете подсказать как мне принимать все пакеты до получения всех необходимых ARP — ответов не использую фильтр. Проблема состоит в том, что я использую функцию прекращающую работать после приема n-го колическтва пакетов. А какое количесво пакетов будет принято до получения всех необходимых расчитать невозможно.
Подскажите, пожалуйста.
Возможно я безнадежно туплю и без подсказки тупить не прекращу.
Здравствуйте, butcher, Вы писали:
MG>> адресного пространства нашей локалки.(мой: 192.168.0.234, ловит с: 16.90.192.168 и т.п.). Строка "arp net 192.168.0 mask 255.255.255.0" дает такой же результат.
B>Вас выделенные фрагменты никак не настораживают? Сдаётся мне, что вам нужно пользоваться функцией ntohl, для получения IP адреса.
Огромное спасибо за подсказку! Я действительно тупил — доверился стандартному примеру, а он неправильно определял IP-адреса (на два байта раньше, захватывая MAC-адрес отправителя). Я действительно зациклился и искал проблему в другом месте. Фильтр работает как часы.
butcher, еще раз огромное спасибо за помощь!