用VC实现基于Winpcap的网络数据包捕获与分析Word格式文档下载.docx
《用VC实现基于Winpcap的网络数据包捕获与分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用VC实现基于Winpcap的网络数据包捕获与分析Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
力,其主要思想来源于Unix系统中BSD包捕获构架。
WinPcap基本体系结构如图
1所示,由3个模块组成:
(1NPF包过滤器,数据包监听设备驱动程序,是架构的核心,它工作在内核级,主要功能是过滤数据包。
它直接从数据链路层取得网络数据包,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。
(2Packet.dll是低级的动态连接库,运行在用户级,把应用程序和数据包监听设备驱动程序隔离开来,使得程序可以不加修改地在不同的Windows系统上运行。
通过Packet.dll提供的能用来直接访问BPF驱动程序的包驱动API,利用“raw”模式发送和接收包。
不同Windows系统上的
Packet.dll并不相同,但由于它提供了一套
相同的调用接口,这样使得高级系统无关库不依赖于特定的Windows平台。
(3Wpcap.dll是高级系统无关库,也工作在用户级,它和应用程序编译在一起,并使用低级动态连接库Pack2et.dll提供的服务,向应用程序提供完善的监听接口。
WinPcap通过这3个模块提供了以
下的各项功能:
①捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
②在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
③在网络上发送原始的数据报;
④收集网络通信过程中的统计信息
3
基于WinPcap函数库的VC++设计
3.1
设备数据定义
LADAPTERlpadapter//描述一个网
络适配器;
LPPACKETlppacketr//描述一组网络
数据报的结构。
3.2捕获过程
WinPcap可以捕获到以太帧,按照以
下步骤可以使用WinPcap捕获数据帧:
(1查找设备,BOOLEANPacketGetA-
用VC++
实现基于Winpcap的网络
数据包捕获与分析
阳晓剑,王志刚,汤小康
(湖南师范大学数学与计算机学院,湖南长沙410081
摘
要:
介绍了TCP/IP协议下网络数据的传输过程,并且分析了数据包的捕获原理,同时概述了WinPcap的
结构组成。
最后,使用VC++编程实现了基于WinPcap的网络数据包捕获和简单分析,并给出了实验结果。
关键词:
VC++;
数据包捕获;
WinPcap中图分类号:
TP312
文献标识码:
A
文章编号:
1672-7800(200703-0104-02
图1
WinPcap基本体系结构
算法与语言
104
dapterNames((char*AdapterName,&
Ada-
pterLength函数值为TRUE则可以得到网络适配器列表及描述,否则返回为FALSE,意为查找失败。
(2打开适配器,如果调用成功返回一个类型为lpadapter指针的包捕获描述字lpadapter=PacketOpenAdapter(Adapter-List。
(3设置网络接口接收到数据报的过滤规则为混杂模式BOOLEANPacketSetHwFilter(lpadapter,NDIS_PACK-ET_TYPE_PROMISCUOUS
(4开始捕获数据包。
pthis->
lppa-cketr=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(LPADAPTERlpadapter
4数据包分析
利用WinPcap库捕获的数据帧其实是经过传输层、网络层和数据链路层的封装而生成的太网数据帧,因此可以对数据帧作进一步解析。
4.1以太网数据帧分析
以太网数据帧由报头和数据区组成,在以太网帧的报头中包含目地址端及源地址,各6个字节,帧的报文部分包含的是数据种类,2个字节。
最后放置的是错去校验和修正码,通常抓到的数据包已经去掉了同步码和桢分界符。
报头部分的定义如图2所示。
图2以太网帧格式
在具体编程实现中,可以定义以太
网数据帧数据结构描述_ETHDR:
typedefstruct_ETHDR
{
unsignedchareh_dst[6];
unsignedchareh_src[6];
unsignedshorteh_type;
}ETHDR;
typedefETHDR*LPETHDR;
根据类型字段eh_type可以判断是
那种数据包,一般常用的有:
0x0800表
示IP数据包,0x0806表示ARP数据包,
简要编程代码如下:
LPETHDReth;
if(eth->
eh_type==htons(0x0800//IP
数据包;
elseif(eth->
eh_type==htons(0x0806
//ARP数据包;
4.2IP数据包分析
IP数据包结构如图3所示。
在具体编程中,给出IP数据包数据
结构描述_IP
typedefstruct_IP{
union{BYTEVersion;
//版本
BYTEHdrLen;
//IHL
};
BYTEServiceType;
//服务类型
WORDTotalLen;
//总长
WORDID;
//标识
union{WORDFlags;
//标志
WORDFragOff;
//分段偏移
BYTETimeToLive;
//生命期
BYTEProtocol;
//协议
WORDHdrChksum;
//头校验和
DWORDSrcAddr;
//源地址
DWORDDstAddr;
//目的地址
BYTEOptions;
//选项
}IP;
typedefIP*LPIP;
根据以上数据描述,可以从包中解
析出源IP地址、目的IP地址等其他信
息。
简要代码如下:
strData[1]=GetProtocolTxt(ip->
Protocol;
//获取传输协议类型
strData[2]=inet_ntoa(*(in_addr*&
ip->
SrcAddr;
//源IP地址
strData[4]=inet_ntoa(*(in_addr*&
DstAddr;
//目的IP地址
4.3ARP数据包分析
从网络底层看来,一个ARP包分为
两个部分,前面是物理帧头,后面是
ARP帧。
结构如图4。
图4ARP数据包结构
网数据帧数据结构描述_ARP(略,根
据数据描述,可以从包中解析出源IP地
址,目的IP地址等其他信息。
strData[2]=inet_ntoa(*(in_addr*
&
arp->
arp_spa;
//得到源IP地址
strData[4]=inet_ntoa(*(in_addr*
arp_tpa;
//得到目的IP地址
strData[6]=hdr->
bh_datalen;
//得
到报文长度
4.4TCP数据报或UDP数据报
可根据ARP数据包、IP数据包的分
析原理从TCP包或ARP包中解析出信
4.5用VC++捕获数据包系统实验结果
5后记
用实验结果如图5所示。
图3IP数据包格式及首部中的各字段
16位标识3位标识13位片偏移
8位生存时间
32位源IP地址
32位目的IP地址
选项(如果有
数据
8位协议16位首部校验和
4位版
本
首部长
度
8位服务
类型(TOS
16位总长度(字节数
01516
31
105
软件导刊・2007・3月号
・2007・3月号参考文献:
[1]庄春兴,彭奇志.网络窃听及其防范[J].网络
安全技术与应用.2001,(7.
[2]庄春兴,彭奇志.基于Winpcap的网络嗅探
程序设计[J].计算机与现代化,2002,(5.
[3]伍丽华,张莉,曾致远.基于WinPcap的网
络安全监控系统的设计与实现[J].微机发展,2004,(2.
[4]韩新宇,章慧君.Widows下实现网络数据
包的捕获[J].仪器仪表用户,2005,(6.[5]W.RichardStevens.TCP/IP详解[M].北京:
机械工业出版社,2002.
[6]周正军.网络入侵检测系统的设计与实现
[M].北京:
电子工业出版社,2002.[7]唐正春.精通VisualC++6.0[M].北京:
电子
工业出版社,2002.
(责任编辑:
曙光
图5
实验结果
作者简介:
杨丽芬(1983-,女,中国地质大学计算机学院硕士生,研究方向为演化计算、数据挖掘。
BP神经网络优化算法研究
杨丽芬,蔡之华
(中国地质大学计算机学院,湖北武汉430074
为解决BP神经网络收敛速度慢和易陷入局部极小值的缺点,利用遗传算法(GA和基因表达式编程
(GEP的各自特点,基于BP算法提出了两种改进算法:
其一是GA-BP算法,即利用GA优化BP神经网络的权值和阈值;
其二是GEP-BP算法,即利用GEP对BP网络进行调整,包括网络结构、权值和阈值。
用样本数据进行了测试并与基本BP算法进行了比较,结果表明两种改进算法具有很强的可行性和高效性。
BP算法;
基因表达式编程;
遗传算法
中图分类号:
TP312文献标识码:
A文章编号:
1672-7800(200703-0106-03
0前言
BP网络是一种典型的前向型神经网
络,具有自学习性、自适应性、良好的非线性逼近能力和泛化能力,以及使用的易适性等优点,因此它被深入应用到经济、化工、军事等众多领域。
但是它的收敛速度慢,有易陷入局部极小、出现过拟合等缺陷。
为了克服BP网络的这些缺陷和更有效地进行网络训练,本文