WinPcap编程0.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《WinPcap编程0.pdf》由会员分享,可在线阅读,更多相关《WinPcap编程0.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、WinPcapWinPcapWinPcapWinPcap 编程编程WinPcap 是一个开源的、运行于 Win32 平台下的体系结构,它的主要功能是进行数据包捕获和网络分析。它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。WinPcap 由两部分组成:1.驱动程序:扩展操作系统功能提供低层次的网络访问2.动态链接库:运行在 Win32 平台上的应用程序可以非常方便地访问网络低层次的数据。Ethereal 是大名鼎鼎的捕获数据包专业软件,它的运行是在 WinPcap 的支持之下的,如果没有安装 WinPcap,Etherea
2、l 也无法正常捕获数据包。在正式 WinPcap 编程之前,要配置运行环境。Win32 平台下 WinPcap 应用程序需要以下四个动态链接库才能正常运行:wpcap.dllPacket.dllWanPacket.dllpthreadVC.dll这四个动态链接库在 WinPcap 驱动程序里。如果没有这个驱动程序,需要到 WinPcap 官方网站上下载,下载地址为:www.WinPcap.org如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。被过滤广告也可以不安装 WinPcap 驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32 目录下
3、或者接下来配置编程环境。如果一个源文件使用了 WinPcap 提供的库函数,那么就需要在该文件开始的位置添加 pcap.h包含文件(或者在引用的文件中),即#include“pcap.h”也许会出现下面的错误:fatal error C1083:无法打开包括文件:“pcap.h”:No such file or directory这个错误表明找不到 pcap.h 文件这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件所以,如果要运行程序还需要到官方网站上去下载 WinPcap SDKWpdPackWinPcap SDk 里面包含库文件,头文件,文档文件和一些例子。解压缩后把
4、Include 目录添加到 IDE 的包含文件中(VC6.0 Tools-Option-Directory;VS2003/2005 工具-选项-项目和解决方案/项目-VC+目录)error LNK2019:无法解析的外部符号_pcap_findalldevs_ex,该符号在函数 XXX 中被引用如 果 发 生 上 面 的 错 误 就 表 明 缺 少 库 文 件,需 要 添 加 wpcap.lib 到 工 程 中(VC6.0Project-Settings-Link-Object/library modules;VS 2003/2005 项目-添加现有项-所有文件)error C2065:“PC
5、AP_SRC_IF_STRING”:未声明的标识符error C3861:“pcap_findalldevs_ex”:找不到标识符error C2065:“PCAP_OPENFLAG_PROMISCUOUS”:未声明的标识符error C3861:“pcap_open”:找不到标识符新的版本里 WinPcap 支持远程数据包获取,发生上面的错误很有可能是新的版本导致不兼容的问题,所以还应当添加一个头文件 remote-ext.h,即#include remote-ext.h如果还有问题,可以到 WinPcaP 官方网站上找FAQ。一般情况下应该没有问题了。接下来,开始动手做抓包分析吧。Winp
6、capWinpcapWinpcapWinpcap 简介简介一Winpcap 简介Winpcap 是 UNIX 下的 libpcap 移植到 windows下的产物,他是一个 free and open source 的项目。Winpcap 工作于驱动(Driver)层,所以能以很高的效率进行网络操作。Winpcap 提供了以下强大的功能:1捕获原始的数据包2设置 filter,只捕获自己敢兴趣的数据包3方便的把捕获的数据包输出到文件和从文件输入4发送原始的数据包5统计网络流量6.(其它还有很多,我不知道了)二Winpcap 的安装使用方法1到 http:/winpcap.polito.it 下
7、载 winpcap 的安装包,程序员开发包。2执行安装包,这样你的机子就能运行 winpcap 程序了3解压开发包,在 VC 的 option 的 include 和 lib 中加入 winpcap 的include 和lib4.在你的程序中加入#include,#include.然后在工程的 setting 中加入预定义宏:WPCAP,HAVE_REMOTE.导入 wpcap.lib 库5就可以编写 wpcap 程序了三Winpcap 的一些基本的功能的实现一)捕获数据包1.枚举所有的可用的设备pcap_findalldevs_ex(可选)2.通过名字打开一个设备pcap_open()在这里
8、可以打开一个文件,只是在打开这个文件之前需要通过 pcap_createsrcstr 创建相应的name string3.设置 Filterpcap_compile,pcap_setfilter(可选)4.捕获数据有几种捕获数据的方法(捕获数据的数据都是最原始的数据包,即包含数据链路层的数据头)a 是以回调的方式 pcap_loop,pcap_dispatch().这两种方法基本相同,底层收集数据包,当满足一定的条件(timeout 或者缓冲区满),就会调用回调函数,把收集到的原始数据包 s,交给用户。他们返回的数据缓冲区包含多个包b.pcap_next_ex()的方式每当一个包到到达以后,p
9、cap_next_ex 就会返回,返回的数据缓冲区里只包涵一个包。二)发送包Winpcap 中有发送单个包和发送多个包的方法。这里只说说发送单个包1 通过名字打开一个设备pcap_open2 自己构造一个原始数据包(这个数据包会不经过任何处理就发送出去,所以必须把包中的各个字段设置好。另外这个数据包是包含数据链路层报头的)3 使用 pcap_sendpacket()发送数据包三)统计网络流量1.通过名字打开一个设备pcap_open通过 read_timeout 来设置统计的时间间隔2.设置 filterpcap_compile,pcap_setfilter(可选)3.设置设备的为统计模式 p
10、cap_setmode(MODE_STAT);4.开始统计,pcap_loop/pcap_dispatch()5在回调函数中的参数中就包含了统计信息,如下图:winpcapwinpcapwinpcapwinpcap 的一些认识的一些认识一Winpcap 简介Winpcap 是 UNIX 下的 libpcap 移植到 windows 下的产物,他是一个 freeandopensource的项目。Winpcap 工作于驱动(Driver)层,所以能以很高的效率进行网络操作。Winpcap 提供了以下强大的功能:1捕获原始的数据包2设置 filter,只捕获自己敢兴趣的数据包3方便的把捕获的数据包输
11、出到文件和从文件输入4发送原始的数据包5统计网络流量6.(其它还有很多,我不知道了)二Winpcap 的安装使用方法1到 http:/winpcap.polito.it 下载 winpcap 的安装包,程序员开发包。2执行安装包,这样你的机子就能运行 winpcap 程序了3解压开发包,在 VC 的 option 的 include 和 lib 中加入 winpcap 的include 和lib4.在你的程序中加入#include,#include.然后在工程的 setting 中加入预定义宏:WPCAP,HAVE_REMOTE.导入 wpcap.lib 库5就可以编写 wpcap 程序了三W
12、inpcap 的一些基本的功能的实现一)捕获数据包1.枚举所有的可用的设备pcap_findalldevs_ex(可选)2.通过名字打开一个设备pcap_open()在这里可以打开一个文件,只是在打开这个文件之前需要通过 pcap_createsrcstr 创建相应的namestring3.设置 Filterpcap_compile,pcap_setfilter(可选)4.捕获数据有几种捕获数据的方法(捕获数据的数据都是最原始的数据包,即包含数据链路层的数据头)a 是以回调的方式pcap_loop,pcap_dispatch().这两种方法基本相同,底层收集数据包,当满足一定的条件(timeo
13、ut 或者缓冲区满),就会调用回调函数,把收集到的原始数据包 s,交给用户。他们返回的数据缓冲区包含多个包b.pcap_next_ex()的方式每当一个包到到达以后,pcap_next_ex 就会返回,返回的数据缓冲区里只包涵一个包。二)发送包Winpcap 中有发送单个包和发送多个包的方法。这里只说说发送单个包1通过名字打开一个设备pcap_open2自己构造一个原始数据包(这个数据包会不经过任何处理就发送出去,所以必须把包中的各个字段设置好。另外这个数据包是包含数据链路层报头的)3使用 pcap_sendpacket()发送数据包三)统计网络流量1.通过名字打开一个设备pcap_open通
14、过 read_timeout 来设置统计的时间间隔2.设置 filterpcap_compile,pcap_setfilter(可选)3.设置设备的为统计模式pcap_setmode(MODE_STAT);4.开始统计,pcap_loop/pcap_dispatch()5在回调函数中的参数中就包含了统计信息,如下图:四.总结这些东西都是我在学习 winpcap 的过程中的一些经验和总结。由于我学习 winpcap 的时间很匆忙,只是按照 stepbystepguide 来学习的,所以我对于 winpcap 的理解也就只能局限与此,希望能在以后有机会深入学习/下面是一个应用 winpcap 写的
15、一个网络流量统计的例子,/nettraffic.cppefinestheentrypointfortheconsoleapplication./#includestdafx.h#include#include#include#includeusingnamespacestd;/-/-Voiddispatcher_handler(u_char*user_data,conststructpcap_pkthdr*pkthdr,constu_char*pktdata);/-Int main(intargc,char*argv)inti;pcap_if_t*alldevs;pcap_if_t*dev;c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WinPcap 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内