用VC实现基于Winpcap的网络数据包捕获与分析.docx

上传人:b****1 文档编号:27502 上传时间:2022-10-01 格式:DOCX 页数:9 大小:16.09KB
下载 相关 举报
用VC实现基于Winpcap的网络数据包捕获与分析.docx_第1页
第1页 / 共9页
用VC实现基于Winpcap的网络数据包捕获与分析.docx_第2页
第2页 / 共9页
用VC实现基于Winpcap的网络数据包捕获与分析.docx_第3页
第3页 / 共9页
用VC实现基于Winpcap的网络数据包捕获与分析.docx_第4页
第4页 / 共9页
用VC实现基于Winpcap的网络数据包捕获与分析.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

用VC实现基于Winpcap的网络数据包捕获与分析.docx

《用VC实现基于Winpcap的网络数据包捕获与分析.docx》由会员分享,可在线阅读,更多相关《用VC实现基于Winpcap的网络数据包捕获与分析.docx(9页珍藏版)》请在冰豆网上搜索。

用VC实现基于Winpcap的网络数据包捕获与分析.docx

用VC实现基于Winpcap的网络数据包捕获与分析

软件导刊

・2007・3月号作者简介:

阳晓剑(1982-男,湖南安仁人,湖南师范大学硕士研究生,研究方向为网络信息安全、构件技术;王志刚(1962-男,湖南沅江人,湖南师范大

学教授,研究方向为构件技术、智能网络;汤小康(1981-男,湖南衡阳人,湖南师范大学硕士研究生,研究方向为形式化描述、网络安全。

1数据包的捕获原理

在正常的情况下,一个网络接口应该

只响应以下两种数据帧:

(1与自己硬件地址相匹配的数据帧。

(2发向所有机器的广播数据帧。

其实在一个实际的系统中,数据的收发由网卡完成,网卡接收到传输来的数据帧,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断是否接收。

而对于合法的网卡来说应该只接收以下数据帧有以下4种模式:

①广播方式。

②组播方式。

③单播方式。

④混杂模式。

数据包捕获作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯。

因此,网络数据包捕获的基本原理是让网卡接收一切它所能接收的数据。

2基于WinPcap库的网络数据包捕

获方法

WinPcap是应用于Win32平台的数

据包捕获与网络分析的一种体系结构,为

Win32应用程序提供访问网络底层的能

力,其主要思想来源于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*&ip->

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->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网络的这些缺陷和更有效地进行网络训练,本文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1