了解winpcap库编程

本文介绍了winpcap库在Windows系统中用于网络数据包捕获的功能,与Linux下的libpcap库类似。通过示例代码展示了如何使用winpcap进行基本的网络包捕获、过滤及打印,包括打开设备、设置过滤器和循环处理接收到的包。
摘要由CSDN通过智能技术生成

winpcap是windows系统网络抓包的一个库,在linux中也对应一个库为libpcap,两者使用是一样的。

1.pcap_lookupdev():查找网卡设备
char *pcap_lookupdev(char *errbuf)
errbuf为出错信息,如果出错errbuf会有内容,返回值为设备名指针(返回NULL说明未发现设备)

2.pcap_lookupnet():获取ip地址:
int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf):
device为指定的设备名,netp会返回设备ip,maskp返回设备掩码,errbuf返回出错信息

3.pcap_open_live():开启对应的网卡设备
pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);
device为设备名,snaplen为指定每次获取一个包的最大的内容,promisc设置是否为混杂模式,to_ms等待毫秒,errbuf出错信息

4.pcap_compile():添加过滤选项
int pcap_compile(pcap_t *p, struct bpf_program *fp, char *buf, int optmize, bpf_u_int32 mask);
fp存放编译后的bpf, buf为过滤条件,optimize是否优化过滤表,mask为网络掩码

5.pcap_setfilter():设置开启过滤器
int pacap_setfilter(pcap_t *p, struct bpf_program *fp);

6.pcap_loop():循环获取网卡数据
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
p是pcap_open_live返回的值, cnt指抓几个包(无限抓包则为-1),callback回调函数(执行数据处理操作),user(回调函数的第一个para)

7.pcap_close():关闭
void pcap_close(pcap_t *p);
p是pcap_open_live返回值

网上的一段程序
  1. #include <pcap.h>  
  2. #include <time.h>  
  3. #include <stdlib.h>  
  4. #include <stdio.h>  
  5.   
  6. void getPacket(u_char * arg, const 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值