libpcap学习
look up a device
char *dev = NULL, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
if (dev == NULL) {
fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
return(2);
}
printf("Device: %s\n", dev);
open the device
pcap_t *descr = NULL;
descr = pcap_open_live(dev, MAXBYTES2CAPTURE, 1, 512, errbuf);
if (descr == NULL) {
fprintf(stderr, "Couldn't opne the device: %s %s\n", dev, errbuf);
return(2);
}
Opening a handle for writing captured packets
pcap_dumper_t* out_pcap;
out_pcap = pcap_dump_open(descr,"/path/pack.pcap");
capture start
pcap_loop(descr, 10, save_packet, (u_char *)out_pcap);
save packet
void save_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
pcap_dump(args, header, packet);
printf("Capture a packet with length of [%d]\n", header -> len);
}