- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
局域网监控系统研究
用VC++实现基Winpcap的网络数据包捕获与分析
1,数据包的捕获原理
在正常的情况下,一个网络接口应该只响应以下两种数据帧 :
(1)与自己硬件地址相匹配的数据帧。
(2)发向所有机器的广播数据帧。其实在一个实际的系统中 ,数据的收发由网卡完成 ,网卡接收到传输来的数据帧 ,网卡内的单片程序接收数据帧的目的 MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断是否接收。而对于合法的网卡来说应该只接收以下数据帧有以下 4种模式 :①广播方式。 ②组播方式。 ③单播方式。 ④混杂模式。
数据包捕获作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯。因此 ,网络数据包捕获的基本原理是让网卡接收一切它所能接收的数据。
2,基于winpcap库的网络数据包捕捉方法
WinPcap是应用于Win32平台的数据包捕获与网络分析的一种体系结构 ,为Win32应用程序提供访问网络底层的能力,其主要思想来源于 Unix系统BSD包捕获构架.WinPcap基本体系结构如图
1所示,由3个模块组成
:
(1)NPF包过滤器 ,数据包监听设备驱动程序 ,是架构的核心 ,它工作在内核级,主要功能是过滤数据包。它直接从数据链路层取得网络数据包 ,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。
(2)Packet.dll是低级的动态连接库,运行在用户级,把应用程序和数据包监听设备驱动程序隔离开来,使得程序可以不加修改地在不同的Windows系统上运行。通过Packet.dll提供的能来直接访问BPF驱动程序的包驱动API,利用“raw”模式发送和接收包。不同 Windows系上的 Packet.dll并不相同 ,但由于它提供了一套相同的调用接口 ,这样使得高级系统无关库不依赖于特定的Windows平台。
(3)Wpcap.dll是高级系统无关库,也工作在用户级 ,它和应用程序编译在一起 ,并使用低级动态连接库Pack2et.dll提供的服务,向应用程序提供完善的监听接口。
WinPcap通过这
3个模块提供了以下的各项功能
:①捕获原始数据报 ,包括在共享网络上各主机发送 /接收的以及相互之间交换的数据报
;②在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
③在网络上发送原始的数据报
④收集网络通信过程中的统计信息
3基于WinPcap函数库的VC++设计
3.1 设备数据定义
LADAPTER lpadapter //描述一个网络适配器 ;
LPPACKETlppacketr //描述一组网络数据报的结构。
3.2 捕获过程
WinPcap可以捕获到以太帧,按照以下步骤可以使用 WinPcap捕获数据帧 :
(1)查找设备 ,BOOLEANPacketGetAdapterNames((char *)AdapterName,AdapterLength)
函数值为TRUE则可以得到网络适配器列表及描述 ,否则返回为FALSE,意为查找失败。
(2)打开适配器,如果调用成功返回一个类型为lpadapter指针的包捕获捕捉描述字lpadapter=PacketOpenAdapter(AdapterList)。
(3)设置网络接口接收到数据报的过滤规则为混杂模式 BOOLEANPacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS)
(4)开始捕获数据包。
pthis-lppacketr =PacketAllocate-Packet()//如果运行成功 ,返回一个 _PACKET结构的指针
,否则返回NULL。成功返回的结果将会传送到PacketReceivePacket()函数,接收来自驱动的网络数据报。
PacketSetBuff(lpadapter,500*1024)
//设置捕获数据报的内核级缓冲区大小
PacketInitPacket (pthis -lppacketr, (char *)recvbuf,sizeof(recvbuf))
//初始化一个 LPACKET结构
PacketReceivePacket (pthis-lpada-pter,pthis-lppacketr,TRUE)
//从 NPF驱动程序读取网络数据报及统计信息
(5)//关闭参数中提供的网络适配器 ,释放相关的 ADAPTER结构。
Packet -CloseAdapter (LPADAPTER lpadapter)
4 数据包分析
利用winpcap库捕捉的数据帧其实是经过传输层,网络层和数据链路层的封装而成的以太网数据帧,因此可以对数据作进一步的分析。
4.1 以太网的数据分析
您可能关注的文档
最近下载
- 高中语文《雷雨》-PPT市公开课一等奖省赛课获奖PPT课件.pptx VIP
- 2025年社工300题目题库(301道) .pdf VIP
- 部编人教版语文小学五年级下册第四单元主讲教材分析解读课件.pptx
- 【行业标准】QBT 1338-2012 家具制图.pdf
- 2025年广东社工招聘笔试题目及答案.docx VIP
- 重大版小学英语六年级下册英语第二单元测试题.pdf VIP
- 部编版小学五年级下册语文二单元教材分析解读主讲课件.pptx
- 物流管理专业毕业实习报告.docx VIP
- 2024年度组织生活会党支部查摆问题及整改措施.docx VIP
- 《工程水文地质》项目5.3河流地质作用及冲积土.pptx
文档评论(0)