51CTO下载-局域网监控系统研究.doc

上传人:asd****56 文档编号:70340204 上传时间:2023-01-19 格式:DOC 页数:5 大小:379KB
返回 下载 相关 举报
51CTO下载-局域网监控系统研究.doc_第1页
第1页 / 共5页
51CTO下载-局域网监控系统研究.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《51CTO下载-局域网监控系统研究.doc》由会员分享,可在线阅读,更多相关《51CTO下载-局域网监控系统研究.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、局域网监控系统研究用VC+实现基Winpcap的网络数据包捕获与分析1,数据包的捕获原理在正常的情况下,一个网络接口应该只响应以下两种数据帧 :(1)与自己硬件地址相匹配的数据帧。(2)发向所有机器的广播数据帧。其实在一个实际的系统中 ,数据的收发由网卡完成 ,网卡接收到传输来的数据帧 ,网卡内的单片程序接收数据帧的目的 MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断是否接收。而对于合法的网卡来说应该只接收以下数据帧有以下 4种模式 :广播方式。 组播方式。 单播方式。 混杂模式。数据包捕获作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯。因此 ,网络数据包捕获的基本原理是让

2、网卡接收一切它所能接收的数据。 2,基于winpcap库的网络数据包捕捉方法WinPcap是应用于Win32平台的数据包捕获与网络分析的一种体系结构 ,为Win32应用程序提供访问网络底层的能力,其主要思想来源于 Unix系统BSD包捕获构架.WinPcap基本体系结构如图 1所示,由3个模块组成 : (1)NPF包过滤器 ,数据包监听设备驱动程序 ,是架构的核心 ,它工作在内核级,主要功能是过滤数据包。它直接从数据链路层取得网络数据包 ,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。 (2)Packet.dll是低级的动态连接库,运行在用户级,把应用程序和数据包监听设备驱动

3、程序隔离开来,使得程序可以不加修改地在不同的Windows系统上运行。通过Packet.dll提供的能来直接访问BPF驱动程序的包驱动API,利用“raw”模式发送和接收包。不同 Windows系上的 Packet.dll并不相同 ,但由于它提供了一套相同的调用接口 ,这样使得高级系统无关库不依赖于特定的Windows平台。 (3)Wpcap.dll是高级系统无关库,也工作在用户级 ,它和应用程序编译在一起 ,并使用低级动态连接库Pack2et.dll提供的服务,向应用程序提供完善的监听接口。 WinPcap通过这 3个模块提供了以下的各项功能 :捕获原始数据报 ,包括在共享网络上各主机发送

4、/接收的以及相互之间交换的数据报 ;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报 收集网络通信过程中的统计信息 3基于WinPcap函数库的VC+设计 3.1 设备数据定义 LADAPTER lpadapter /描述一个网络适配器 ; LPPACKETlppacketr /描述一组网络数据报的结构。 3.2 捕获过程 WinPcap可以捕获到以太帧,按照以下步骤可以使用 WinPcap捕获数据帧 : (1)查找设备 ,BOOLEANPacketGetAdapterNames(char *)AdapterName,&AdapterLength)函

5、数值为TRUE则可以得到网络适配器列表及描述 ,否则返回为FALSE,意为查找失败。(2)打开适配器,如果调用成功返回一个类型为lpadapter指针的包捕获捕捉描述字lpadapter=PacketOpenAdapter(AdapterList)。 (3)设置网络接口接收到数据报的过滤规则为混杂模式 BOOLEANPacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS) (4)开始捕获数据包。 pthis-lppacketr =PacketAllocate-Packet()/如果运行成功 ,返回一个 _PACKET结构的指针 ,否则返

6、回NULL。成功返回的结果将会传送到PacketReceivePacket()函数,接收来自驱动的网络数据报。PacketSetBuff(lpadapter,500*1024) /设置捕获数据报的内核级缓冲区大小 PacketInitPacket (pthis -lppacketr, (char *)recvbuf,sizeof(recvbuf) /初始化一个 LPACKET结构 PacketReceivePacket (pthis-lpada-pter,pthis-lppacketr,TRUE) /从 NPF驱动程序读取网络数据报及统计信息 (5)/关闭参数中提供的网络适配器 ,释放相关的

7、ADAPTER结构。 Packet -CloseAdapter (LPADAPTER lpadapter) 4 数据包分析利用winpcap库捕捉的数据帧其实是经过传输层,网络层和数据链路层的封装而成的以太网数据帧,因此可以对数据作进一步的分析。4.1 以太网的数据分析 以太网数据帧有报头和数据区组成,在以太网的报头中包含目的地址端及源地址,各6个字节,帧的报文部分包含的是数据的种类,2各字节。最后放置的是错去校验和修正码,通常抓到的数据是已经去掉了同步码和帧分节符。报头的部分的定义如图2所示。在具体的变成实现中,可以定义以太网数据帧数据结构描述_ETHDR: typedef struct _

8、ETHDR unsigned char eh_dst6;unsigned char eh_src6; unsigned short eh_type; ETHDR; typedefETHDR* LPETHDR;根据类型字段 eh_type可以判断是那种数据包,一般常用的有 :0x0800表示 IP数据包 ,0x0806表示ARP数据包,简要编程代码如下: LPETHDR eth; if(eth-eh_type=htons(0x0800) /IP数据包 ; else if(eth-eh_type=htons(0x0806) / ARP数据包 ; 4.2 IP数据包分析 IP数据包结构如图3所示。在

9、具体编程中,给出 IP数据包数据结构描述 _IP typedef struct _IP unionBYTE Version; /版本 BYTE HdrLen; / IHL ; BYTE ServiceType; /服务类型 WORDTotalLen; /总长 WORDID; /标识 unionWORD Flags; /标志 WORD FragOff; /分段偏移 ; BYTE TimeToLive; /生命期 BYTE Protocol; /协议 WORDHdrChksum; /头校验和 DWORDSrcAddr; /源地址 DWORDDstAddr; /目的地址 BYTE Options;

10、/选项 IP; typedefIP * LPIP;根据以上数据描述 ,可以从包中解析出源 IP地址、目的IP地址等其他信息。简要代码如下 : strData1= GetProtocolTxt(ip-Protocol); /获取传输协议类型 strData 2=inet_ntoa (* (in_addr*)&ip- SrcAddr);/源IP地址 strData 4=inet_ntoa (* (in_addr*)&ip- DstAddr);/目的 IP地址 4.3 ARP数据包分析从网络底层看来 ,一个ARP包分为两个部分,前面是物理帧头 ,后面是 ARP帧。结构如图 4。在具体编程实现中 ,可

11、以定义以太网数据帧数据结构描述 _ARP (略),根据数据描述 ,可以从包中解析出源 IP地址 ,目的IP地址等其他信息。简要代码如下 : strData 2=inet_ntoa (*(in_addr*) &arp-arp_spa);/得到源 IP地址 strData 4=inet_ntoa (*(in_addr*) &arp-arp_tpa);/得到目的 IP地址 strData6=hdr-bh_datalen); /得到报文长度 4.4 TCP数据报或 UDP数据报可根据 ARP数据包、IP数据包的分析原理从TCP包或 ARP包中解析出信息。 4.5用 VC+捕获数据包系统实验结果 5,后记用实验结果如图 5所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