Pcap_t * pcap_open_offline (const char * fname, char * errbuf) из libpcap считывает весь файл pcap в память? - PullRequest
0 голосов
/ 06 марта 2011

Читает ли

pcap_t *pcap_open_offline(const char *fname, char *errbuf) 

из libpcap весь файл pcap в память?Если не так, я должен использовать tcpslice или аналогичные инструменты, чтобы разделить файл pcap?

Спасибо.

1 Ответ

1 голос
/ 03 июня 2011

Странный способ сформулировать ваш вопрос, но я постараюсь ответить на все, что могу.

pcap_open_offline() принимает файл .dump (или файл с аналогичным именем с именем tcpdump, tcpslice или libpcap's * 1004).* + pcap_dump() функции) в качестве входных данных.

Этот файл точно такой же по формату и функции, что и прямая трассировка сетевого устройства, т.е. вы можете использовать этот объект pcap_t в pcap_next, pcap_loop и т. Д..

Любое изменение файла дампа (IE, извлечение информации или разбор только того, что вы хотите с помощью tcpslice или wireshark) сделает его нечитаемым pcap_open_offline(), так как он не будет отформатирован в видетрассировка живого пакета.

Однако он не загружает весь файл одновременно в память.Он выполняет потоковую передачу файла, как если бы вы передавали пакеты с прямой трассировки.

Подводя итог: pcap_open_live() открывает неизмененный дамп tcpdump / tcpslice и читает его как живой поток.Он не загружает весь файл в свою память, так как дампы могут быть довольно большими!Вместо этого он просто просматривает файл, загружая только один пакет за раз.

...