WinPcap开发的一些流程

WinPcap SDK可以很方便的帮助程序员设计抓包等程序,官方的WinPcap程序,可以在www.winpcap.org下载,并且可以找到很多的例子和函数以及其语法。

具体的抓包流程:

1.先找到网卡设备,使用的函数是,pcap_findalldevs

2.如果是有多个网卡,就要自己选择有网络数据的那个网卡了,其实也就是写一个循环,让指针地址转到所要侦听的那个网卡设备上即可。

for(d=alldevs,i=0;i<inum-1;d=d->next,++i)

3.找到网卡设备之后,打开网卡设备

pcap_t* pcap_open_live(const char*,int,int,int,char*)

第一个参数,即是要侦听的网卡名字,可以由 d->name获得

第二个参数,即是最大的包的大小,

第三个参数,模式选择,一般是混杂模式:1或者PCAP_OPENFLAGPROMISCUOUS

第四个参数,即为超时时间设置,单位为微秒,若要想设为1秒,则填上1000

第五个参数,是错误信息缓冲区,char* errbuff。

打开网卡,之后返回一个pcap_t *指针的句柄

3.检查数据链路层

pcap_datalink(用pcap_open_live返回的句柄)

4.设置过滤条件,编译过滤条件

int pcap_compile(pcap_t*p, struct bpf_program *fp, char *str,int optimize,bpf_u_int32 netmask)

第一个参数即为,open_live返回的句柄

第二个参数即为,由bpf_program结构体定义的fcode

第三个参数即为,由用户输入的过滤条件,具体的语法在官网(www,winpcap.org)上面有很多的说明和例子

第四个参数即为,优化,一般为1

第五个参数即为,子网掩码,这个很容易获得,在所选择的网卡d的addresses里面就有,d->addresses->netmask,

5.设置过滤器

pcap_setfilter函数,pcap_setfilter(open_live返回的句柄,结构体fcode的指针)

6.接下来循环接收信息即可

7.最后不要忘了要释放网卡信息。pcap_freealldevs()


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值