C++下,使用libpcap进行抓包

使用libpcap进行抓包,后续分析(未完待续)

主要使用库libpcap,辅助

#include <pcap.h>    #include <sys/socket.h>   #include <netinet/in.h>       #include <netinet/ip.h>      #include <netinet/tcp.h>      #include <netinet/if_ether.h>       #include <arpa/inet.h>

实际运行结果如下

C++下,使用libpcap进行抓包

 

具体步骤:

查找网卡函数,返回当前网卡指针

dev = pcap_lookupdev(errbuf);

查找当前网络函数,返回当前网络的网络地址和此网络掩码地址(比如我的ip是192.168.138.141,则我的网络地址192.168.138.1,掩码地址255.255.255.0)

ret = pcap_lookupnet(dev,&netp,&maskp,errbuf);

监听网卡函数(个人理解)
pcap_t *device = pcap_open_live(dev,65535,1,0,errbuf);

捕获数据包函数
pcap_loop(device,-1,ethernet_packet_callback,NULL);

 

个人认为程序难点在于数据处理,并非获取数据包。

由于捕获的是一大串子十六进制数字符数据,所以如何处理这些数据是关键,

 

 

未完待续

C++下,使用libpcap进行抓包

上一篇:Python测试基础教程


下一篇:Python internals: Symbol tables, part 1(转)