WinPcap开发包的使用

WinPcap开发包的使用
WinPcap开发包的使用

使用Winpcap示例程序的时候解疑

使用Winpcap示例程序的时候,会出现很多错误(转) WINPCAP编程环境设置 2008-05-19 12:41 一、WINPCAP编程环境设置 在正式WinPcap编程之前,要配置运行环境。 1、运行环境设置 Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行:wpcap.dll Packet.dll WanPacket.dll pthreadVC.dll 这四个动态链接库在WinPcap驱动程序里。 如果没有这个驱动程序,需要到WinPcap官方网站上下载,下载地址为:https://www.360docs.net/doc/be5845216.html, 如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。 也可以不安装WinPcap驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下。(似乎有些问题) 2、配置编程环境。 1> 从https://www.360docs.net/doc/be5845216.html,上下载WINPCAP SDK -WpdPack,WinPcap SDk里面包含库文件,头文件,文档文件和一些例子。解压到一个指定的目录。解压缩后把Include目录添加到IDE的包含文件中(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录); lib目录添加为新的库文件目录(VC6.0 Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录)如下图所示。

2> 如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#include “pcap.h” 也许会出现下面的错误: fatal error C1083: 无法打开包括文件:“pcap.h”: No such file or directory 这个错误表明找不到pcap.h文件,这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件,所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK,并按步骤1添加到项目中。 3> 在程序中添加wpcap.lib。如果出现下面错误 error LNK2019: 无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用,如果发生上面的错误就表明缺少库文件,需要添加wpcap.lib到工程中(VC6.0 Project->Settings->Link->Object/library modules; VS 2003/2005 项目->添加现有项->所有文件)如下图所示:

WinPcap编程

WinPcap编程 WinPcap是一个开源的、运行于Win32平台下的体系结构,它的主要功能是进行数据包捕获和网络分析。它允许应用程序通过协议栈捕获和传输网络数据包,也包括内核级别的数据包过滤、网络静态引擎和支持远程数据包捕获等有用的功能。 WinPcap由两部分组成: 1. 驱动程序: 扩展操作系统功能提供低层次的网络访问 2. 动态链接库:运行在Win32平台上的应用程序可以非常方便地访问网络低层次的数据。Ethereal是大名鼎鼎的捕获数据包专业软件,它的运行是在WinPcap的支持之下的,如果没有安装WinPcap,Ethereal也无法正常捕获数据包。 在正式WinPcap编程之前,要配置运行环境。 Win32 平台下WinPcap应用程序需要以下四个动态链接库才能正常运行: 这四个动态链接库在WinPcap驱动程序里。 如果应用程序出现一下提示,那就是没有安装驱动程序的原因了。 被过滤广告 也可以不安装WinPcap驱动程序。但是需要把上面提到的四个动态链接库文件拷贝到系统分区/WINDOWS/system32目录下 或者 接下来配置编程环境。 如果一个源文件使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加包含文件(或者在引用的文件中),即#include “” 也许会出现下面的错误: fatal error C1083: 无法打开包括文件:“”: No such file or directory 这个错误表明找不到文件 这个头文件在驱动程序安装完成后也是没有的,它是开发包里面的一个头文件 所以,如果要运行程序还需要到官方网站上去下载WinPcap SDK―WpdPack WinPcap SDk里面包含库文件,头文件,文档文件和一些例子。 解压缩后把Include目录添加到IDE的包含文件中( Tools->Option->Directory; VS 2003/2005 工具->选项->项目和解决方案/项目->VC++目录) error LNK2019: 无法解析的外部符号_pcap_findalldevs_ex,该符号在函数XXX 中被引用 如果发生上面的错误就表明缺少库文件,需要添加到工程中Project->Settings->Link->Object/library modules; VS 2003/2005 项目->添加现有项->所有文件) error C2065: “PCAP_SRC_IF_STRING”: 未声明的标识符 error C3861: “pcap_findalldevs_ex”: 找不到标识符 error C2065: “PCAP_OPENFLAG_PROMISCUOUS”: 未声明的标识符 error C3861: “pcap_open”: 找不到标识符 新的版本里WinPcap支持远程数据包获取,发生上面的错误很有可能是新的版本导致不兼容的问题,所以还应当添加一个头文件,即

