程序设计35665.doc

上传人:s9****2 文档编号:544970417 上传时间:2023-12-02 格式:DOC 页数:4 大小:56.51KB
返回 下载 相关 举报
程序设计35665.doc_第1页
第1页 / 共4页
程序设计35665.doc_第2页
第2页 / 共4页
程序设计35665.doc_第3页
第3页 / 共4页
程序设计35665.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《程序设计35665.doc》由会员分享,可在线阅读,更多相关《程序设计35665.doc(4页珍藏版)》请在金锄头文库上搜索。

1、1 系统模块划分 网络数据包分析工具有四个模块组成:一是 数据包的捕获,实现从网卡获取数据包。二是 数据包的解析,这两个模块是整个分析工具的基础部分,在整个系统中有着重要的作用,三是 捕获信息的分析,此模块主要是对捕获的信息进行统计,并与设定的特征值进行比较,得出简单的分析结论,四是 显示捕获数据包的信息,目的是为使用者提供一个方便进行手工分析的方式。2 数据包捕获模块设计 此模块是先从网卡获取各种数据包信息并复制到缓存,等待解析模块的调用。这个模块的关键部分是快速的捕获数据包,减少丢包的比率。数据包捕获是以以太网为基础的。以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络

2、上传输。IEEE802.3标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。1以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据 的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的

3、话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。1 数据包的捕获原理在正常的情况下,一个网络接口应该只响应以下两种数据帧:(1)与自己硬件地址相匹配的数据帧。(2)发向所有机器的广播数据帧。其实在一个实际的系统中,数据的收发由网卡完成,网卡接收到传输来的数据帧,网卡内的单片程序接收数据帧的目的 MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断是否接收。而对于合法的网卡来说应该只接收以下数据帧有以下 4种模式:广播方式。组播方式。单播方式。混杂模式。数据包捕获作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯。因此,网络数据包捕获的基本原理是让网卡

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

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

6、在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息。 3 基于WinPcap函数库的VC设计3.1设备数据定义LADAPTER lpadapter描述一个网 /络适配器;LPPACKET lppacketr描述一组网络 /数据报的结构。3.2捕获过程WinPcap可以捕获到以太帧,按照以下步骤可以使用 WinPcap捕获数据帧:(1)查找设备,BOOLEAN PacketdapterNames(char*)AdapterName,&AdpterLength)函数值为 TRUE则可以得网络适配器列表及描述,否则返回FALSE

7、,意为查找失败。(2)打开适配器,如果调用成功返一个类型为 lpadapter指针的包捕获描字: lpadapter=PacketOpenAdapter(AdapteList)。(3)设置网络接口接收到数据报过 滤 规 则 为 混 杂 模 式 BOOLEAPacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS)(4)开始捕获数据包。pthis-lppcketr=PacketAllocate-Packet()/如果运成功,返回一个 _PACKET结构的指针否则返回 NULL。成功返回的结果将会送到 PacketReceivePacket(

8、)函数,接收自驱动的网络数据报。PacketSetBuff(lpadapter,500*1024)/设置捕获数据报的内核级缓冲大小。PacketInitPacket(pthis-lppacke(char*)recvbuf,sizeof(recvbuf)/初始化一个 LPACKET结构PacketReceivePacket(pthis-lpadapter,pthis-lppacketr,TRUE)/从 NPF驱动程序读取网络数据报及统计信息(5) /关闭参数中提供的网络适配器释放相关的 ADAPTER结构。Packet-CloseAdapter(LPADAPTElpadapter)4 数据包分析

9、利用 WinPcap库捕获的数据帧其实是经过传输层、网络层和数据链路层的封装而生成的太网数据帧,因此可以对数据帧作进一步解析。4.1 以太网数据帧分析以太网数据帧由报头和数据区组成,在以太网帧的报头中包含目地址端及源地址,各 6个字节,帧的报文部分包含的是数据种类,2个字节。最后放置的是错去校验和修正码,通常抓到的数据包已经去掉了同步码和桢分界符。在具体编程实现中,可以定义以太网数据帧数据结构描述 _ETHDR:typedefstruct_ETHDRunsignedchar eh_dst6;unsignedchar eh_src6;unsignedshorteh_type;ETHDR;type

10、defETHDR*LPETHDR;根据类型字段 eh_type可以判断是那种数据包,一般常用的有:0x0800表示 IP数据包,0x0806表示 ARP数据包,简要编程代码如下:LPETHDReth;if(eth-eh_type=htons(0x0800)/IP数据包;elseif(eth-eh_type=htons(0x0806)/ARP数据包;.2 IP数据包分析。在具体编程中,给出 IP数据构描述 _IPpedefstruct_IPunionBYTEVersion;/版本BYTEHdrLen;/IH;BYTEServiceType;/服务类WORDTotalLen;/总长WORDID;/

11、标识unionWORDFlags;/标志WORDFragOff;/分段偏移;BYTETimeToLive;/生命期BYTEProtocol;/协议WORDHdrChksum;/头校验和DWORDSrcAddr;/源地址DWORDDstAddr;/目的地址BYTEOptions;/选项IP;pedefIP*LPIP;根据以上数据描述,可以从包中解出源 IP地址、目的 IP地址等其他信。简要代码如下:trData1=GetProtocolTxt(ip-Protocol);获取传输协议类型trData2=inet_ntoa(*(in_addr*)&ip-rcAddr);/源 IP地址trData4=

12、inet_ntoa(*(in_addr*)&ip-stAddr);/目的 IP地址4.3 ARP数据包分析从网络底层看来,一个 ARP包分为两个部分,前面是物理帧头,后面是ARP帧。 ARP数据包结构在具体编程实现中,可以定义以太网数据帧数据结构描述 _ARP(略),根据数据描述,可以从包中解析出源 IP地址,目的 IP地址等其他信息。简要代码如下:strData2=inet_ntoa(*(in_addr*)&arp-arp_spa);/得到源 IP地址strData4=inet_ntoa(*(in_addr*)&arp-arp_tpa);/得到目的 IP地址strData6=hdr-bh_datalen); /得到报文长度4.4 TCP数据报或 UDP数据报可根据 ARP数据包、IP数据包的分析原理从 TCP包或 ARP包中解析出信息。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号