Ich versuche, PCAP-Datei zu einigen Datenstruktur wie Vektor oder Array zu lesen und später gesammelten Daten (nur ausgewählte wie Paketlänge, Zeitstempel) in Anwendung.Lesen von pcap-Datei zu Vektor/Array
#include <stdio.h>
#include <pcap.h>
#define LINE_LEN 16
void dispatcher_handler(u_char *, const struct pcap_pkthdr *, const u_char *);
int main(int argc, char **argv)
{
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE];
if(argc != 2)
{
printf("usage: %s filename", argv[0]);
return -1;
}
/* Open the capture file */
if ((fp = pcap_open_offline(argv[1], // name of the device
errbuf // error buffer
)) == NULL)
{
fprintf(stderr,"\nUnable to open the file %s.\n", argv[1]);
return -1;
}
/* read and dispatch packets until EOF is reached */
pcap_loop(fp, 0, dispatcher_handler, NULL);
pcap_close(fp);
return 0;
}
void dispatcher_handler(u_char *temp1,
const struct pcap_pkthdr *header,
const u_char *pkt_data)
{
u_int i=0;
/*
* unused variable
*/
(VOID*)temp1;
/* print pkt timestamp and pkt len */
printf("%ld:%ld (%ld)\n", header->ts.tv_sec, header->ts.tv_usec, header->len);
printf("\n\n");
}
Das Problem ist mit pcap_loop()
: Ich habe einige Beispielanwendung für das Lesen pcap gefunden. Ich habe documentation dafür gefunden, aber die einzige Information ist, dass dies ganze Datei liest, bis das Ende der Datei erreicht ist. Ich habe versucht, Datei als eine typische FILE
behandeln, und in der While-Schleife bis EOF
lesen, aber es funktioniert nicht, weil ich nicht einfach fp
als FILE
behandeln kann.
Auch ich sehe keine Möglichkeit, Zeiger auf pcap_handler
übergeben, um es später abrufen.
Kann jemand vorschlagen, wie ich es anders machen kann?