基于Winpcap的数据包捕获和协议分析系统的设计与实现

1、Winpcap概述
1.1 Winpcap简介
Winpcap(windows packet capture)是由意大利人Fulvio Risso和LorisDegioanni提出并实现的[1]。它是一个Windows平台下捕包和网络分析的体系架
基于Winpcap的数据包
捕获和协议分析系统的设计与实现
李延会 岳彩祥 徐金艳 李亚斐 长春工业大学研究生院 130012
构。它具有访问底层的能力,提供了捕获原始数据包,按照一定规则过滤数据包,以及发送原是数据包的功能. WinPcap 为用户级的数据包提供了Windows下的一个平台。WinPcap是BPF模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS中函数的调用为Win95、Win98、WinNT和Win2000提供一类似于 UNIX 系统下 Berkeley PacketFilter 的捕获和发送原始数据包的能力。Packet.dll 是对这个 BPF 驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。WinPcap的主要结构图如图
1。
1.2 winpcap构成
WinPcap 主要有三个模块构成[2,3]:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet
.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。
packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。 Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。图2显示了Winpcap的不同组件。
图2 WinPcap主要结构图
图1 WinPcap结构图图3 主线程流程图
图4 子线程流程图
2、网络数据包捕获的原理及软件
的实现
2.1数据包捕获原理
以太网(Ethernet)具有共享介质的可燃气
特征,当网络适配器设置为监听模式(混
杂模式,Promiscuous)时,由于采用
以太网广播信道争用的方式,使得监听系
统与正常通信的网络能够并联连接,并可
以捕获任何一个在同一冲突域上传输的数
据包。IEEE802.3 标准的以太网采用的是
持续 CSMA的方式,正是由于以太网采
用这种广播信道争用的方式,使得各个站
点可以获得其他站点发送的数据。运用这
一原理使信息捕获系统能够拦截的我们所
要的信息,这是捕获数据包的物理基础
[4]。
以太网是一种总线型的网络,总线的
特点是:当一台计算机发送数据时,总线
上所有计算机都能检测到这个数据[5]。以
太网从逻辑上来看是由一条总线和多个连
接在总线上的站点所组成各个站点采用上
面提到的 CSMA/CD 协议进行信道的争
广东工业大学学报用和共享。每个站点(这里特指计算机通
过的接口卡)网卡来实现这种功能。网卡
主要的工作是完成对于总线当前状态的探
测,确定是否进行数据的传送,判断每个日本女性的生活地位
物理数据帧目的地是否为本站地址,如果
不匹配,则说明不是发送到本站的而将它
丢弃。如果是的话,接收该数据帧,进行物
理数据帧的 CRC 校验,然后将数据帧提
交给LLC 子层。
2.2 Winpcap编程模式
Winpcap提供了数据包的捕获功能,
在不同的应用中需要设计不同的协议分析
模块。针对不同的协议,设计相应的协议
分析功能,是基于Winpcap应用的关键所
2002年诺贝尔化学奖
在[6]。在基于Winpcap的应用程序中,有
基本的编程模式。使用Winpcap捕获和分
析网络数据包的基本流程如图5所示。
2.3数据包捕获的实现
捕获过程按先后顺序具体步骤如下:
1).寻系统中可用的接口列表。
2).选择接口并将其设为混杂模式准
备捕捉。
3).将捕捉到的数据包保存到文件以
便读取和分析。
4).读取保存在文件中的数据包并进
行分析。
5).关闭接口。
本软件建立在Winpcap架构的第三层
模块Winpcap.Dll之上。使用Visual
C++6.0开发平台利用多线程技术实现。主
线程负责寻和选择网络接口、设置分析
过滤器、分析捕获数据包。子线程负责打
开选择的接口并将其设为混杂模式、捕获
数据包并将其保存到文件中。其流程图见
图3,图4。
3、软件运行及实验结果
运行该软件应确保本地机器上安装了
Winpcap驱动,可从其下载。软件运
行效果如图6所示。
4、结束语
本文实现的这个系统可以监听局域网
内流经所有主机的数据包,并分析了每个
包的协议、源/目的Mac地址、源/目
的IP地址、数据包长度和包内的数据既可
以管理和维护网络健康运行还可以检测网
络入侵,甚至可以学习网络协议知识。
本系统也有一些不足和需要改进的地
方:
心心board
血染的图腾(1)跨平台运行兼容性需要改进。
本系统只能运行在Windows NT,Windows
2000,Windows Xp 并且机器上必须安装
Winpcap才能运行。
(2)只能在局域网内捕获数据包,无
法跨路由进行监测。
虽然基于Winpcap的网络数据协议分
析软件在应用中还有许多局限性,但是仍
然作为一种代表性的技术,对于今后发展
更高层的网络安全应用提供了前提和基础
通过对这方面的研究,可以理解网络各层
通讯协议的机理。
图5 基于Winpcap开发的编程模式图6 软件运行效果图

本文发布于:2024-09-23 09:26:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/136992.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据包   捕获   网络   运行   提供   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议