Как извлечь поля параметров в заголовке TCP для файла pcap с помощью C / C ++

0

Как извлечь поля опций в заголовке TCP с помощью C/C++ в случае автономного файла pcap. Я попытался включить поле опции в структуру заголовка, но это не дает последовательного результата, когда я сравниваю результат с Wireshark. Кажется, что произвольные байты пропадают при доступе через структуру заголовка TCP. Пожалуйста помоги.

Теги:
tcp
pcap

1 ответ

0

Вместо того, чтобы пытаться напрямую прочитать файл, используйте pcap_open_offline или pcap_fopen_offline из libpcap. Это прочитает файл сохранения и позволит вам отправлять фильтры. Псевдокод идет следующим образом (вам нужно будет добавить обработку ошибок):

char *fname = "/path/to/my/file";
const u_char *packet;
pcap_t *handle;

handle = pcap_open_offline (fname, errbuf);

while (packet = pcap_next(handle,&header))
{
    char *data = (char *) packet;
    ...
}

pcap_close (handle);

Если вы случайно используете libpcap, вам придется опубликовать код. Помните, что для надежного поиска IP-заголовков вам нужно будет проверить тип ethernet (ETHER_TYPE_IP vs ETHER_TYPE_8021Q), затем найти заголовок TCP (длина заголовка IP может меняться), и только тогда вы получите указатель на заголовок TCP,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню