Как сохранить кадры Ethernet в формате pcap

Я пишу приложение, которое слушает сетевой интерфейс, выбирает некоторые кадры, редактирует их, а затем сохраняет их на диск. Очень похоже на tshark и tcpdump.

Мой код написан на C ++

Однако я хочу сохранить свои пакеты в формате pcap и не могу найти библиотеку C / C ++, которая принимает кадры Ethernet (в памяти) и сохраняет их в файл .pcap.

  • Примечание: пока что я использую hexdump и text2pcap, но это неприемлемо в производстве

Обновление решения:

#include <pcap.h>

pcap_t* p = pcap_open_dead(DLT_EN10MB, 65535);
const std::string pcap_file_name = getPcapName();
pcap_dumper_t* dumper = pcap_dump_open(p, pcap_file_name.c_str());

pcap_pkthdr h;
h.caplen = packet_len;
h.len = packet_len;

pcap_dump((u_char*)dumper, &h, packet);

pcap_dump_close(dumper);
pcap_close(p);

0

Решение

Почему вы не можете использовать WinPcap / libpcap непосредственно в коде C ++?
Это C libs, так что вы должны быть в состоянии связать их.

Используйте libpcap под unix или winpcap под windoze.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]