Но есть проблема. Не могу определить откуда считывать заголовки и данные пакетов. Делаю всё как в простом примере из докуменатции:
...
pcap_loop(adhandle, 0, packet_handler, (unsigned char *)dumpfile);
...
void packet_handler(u_char *dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
pcap_dump(dumpfile, header, pkt_data);
}
---
Как я понял, в переменной header хранится не заголовок пакета, а служебные данные самого пикапа, а в переменной pkt_data сам пакет (заголовки и данные). В RFC791 (Internet Protocol) я нашёл таблицу, из которой видно, что первые 4 бита определяют версию протокола (правда я не нашёл, какая именно цифра там должна быть, но подозреваю что 4).
Проверяю первые 4 бита для каждого пакета, а они то 0xC0 то 0x03. В чём мой прокол?
|