用户态使用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>

 

目前实现了IP解析,ICMP解析,TCP解析,UDP解析,DNS解析,HTTP解析。

 

流程如下

实际运行结果如下

 

具体步骤:

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

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);

 

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

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

 

 

具体实现代码

暂时不发布

 

 

posted on 2014-02-15 16:37  WK23  阅读(525)  评论(0)    收藏  举报

导航