Создаем продвинутый боевой софт! Иван Скляров Хакер, номер #096, стр. 096-080-5 bpf_u_int32 len; /* длина этого пакета */ }; Последний аргумент указывает на буфер, который содержит весь пакет, перехваченный с помощью pcap_loop(). Callback-функция не возвращает никакого значения (void). В callback-функции должна осуществляться обработка принятых пакетов. Делается это точно так же, как мы это делали в примерах без использования библиотеки libpcap, то есть определяются необходимые структуры заголовков сетевых пакетов и производится разбор принятого пакета на эти структуры, а значения полей выводятся на экран. Закрытие сессии перехвата Перед завершением работы следует закрыть сессию. Это делается с помощью функции pcap_close(), которая имеет следующий прототип: void pcap_close(pcap_t *p) Единственный аргумент функции — это дескриптор сессии, которую нужно закрыть. Компиляция программ, использующих библиотеку libpcap, осуществляется с указанием ключа –lpcap. Для нашего снифера это выглядит так: # gcc sklsniff_pcap.c –o sklsniff_pcap –lpcap Вот пример использования: # ./sklsniff_pcap tcp and dst host 192.168.10.1 В этом случае снифер будет отлавливать только TCP-пакеты, отправляемые на узел 192.168.10.1. Сканер портов с использованием библиотек libpcap и libnet Наш сканер портов, использующий метод скрытого сканирования (half-open scanning), задействует сразу две библиотеки. Я думаю, ты без труда разберешься в его исходном коде. Компиляция осуществляется следующим образом: # gcc plscan.c –o plscan `libnet-config --defines` ` libnet-config --libs` `libnet-config --cflags` -lpcap DVD На DVD лежат исходные коды снифера (sklsniff_pcap.c), ARP-спуфера (arpspoofer.c), сканера портов (plscan.c), а также последние версии библиотек libpcap и libnet под UNIX и Windows. WWW Домашние страницы библиотек: www.tcpdump.org - libpcap под UNIX; www.winpcap.org - libpcap под Windows (WinPcap); www.packetfactory.net/libnet - libnet под UNIX; www.packetfactory.net/libnet/dist/deprecated/LibnetNT.zip - libnet под Windows; www.infonexus.com - домашняя страница Майка Шифмана. INFO В моей книге «Программирование боевого софта под Linux» ты сможешь найти более подробную информацию о программировании с использованием библиотек libpcap и libnet. |