libpcap - 入门

    xiaoxiao2021-04-13  28

    loopupdev

    #include <pcap.h> #include <stdio.h> int main() { char err_buf[PCAP_ERRBUF_SIZE], *device; device = pcap_lookupdev(err_buf); if (device) printf("success: device: %s\n", device); else printf("error: %s\n", err_buf); return 0; }

    pcap_lookupdev这个函数返回的是网络接口的字符串。 编译:gcc pcap_lookupdev.c -o pcap_lookupdev -lpcap 输出:success: device: eth1


    pcap_next

    #include <pcap.h> #include <time.h> #include <stdlib.h> #include <stdio.h> int main() { char err_buf[PCAP_ERRBUF_SIZE], *str_device = NULL; pcap_t *pcap_device; struct pcap_pkthdr packet; const u_char *str_pkt; str_device = pcap_lookupdev(err_buf); if (str_device) printf("success: device: %s\n", str_device); else printf("error: %s\n", err_buf); pcap_device = pcap_open_live(str_device, 65535, 1, 0, err_buf); if (!pcap_device) { printf("error: pcap_open_live: %s\n", err_buf); exit(1); } str_pkt = pcap_next(pcap_device, &packet); if (!str_pkt) { printf("did not capture a packet\n"); exit(1); } printf("packet length=%d\n", packet.len); printf("number of bytes=%d\n", packet.caplen); printf("recieved time=%s\n", ctime((const time_t *)&packet.ts.tv_sec)); for (i = 0; i < packet.len; i++) { printf(" x", packet[i]); if ((i + 1) % 16 == 0) printf("\n"); } printf("\n\n"); pcap_close(pcap_device); return 0; }

    参考文章

    转载请注明原文地址: https://ju.6miu.com/read-669488.html

    最新回复(0)