WinpCap 编写抓包程序

利用WinpCap 编写抓包程序 网友:yeahilly 发布于:2008.05.20 11:12(共有条评论) 查看评论| 我要评论 WinpCap是一个公开的免费的抓包驱动加开发包,利用它,可以大大缩短我们的开发周期。 首先,先枚举系统中的所有网卡: /* 获取设备列表*/ if (pcap_findalldevs(&alldevs, errbuf) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf); exit(1); } /* 数据列表*/ for(d=alldevs; d; d=d->next) { printf("%d. %s", ++i, d->name); if (d->description) printf(" (%s)\n", d->description); else printf(" (No description available)\n"); } 然后选择网卡,然后设备。 if ( (adhandle= pcap_open_live(d->name, //设备名 65536, // 捕捉完整的数据包 1 , // 混在模式 1, // 读入超时

errbuf // 错误缓冲 ) ) == NULL) { printf("Unable to open the adapter"); pcap_freealldevs(alldevs); return; } 打开设备之后,我们就可以利用adhandle句柄来正式抓包了,先新建一个回调函数,形如 void packet_handler(u_char* packets,const struct pcap_pkthdr *header,const u_char *data) { } 然 后调用pcap_loop(adhandle, 0, packet_handler, NULL);pcap_loop的最后一个参数和packet_handler的packets参数是对应的,用于在函数间传递数据。WinpCap每收 到一个包就自动调用packet_handler函数,将包的内容作为data参数,我们对data作强制类型转化就可以得到数据包各部分的内容。 事实上,WinpCap开发包除了可以用回调函数抓包外,还可以用非回调的方法。在得到adhandle后不调用pcap_loop,而用下面的方法:while(1) { res = pcap_next_ex(adhandle,&header,&data); if(res==0) { Sleep(100); continue; } } 用pcap_next_ex读取数据包内容,至于if(res==0)这一段是为了防止没数据包到达时重复循环。

基于WinPcap的网络数据包捕获与分析

基于WinPcap的网络数据包捕获与分析 一、WinPcap介绍 1.WinPcap简介 WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。大多数Windows网络应用程序都是通过Winsock API(Windows套接口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为操作系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。 然而,有时候“简便方法”并不能满足实际需要。有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。 基于Winsock API编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此,网络程序可以实现一些更低级、更灵活的功能。 2.WinPcap的组成与结构 如图 1.1,WinPcap由一个数据包监听设备驱动程序(NPF)、一个底层的动态连接库(packet.dll)和一个高层的不依赖于操作系统的静态库(wpcap.dll)共三个部分构成。这里,NPF在操作系统的内核级,packet.dll、wpcap.dll在用户级。 1)数据包监听设备驱动程序Array技术实现上,为了实现抓包,系统必须绕过操作系统 的协议栈来访问在网络上传输的原始数据包(raw packet)。这就要求WinPcap的一部分运行在操作系统核心 内部,直接与网络接口驱动交互。由于这个部分是系统依 赖(system dependent)的,在Winpcap的解决方案中它被 视为是一个设备驱动,称作NPF(Netgroup Packet Filter)。 图1.1 WinPcap的组成和结构

基于WinPcap的网络分析研究与实现

基于WinPcap的网络分析研究与实现 摘要近几年,我国经济发展迅速,各个领域的事业都趋于完善。在网络信息技术的不断发展下,通过对WinPcap的应用,真正实现了Windows下网络数据包的捕获技术,下文将详细阐述IP、Tcp等等协议的解析过程。网络数据的储存通过msspl来实现,进而建立系统硬件运行环境。对局域网,通过测试实现了全局监控。 关键词信息技术;网络分析;分析与研究;运行环境;数据包;源代码 1 应用环境 网络监控系统承载介质中,硬件与软件监控系统共同构成网络监控。网络监控系统标准功能是对局域网中的违规行为进行记录与监控。在国外一些发达国家,有两款软件Ethereal与Sniffer,后者主要任务就是给网管及时提供网络监视情况与数据包捕以及故障分析等内容,这样能方便网管对现场进行迅速的故障处理以及诊断能力。与此同时,还能使用户得到更好的网络管理以及故障分析功能。前者作为一种可以捕获数据包,并且将这个数据包的信息显示出来,这样的一款网络数据包分析软件,在通用许可证的保障范围内,其数据包分析软件用户能免费得到。除此之外,还可以得到其源代码,并且也能够根据自身的需要来将其源代码进行修改。现阶段,Wireshark是全球应用最多的一种网络数据包分析软件[1]。 2 Win Pcap研究 抓包的过程,是通过用户级的程序接口来完成的。在这些接口中,用户程序能够利用内核驱动提供的高级特性。作为WinPcap所提供的2个库,PACKET 提供一个底层api,应用这个库能够访问驱动的函数。这些函数能够实现来抓包时,网络硬件与操作系统独立。NDIS作为一种管理网络适配器的驱动程序和协议驱动之间的规范。其还是一个可以让协议驱动发生与接收数据包并且不用看特定的适配器或者特定的Win32操作系统的封装。捕获数据包是通过NPF来实现的。在进行数据包的捕获时,数据包的监控任务是一个网络接口,进而应用程序才能够完整抹除这部分数据包。Bpf是一种虚拟的处理器,其能够编写一个用户过滤程序,过滤系统的基础就是这里。 2.1 NDIS驱动器接口标准 在传输层还有网络层以及数据链路层之间,是NDIS。其规范了网卡驱动与应用层协议驱动的通信接口。这与物理层没有关联。这样一来,就使上层协议驱动程序与底层任意类型的网卡进行通信。在进行网络驱动开发时,就不用研究操作系统的内核以及其他的驱动程序接口的相关事宜。将NDIS函数调用起来就可以,如此一来使操作系统的烦琐通信分离在网络驱动程序中,变得更加容易编写起来。除此之外,通过对NDIS的应用,使其封装性能够只应用在一层驱动的设

深度剖析WinPcap之(二)

深度剖析WinPcap之(二)——网络分析与嗅探的基础知识 工欲善其事,必先利其器。为了有利于深入了解WinPcap的内部机制,我们需要对网络分析与嗅探、网络模型与硬件基础作必要了解。 1.1 什么是网络分析与嗅探 网络分析(Network analysis) (也称为网络流量分析、协议分析、嗅探、数据包分析、窃听,等等)就是通过捕获网络流量并深入检查,来决定网络中发生了什么情况的过程。一个网络分析器对通用协议的数据包进行解码,并以可读的格式显示网络流量的内容。嗅探器(sniffer)是一种监视网络上所传输数据的程序。未经授权的嗅探器对网络安全构成威胁,因为它们很难被发现并且可在任何地方被插入,这使得它们成为黑客最喜欢使用的一种工具。 网络分析器之间的差别,在于诸如支持能解码的协议数量、用户接口、图形化与统计能力等主要特性的不同。其它的差别还包括了推理能力(比如,专家分析特性)与数据包解码的质量。尽管几个不同的网络分析器针对同一个协议进行解码,但在实际环境中可能其中的一些会比另外一些工作得更好。 图2-1为Wireshark网络分析器的显示窗口。一个典型的网络分析器用三个窗格显示所捕获的网络流量:

图2-1 Wireshark网络分析器的显示窗口 概要该窗格对所捕获的内容显示一行概要。包含日期、时间、源地址、目标地址、与最高层协议的名字与信息字段。 详情该窗格提供所捕获数据包所包含的每层细节信息(采用树形结构)。 数据该窗格用十六进制与文本格式显示原始的被捕获数据。 一个网络分析器是由硬件与软件共同组成。可以是一个带有特定软件的单独硬件设备,或者是安装在台式电脑或膝上电脑之上的一个软件。尽管每种产品之间具有差别,但都是由下列五个基本部分组成。 硬件多数网络分析器是基于软件的,并工作于标准的操作系统与网卡之上。然而,一些硬件网络分析器提供额外的功能,诸如分析硬件故障(比如循环冗余纠错(CRC)错误、电压问题、网线问题、抖动、逾限(jabber)、协商错误等等)。一些网络分析器仅支持以太网或无线网适配器,而其它的可支持多重适配器,并允许用户定制它们的配置。依据实际情况,可能也需要一个集线器或一个网线探针(cable tap)连接已有的网线。

利用Winpcap捕获发送数据包

利用winpcap捕获数据包、发送数据包 在上一章里面,我们学会了如何获取适配器的相关配置信息,在这一章里面,我们将继续更有意义的内容,就是捕获和发送数据包。 3.1 winpcap捕获数据包流程与相关函数 计算机是通过网卡和网络中其他的主机进行通信的,网卡相当于数据包进出的大门,我们平时讲的数据包的捕获相当于大门的门卫在检查进出的行人一样。在网络基础我们学习过,数据包的发送是一个封装的过程,而数据包的接收则是解封装的过程,但是封装和解封装都是在OS内核来完成的,一般的应用程序没办法获取数据包原始的内容,而Winpcap却能提供这样的功能,在数据链路层捕获数据包,提供最原始的信息。其中Winpcap捕获数据的原理在第一章已经介绍过了,大家可以回顾下。 另外,数据捕获只能捕获通过本主机网卡的数据,没法捕获其他主机上网卡的数据。 下面先看看Winpcap捕获数据时的工作流程。 数据捕获的流程 1. 发现网络设备的函数(find_dev_ex)以前已经介绍过了。 2.打开网卡的函数 打开设备的函数是pcap_open()。下面是参数snaplen, flags 和to_ms 的解释说明 pcap_t* pcap_open ( const char * source, // 指定的网卡的名称 int snaplen, // 帧的长度 int flags, // 网卡捕获的模式 int read_timeout, // 超时 struct pcap_rmtauth * auth, // 是否要求认证 char * errbuf // 错误信息存储 ) snaplen 制定要捕获数据包中的哪些部分。在一些操作系统中(比如xBSD 和Win32),驱动可以被配置成只捕获数据包的初始化部分:这样可以减少应用程序间复制数据的量,从而提高捕获效率。本例中,我们将值定为65535,它比我们能遇到的最大的MTU还要大。因此,我们确信我们总能收到完整的数据包。 flags: 最最重要的flag是用来指示适配器是否要被设置成混杂模式。一般情况下,适配器只接收发给它自己的数据包,而那些在其他机器之间通讯的数据包,将会被丢弃。相反,如果适配器是混杂模式,那么不管这个数据包是不是发给我的,我都会去捕获。也就是说,

winpcap捕捉网络数据包

利用WIPCAP捕捉IP数据包分析局域网流量1、背景知识 1.1、IP协议 IP(Internet Protocol,互联网协议)协议是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议把传输层送来的消息封装成IP数据包,并把IP数据包传递给数据链路层。IP协议制定了统一的IP数据报格式,向传输层屏蔽了通信子网的差异,从而为消息的收发双方提供了一条透明的传输通道。 IP数据包结构如图1-1: 图1-1 IP包结构 1.版本 IP数据报的第一个域是版本域,其长度为4bit,表示所使用的IP协议的版本。通信双方使用的IP协议的版本必须一致。版本域值为4则表示IPv4;版本域值为6则表示IPv6。当前的版本为IPv4。 2.报头长度 报头长度域长度为4bit,它以4个字节为计算单位表示报头的长度,该长度不包含数据部分。报头中除了IP选项域与填充域之外,其他各项是定长的。因为很少使用IP选项功能,所以,该域的值一般为5,意味着报头的长度是5个4字节,也就是20个字节。 协议规定:IP数据报的报头长度必须是4字节的整数倍。当IP报头长度不是4字节的整数倍时,必须利用最后一个填充域“添0”来加以填充。 3.服务类型

如图1-2所示,该字段占8bit,包括3bit的优先级字段,4bit的服务类型(type of service,TOS)字段和1bit的保留位,保留位必须置0。该字段用于指示路由器如何处理该数据报。 图1-2 服务类型字段结构 3bit的优先级表示数据报的重要性,共分8级,数值越大等级越高,优先级越高则表示数据报越重要(该字段值现在已被忽略)。 4bit的TOS字段分别表示:最小时延(D)、最大吞吐量(T)、最高可靠性(R)和最小费用(C)。每个位都有0或1两个值,但4bit中最多只能有一个位的值为1。如果所有4 bit均为0,那么就意味着是一般服务。 4.总长度 总长度域占16 bit,它以字节为单位具体说明包括报头在内的整个IP数据包的总长度。利用报头长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。因为该字段有16 bit,所以IP数据报最长可达65535字节。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都要求对它进行分片,总长度不得超过最大传输单元MTU。当数据报被分片时,该字段的值也随着变化。 5.标识 标识字段占16 bit,用来唯一地标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1。当IP数据报必须进行分片时,这个标识域的值将被复制到所有数据报分片的标识域中。相同的标识域值使各数据报分片最后能正确地重装为原来的数据报。 6.标志 标志字段占3bit,第一bit保留并总设为0;第二bit 是禁止分片标志DF,标识报文能否被分片,如果该位为0,说明数据报可以被分片,如果等于1,表示不允许被分片;第三bit是分片标志MF,只有在DF为0时该字段才有意义,用以标识此报文是否是这系列分片的最后一个,0表示接收到的是最后一个分片。 7.片偏移 片偏移量表示该分片在整个数据报中的原来数据报中的相对位置。片偏移以8B为偏移单位,因此选择的分片长度应该是8B的整数倍。 8.生存时间(TTL) 生存时间TTL(time-to-live)字段占8bit,它设置了数据报可以经过的最多路由器数。TTL的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。设置生存时间是为了避免无法发送的数据报永远在互联网上流动。 9.协议类型 该字段占8bit,指出此IP数据报的高层协议类型,以便目的主机的IP层将数据部分上交给哪个高层协议处理。许多高层协议的数据能够被封装到IP数据报中,如TCP、UDP和ICMP等。常用的协议号如表1-1所示。该字段是本程序要求输出的信息之一。 表1-1 常用的高层协议与其协议域值的对应关系

WinPcap网络分析的体系结构

WinPcap网络分析的体系结构 方松茂李祥 (贵州大学计算机软件与理论研究所贵阳550025) 摘要:WinPcap是一个包含了一套与libpcap兼容的捕获网络数据包的函数库,在各 种不同的网络分析工具、故障工具、安全工具和监听工具开发中被广泛使用;本文 首先介绍WinPcap,分析其体现结构,并通过捕获、发送网络数据包实例说明该函 数库的使用方法。 关键词: WinPcap , LibPcap, 结构体系,网络分析 WinPcap是一个包含了一套与libpcap兼容的捕获数据包的函数库。这套函数库是由加州大学和Lawrence Berkeley实验室及其投稿者联合开发的。他们在1999年3月31日推出了1.0版,提供了用户级BPF过滤;1999年8月21日推出了2.0版,将BPF过滤增加到内核中并增加了内核缓存;2001年3月15日推出了2.1版,该版对libpcap0.5.2进行了升级,并可支持更多的网络类型;2001年1月30日推出了2.2版;2002年3月28日推出了2.3版;2003年1月10日推出了最新的3.0版,增加了NPF设备驱动的一些新的特性及优化方案、在wpcap.dll 中增加了一些函数等等功能。 1 带内核驱动模式的WinPcap及其功能 进行网络分析的应用程序依赖于一套适当的指令来捕获网络中的数据包,监听网络等等。几乎所有的Unix系统版本都含有至少是支持捕获分组的内核模块。在Windows中有一些API有自己的内核模块,然而它们都有一些局限。例如,Netmon API不是免费的,其扩展性很有限,而且它不允许发数据包。IP过滤驱动程序只在Windows2000上有效,它除了IP协议外不支持任何其他协议。它允许操作或丢弃数据包但不允许监听和产生数据包。PCAUSA[11]是一套商业化的产品,它提供一个捕获包的接口及兼容BPF的过滤器。然而,用户的接口都很底层,没有提供类似于产生过滤器的抽象函数。 WinPcap是一个在Windows操作系统下的免费的、公开的用于直接访问网络的系统。大多数网络应用程序都是通过被广泛使用的系统原函数(如套接字)来访问网络。这种方法允许在网络上进行简单的数据传送,因为OS处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。WinPcap包含了一个最优化的内核模式驱动——称作Netgroup Packet Filter(NPF),和一套与libpcap兼容的用户级函数库。WinPcap使Unix平台下的应用程序能方便的与Win32平台下程序联系,并且它能使一套很大的函数库只需通过简单的重新编译就立刻在Win32平台下使用。而且,由于网络监听的重要性,WinPcap还为此提供了特殊的系统调用函数。 WinPcap有以下功能: (1)捕获原始数据包,捕获包括发送到正在运行的主机上的数据包和在其它主机在共享媒介上交换的数据包。 (2)过滤器在将数据包发送给应用程序之前按用户规定对捕获的数据包进行过滤。 (3)向网络发送原始数据包。 (4)对网络通信进行统计。 WinPcap能够被各种不同的网络分析工具、发现并修理故障工具、安全工具和监听工具使用。依赖于WinPcap的典型工具有:网络和协议分析软件;网络监听软件;网络通信量记录软件;网络数据生成软件;用户机网桥和路由器;网络入侵探测系统;网络扫描软件;网络安全工具。

基于winpcap的嗅探器设计及实现

计算机与信息学院 《计算机网络系统实践》报告 2013 年 9 月 25 设计题目:嗅探器的设计与实现 学生姓名:*** 学 号:2010**** 专业班级:信息安全****

一、设计要求 1.不限平台,可以使用Libpcap、WinPcap 或 Linux的原始套接字; 2.实现一个功能比较简单的、具有图形界面的Sniffer,主线程响应用户界 面操作,工作线程完成抓包等工作; 3.能够解析出IP层和传输层的协议头,能够过滤TCP、UDP等数据包; 4.能够输出文本方式传送的数据包的内容; 5.能够进行简单的流量统计。 二、开发环境与工具 操作系统:windows7 开发工具:visual studio 开发语言:C++ 附加库:Winpcap 三、设计原理 网络嗅探器是一种常用的监听网络的工具。所谓嗅探器( Sniffer) ,是一种利用计算机网络接口截获网络数据的软件或硬件,可用于网络管理、网络协议分析以及网络安全等众多方面。嗅探器不同于一般的键捕获工具,后者只能捕获当地终端控制台上的按键内容,而嗅探器所“嗅”到的是动态的以信息包形式( 如IP 数据包或者以太网包) 封装的信息流。其中可能携带了重要数据或敏感信息。可以将这些捕获到的信息包存档,以利用相应工具可以作进一步分析。 计算机网络的设计为嗅探器的使用创造了最基本的条件。在目前的网络环境中,所有计算机节点都是共享传输介质,任意节点发出或发往任意节点的数据帧必将经过网内每一个节点的网络接口,此时只需对嗅探节点的网络接口( 网卡) 进行适当的设置便可为实现嗅探的做好准备工作。在计算机网络系统中,网卡是用来接收网络上其他节点发来的数据帧,其内嵌的单片处理程序会检测数据帧来源的MAC 地址,并根据网卡所设置的接收方式来是否接收处理数据,如果认为应该处理,则网卡就会产生中断信号通知中央处理器,接收该数据帧并传输给操作系统处理。否则就简单丢弃,所对应节点的网卡就截断,计算机的中央处理器并不参与。

winpcap驱动简介

【winpcap 驱动简介】 winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能: 1> 捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包; 2> 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉; 3> 在网络上发送原始的数据包;4> 收集网络通信过程中的统计信息。 winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。目前,wi npcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x 系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持AN SI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包, 比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码.它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件.还有一个简单 的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在用HUB网络上著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nma p扫描器也是基于libpcap来捕获目标主机返回的数据包的。 winpcap提供给用户两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。 【Winpcap的内部结构】 Winpcap的各个组成部分 Winpcap是针对Win32平台的抓包和网络分析的一个架构。它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。

基于Winpcap 编程实现抓包实验

上海电力学院 计算机网络安全(1) 课程实验报告 实验名称:winpcap编程实验

基于Winpcap 编程实现抓包实验 一. 本设计要达到的目标 基于winpcap编程实现对网络数据的捕获,并分析数据类型,对于IP,ICMP,ARP,UDP等,能够自动识别其协议类型并分析帧的构成。 二.实现步骤 (1)需要通过资料来了解winpcap抓包的工作原理,熟悉其运行过程 Winpcap的内部结构 Wincap有三部分组成:一个数据包监听设备驱动程序,一个低级的动态连接库和一个高级的静态连接库。底层动态链接库运行在用户层,它将应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的WINDOWS系统上运行。高级的静态链接库和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。抓包是WinPcap的基本功能,也是NPF最重要的操作。在抓包的时候,驱动(例如NIC Driver)使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。 (2)进一步了解winpcap编程所需要的编译环境,下载WpdPack,了解编译环境所需要的库文件.在编译时需要把wpdpack中的include与lib添加进vc的库文件里。 (3)明确整个编程的步骤与具体函数。刚开始要定义,在主函数中获取设备接口信息,获得网络地址与掩码地址,打开网络接口,还要设置过滤规则。使用loop函数来回调循环捕获数据包,以便一层一层解析。 (4)还要定义几个以太网,ARP,IP,UDP,TCP,ICMP协议的格式。需要注意在存储空间中,在存储空间中才能更好的逐层分析,不然很容易出错 (5)定义分析协议的函数,定义方式与回调函数相同.常用的函数有:用于获取本机设备列表的pcap_findalldevs_ex函数 用于打开设备的pcap_open函数,可以指定为混杂模式打开 用于编译数据包过滤器的pcap_compile 函数

开发基于winPcap的嗅探器

网络安全课程设计报告(2015-2016 第一学期) 题目开发基于winPcap的嗅探器 专业 学号姓名 指导教师 日期

评 分分 细 评分项优秀良好中等差遵守机房规章制度 实验原理分析与设计 课题功能实现情况 设计验收与答辩 课程设计报告书写 简 短 评 语 教师签名: 年月日评 分 等 级 备 注

开发基于winPcap的嗅探器 一、实验目的 开发一个winpcap的嗅探器,用它来捕获所有流经网卡的数据包,并进行分析。二、实验环境 操作系统:Windows 2000/XP 编程环境:Visual c++6.0 附加库:Winpcap 三、实验内容和要求 内容:所开发的程序可以输出本机所有网卡的信息和捕获流经网卡的数据包并能够过滤出IP、TCP、UDP、ICM P等数据包 要求:掌握基于WinPcap的网络编程模式。 理解并能应用WinPcap设计并实现网络数据包的捕获与解析。 四、实验原理和步骤 原理:我们所要做的嗅探器是一种常用的网络数据收集软件,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。 在以太网中,信息是以明文的形式在网络上传输 ,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。 首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。这个部分是系统依赖的,在Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup PacketFilter)。 Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势在于提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来,便于开

Winpcap使用介绍

Winpcap使用介绍 1. Winpcap简介 Winpcap(windows packet capture)是在Win32平台上的强大的、有较好扩展性的底层网络分析体系结构,是Unix下的lipbcap移植到windows下的产物,是Win32环境下数据包捕获的开放代码函数库。Winpcap是第一个Win32开放式的捕获包的体系结构,能够支持大多数应用程序的需要。 如图A-1所示,Winpcap包含了一个内核级的数据包过滤器——NPF (Netgroup Packet Filter)、一个底层动态链接库(Packet.dll)和一个高层的独立于系统的库(Wpcap.dll)。这三个模块中,NPF属于内核级,其他两模块属于用户级。 图A-1 Winpcap的结构图 NPF模块过滤数据包,将数据包不做任何改动的传递给用户,它还包含了一些操作系统专用代码(如:时间戳管理)。 Packet.dll模块提供了Win32平台下的捕获包的驱动接口。实际上,不同版本的Windows 都提供了不同的内核模块和应用程序之间的接口函数,Packet.dll有一套独立于系统的API 来处理这些差异。基于Packet.dll编写的程序可以不经过重新编译就在各种Win32平台下实现捕获数据包。Packet.dll还包含了其他一些函数。它可以进行一些底层的操作,Packet.dll 和NPF都依赖于操作系统,并且由于Windows95/98和WindowsNT/2000之间操作系统结构的不同而在不同版本的操作系统上有所不同。 Wpcap.dll库不依赖于操作系统,并且它包含了一些其它高层的函数,比如:过滤器生成器、用户定义的缓冲区和高层特性(数据统计和构造数据包)。 Winpcap提供的功能包括四个方面: 1)捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;

相关主题
相关文档
最新文档