diff options
Diffstat (limited to '3rdparty/winpcap/Examples-pcap/readfile_ex/readfile_ex.c')
-rw-r--r-- | 3rdparty/winpcap/Examples-pcap/readfile_ex/readfile_ex.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/3rdparty/winpcap/Examples-pcap/readfile_ex/readfile_ex.c b/3rdparty/winpcap/Examples-pcap/readfile_ex/readfile_ex.c new file mode 100644 index 00000000000..9b6e9ed2a31 --- /dev/null +++ b/3rdparty/winpcap/Examples-pcap/readfile_ex/readfile_ex.c @@ -0,0 +1,56 @@ +#include <stdio.h> +#include <pcap.h> + +#define LINE_LEN 16 + +int main(int argc, char **argv) +{ + pcap_t *fp; + char errbuf[PCAP_ERRBUF_SIZE]; + struct pcap_pkthdr *header; + const u_char *pkt_data; + u_int i=0; + int res; + + 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; + } + + /* Retrieve the packets from the file */ + while((res = pcap_next_ex(fp, &header, &pkt_data)) >= 0) + { + /* print pkt timestamp and pkt len */ + printf("%ld:%ld (%ld)\n", header->ts.tv_sec, header->ts.tv_usec, header->len); + + /* Print the packet */ + for (i=1; (i < header->caplen + 1 ) ; i++) + { + printf("%.2x ", pkt_data[i-1]); + if ( (i % LINE_LEN) == 0) printf("\n"); + } + + printf("\n\n"); + } + + + if (res == -1) + { + printf("Error reading the packets: %s\n", pcap_geterr(fp)); + } + + pcap_close(fp); + return 0; +} + |