Как вы инициализируете функцию pcap_file_header в libpcap?
В настоящее время чтение в файлах pcap с использованием pcap_open_offline и извлечение информации с использованием заголовка pcap_pkthdr и данных в каждом пакете. Просто хотите иметь возможность извлекать информацию из глобального заголовка?
Любая помощь / совет с благодарностью.
// Шаг 2 — Получить имя файла
string file = «/Users/trader/Documents/udp-224.0.31.11_14320.cap»;
//Step 3 - Create an char array to hold the error.
// Note: errbuf in pcap_open functions is assumed to be able to hold at least PCAP_ERRBUF_SIZE chars
// PCAP_ERRBUF_SIZE is defined as 256.
char errbuff[PCAP_ERRBUF_SIZE];
//Step 4 - Open the file and store result in pointer to pcap_t
//Use pcap_open_offline
pcap_t * pcap = pcap_open_offline(file.c_str(), errbuff);
//Step 5 - Create a header and a data object
// Create a header object:
struct pcap_file_header *globalHeader;
struct pcap_pkthdr *header;
const u_char *data;
//Step 6 - Loop through packets and print them to screen
u_int packetCount = 0;
char sourceIp[INET_ADDRSTRLEN];
char destIp[INET_ADDRSTRLEN];
printf("-----------------------------------------------------------------");
globalHeader= (struct pcap_file_header*) file.c_str();
printf("\nMagic Number: %x\n", globalHeader->magic);
printf("Major Version Number %x\n", globalHeader->version_major);
printf("Minor Version Number %x\n", globalHeader->version_minor);
printf("GMT to local correction: %x\n", globalHeader->thiszone);
printf("Accuaracy of Timestamp: %x\n", globalHeader->sigfigs);
printf("Max length of captured packets, in octets: %x\n", globalHeader->snaplen);
printf("Data Link Type %x\n", globalHeader->linktype);
Задача ещё не решена.
Других решений пока нет …