基于WinPcap的网络分析研究与实现
- 格式:doc
- 大小:25.00 KB
- 文档页数:3
1、Winpcap概述1.1 Winpcap简介Winpcap(windows packet capture)是由意大利人Fulvio Risso和LorisDegioanni提出并实现的[1]。
它是一个Windows平台下捕包和网络分析的体系架基于Winpcap的数据包捕获和协议分析系统的设计与实现李延会 岳彩祥 徐金艳 李亚斐 长春工业大学研究生院 130012构。
它具有访问底层的能力,提供了捕获原始数据包,按照一定规则过滤数据包,以及发送原是数据包的功能. WinPcap 为用户级的数据包提供了Windows下的一个平台。
WinPcap是BPF模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。
底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS中函数的调用为Win95、Win98、WinNT和Win2000提供一类似于 UNIX 系统下 Berkeley PacketFilter 的捕获和发送原始数据包的能力。
Packet.dll 是对这个 BPF 驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。
WinPcap的主要结构图如图1。
1.2 winpcap构成WinPcap 主要有三个模块构成[2,3]:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll为win32平台提供了一个公共的接口。
不同版本的Windows系统都有自己的内核模块和用户层模块。
Packet.dll用于解决这些不同。
调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
基于WinPcap的网络分析的研究与实现
徐波;张勤慧
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2012(000)014
【摘要】主要讨论利用WinPcap开发包实现Windows下网络数据包的捕获技术,分析了IP、TCP等协议的解析过程,利用MS-Sql数据库来存储网络数据,建立了系统硬件运行环境.通过测试,实现了对局域网的监控功能.
【总页数】3页(P88-89,105)
【作者】徐波;张勤慧
【作者单位】南京林业大学信息(网络)中心,南京210037;南京林业大学信息(网络)中心,南京210037
【正文语种】中文
【相关文献】
1.基于WinPcap的旁路IP阻断方法研究与实现 [J], 陈小文;胡文飞;和应民
2.基于WinPcap的路由功能的研究与实现 [J], 陈景强;翁正秋
3.基于服务式GIS的昆明市区交通网络分析信息查询系统研究与实现 [J], 李泽城;杨昆;袁磊
4.基于Winpcap的网络流媒体识别算法研究与实现 [J], 宋雪;蔡一兵;金伟信;王蒙
5.基于WinPcap的电子监考系统的研究与实现 [J], 武伟;魏晓;魏仕民
因版权原因,仅展示原文概要,查看原文内容请购买。
上机1:基于WinPcap的网络嗅探器设计1、目的与要求掌握基于WinPcap的网络编程模式。
理解并能应用WinPcap设计并实现网络数据包的捕获与解析。
2、设备与上机环境连网PC机(至少一台)。
计算机硬件要求:Intel Pentium5 处理器、256MB以上内存,Ethernet网卡,网线若干。
计算机软件要求:MS Windows 9x/2000/XP操作系统,TCP/IP协议,WinPcap430,Visual c++6.0/.net系统。
3、上机内容与步骤:在程序设计之前,请参照提供的软件安装WinPcap。
之后,按照如下步骤操作:步骤1:在VC++ 6.0下创建一个DOS命令行程序,工程名:自己的学号-PacketDump步骤2:打开main(函数,在主程序中增加如下头文件和常量定义:#include#define LINE_LEN 16pcap_if_t *alldevs, *d;pcap_t *fp;u_int inum, i=0;char errbuf[PCAP_ERRBUF_SIZE];int res;struct pcap_pkthdr *header;const u_char *pkt_data;printf("pktdump_ex: prints the packets of the network using WinPcap.\n"; printf(" Usage: pktdump_ex [-s source]\n\n"" Examples:\n"" pktdump_ex -s file.acp\n"" pktdump_ex -s \\Device\\NPF_{C8736017-F3C3-4373-94AC-9A34B7DAD998}\n\n"; if(argc < 3{printf("\nNo adapter selected: printing the device list:\n";/* The user didn't provide a packet source: Retrieve the local device list */if(pcap_findalldevs(&alldevs, errbuf == -1{fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf;exit(1;}/* Print the list */for(d=alldevs; d; d=d->next{printf("%d. %s\n ", ++i, d->name;if (d->descriptionprintf(" (%s\n", d->description;elseprintf(" (No description available\n";}if (i==0{printf("\nNo interfaces found! Make sure WinPcap is installed.\n"; return -1;}printf("Enter the interface number (1-%d:",i;scanf("%d", &inum;if (inum < 1 || inum > i{printf("\nInterface number out of range.\n";/* Free the device list */pcap_freealldevs(alldevs;return -1;}/* Jump to the selected adapter */for (d=alldevs, i=0; i< inum-1 ;d=d->next, i++;/* Open the adapter */if ((fp = pcap_open_live(d->name, // name of the device65536, // portion of the packet to capture.// 65536 grants that the whole packet will be captured on all the MACs. 1, // promiscuous mode (nonzero means promiscuous1000, // read timeouterrbuf // error buffer== NULL{fprintf(stderr,"\nError opening adapter\n";return -1;}}else{/* Do not check for the switch type ('-s' */if ((fp = pcap_open_live(argv[2], // name of the device65536, // portion of the packet to capture.// 65536 grants that the whole packet will be captured on all the MACs. 1, // promiscuous mode (nonzero means promiscuous1000, // read timeouterrbuf // error buffer== NULL{fprintf(stderr,"\nError opening adapter\n";return -1;}}/* Read the packets */while((res = pcap_next_ex( fp, &header, &pkt_data >= 0{if(res == 0/* Timeout elapsed */continue;/* print pkt timestamp and pkt len */printf("%ld:%ld (%ld\n", header->_sec, header->_usec, header->len; /* Print the packet */for (i=1; (i < header->caplen + 1 ; i++{printf("%.2x ", pkt_data[i-1];if ( (i % LINE_LEN == 0 printf("\n";}printf("\n\n";}if(res == -1{printf("Error reading the packets: %s\n", pcap_geterr(fp;return -1;}pcap_close(fp;return 0;步骤3:为编译器指定包含文件和库文件搜索目录。
基于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)、一个底层的动态连接库()和一个高层的不依赖于操作系统的静态库()共三个部分构成。
这里,NPF在操作系统的内核级,、在用户级。
1)数据包监听设备驱动程序Array技术实现上,为了实现抓包,系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包(rawpacket)。
这就要求WinPcap的一部分运行在操作系统核心内部,直接与网络接口驱动交互。
由于这个部分是系统依赖(system dependent)的,在Winpcap的解决方案中它被视为是一个设备驱动,称作NPF(Netgroup Packet Filter)。
图1.1 WinPcap的组成和结构2)底层的动态连接库()和高层静态库()为了方便编程,WinPcap必须提供一个编程接口(API),这就是WinPcap的底层的动态连接库()和高层静态库()。
基于WinPcap的网络协议分析系统的设计与实现
鲁晓帆;孙卫佳;付双胜
【期刊名称】《沈阳师范大学学报(自然科学版)》
【年(卷),期】2010(28)4
【摘要】概述了WinPcap的组成结构,介绍了以太网数据包捕获原理.基于WinPcap利用多线程技术实现对网络底层数据包的捕获.系统考虑到数据包捕获性能的问题,极大的降低了丢包率,对系统整体进行优化.对数据链路层捕获的数据包进行细致分析(即对以太网帧净载荷的十六进制数据分析).将捕获的数据包按照各层网络协议格式对数据内容进行分析,为防止黑客攻击、网络安全以及入侵检测技术等提供理论依据.
【总页数】3页(P514-516)
【作者】鲁晓帆;孙卫佳;付双胜
【作者单位】长春工业大学,计算机科学与工程学院,长春,130012;长春工业大学,计算机科学与工程学院,长春,130012;长春工业大学,计算机科学与工程学院,长
春,130012
【正文语种】中文
【中图分类】TP393
【相关文献】
1.基于WinPcap的网络数据包捕获系统设计与实现 [J], 黄培花;宋科
2.基于Winpcap的网络封包软件设计与实现 [J], 钱素娟;赵晓宇
3.基于WinPcap的网络安全监控系统的设计与实现 [J], 伍丽华;张莉;曾致远
4.基于WinPcap的网络监测系统设计及协议分析 [J], 周灵;丁伟雄;杨文茵
5.基于Winpcap的数据包捕获和协议分析系统的设计与实现 [J], 李延会;岳彩祥;徐金艳;李亚斐
因版权原因,仅展示原文概要,查看原文内容请购买。
实验一 wireshark抓包工具使用[实验目的]学习wireshark抓包工具的使用了解wireshark抓包工具的功能通过学习,进一步理解协议及网络体系结构思想[实验原理]Wireshark是网络包分析工具。
网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。
主要应用:网络管理员用来解决网络问题网络安全工程师用来检测安全隐患开发人员用来测试协议执行情况用来学习网络协议[实验内容]下载WIRESHARK,学习工具的使用和功能。
[习题与思考题]1、网络工程师能通过WIRESHARK做哪些工作?2书名实验二 WINPCWP编程[实验目的]了解WINPCAP的架构学习WINPCAP编程[实验原理]WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库.大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets。
这是一种简单的实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口。
然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中的数据包。
也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的数据包。
WinPcap产生的目的,就是为Win32应用程序提供这种访问方式;WinPcap提供了以下功能1.捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的2.在数据包发送给某应用程序前,根据用户指定的规则过滤数据包3.将原始数据包通过网络发送出去4.收集并统计网络流量信息章名 3以上这些功能需要借助安装在Win32内核中的网络设备驱动程序才能实现,再加上几个动态链接库DLL。
所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。
这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。
基于Winpcap的网络包捕获和分析_通信工程Winpcap是一种Windows平台下的网络包捕获库,它能够拦截网络传输的数据包,分析其内容并提供给程序使用。
在通信工程领域,Winpcap常用于网络协议分析、网络安全检测等方面。
Winpcap的工作原理是通过抓取操作系统内核与网卡之间的输入/输出数据包,从而捕获并分析网络包。
Winpcap将网络接口抽象成一个数据源(即抓包器),并提供一系列API供应用程序进行操作。
这些API包括:1. pcap_open_live():打开网络接口并设置过滤器。
2. pcap_setfilter():设置抓包过滤规则。
3. pcap_next_ex():从网络接口中捕获下一个数据包。
4. pcap_sendpacket():发送数据包到网络。
5. pcap_stats():返回接口的统计信息。
通过调用上述API,可以在应用程序中达到获取、分析网络包的目的,从而实现网络协议的协议分析、网络安全检测等通信工程任务。
在使用Winpcap时需要注意,由于其需要操作系统内核与网卡之间的数据包,因此在使用时需要获得管理员权限。
在基于Winpcap的网络包捕获和分析中,通常需要进行以下步骤:1. 打开网络接口并设置过滤器,过滤掉不必要的数据包。
2. 捕获数据包。
3. 解析数据包的协议头,分离出数据部分。
4. 对数据部分进行处理,如提取HTTP请求、检测网络攻击等。
5. 将处理结果保存或发送到其他模块进行处理。
Winpcap的优势在于其能够让用户获得更加细致的网络数据,通过协议分析和安全检测等手段更好地保障网络安全。
同时,由于其跨平台特性,可应用于多种不同的通信工程场景中。
实验一 wireshark抓包工具使用[实验目的]学习wireshark抓包工具的使用了解wireshark抓包工具的功能通过学习,进一步理解协议及网络体系结构思想[实验原理]Wireshark是网络包分析工具。
网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。
主要应用:网络管理员用来解决网络问题网络安全工程师用来检测安全隐患开发人员用来测试协议执行情况用来学习网络协议[实验内容]下载WIRESHARK,学习工具的使用和功能。
[习题与思考题]1、网络工程师能通过WIRESHARK做哪些工作?书名2实验二 WINPCWP编程[实验目的]了解WINPCAP的架构学习WINPCAP编程[实验原理]WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库.大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets。
这是一种简单的实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口。
然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中的数据包。
也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的数据包。
WinPcap产生的目的,就是为Win32应用程序提供这种访问方式;WinPcap提供了以下功能1.捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的2.在数据包发送给某应用程序前,根据用户指定的规则过滤数据包3.将原始数据包通过网络发送出去4.收集并统计网络流量信息章名3以上这些功能需要借助安装在Win32内核中的网络设备驱动程序才能实现,再加上几个动态链接库DLL。
所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。
这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。
基于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的应用,使其封装性能够只应用在一层驱动的设
计上,极大程度地降低了设计的烦琐性,更容易开拓驱动程序。
2.2 BPF研究
Bpf是通过Filler以及Network tap组成的。
Filler 对监听到的数据包中用户感兴趣的进行分析,本质上它就是一个数据包的过滤器,根据不同的用户需求可以设置过滤的条件,设置成仅对特定协议的数据包接收。
需要探听网络中所有数据流则用Network Tap 函数。
当一个数据包被网卡驱动接收到以后,链路层的驱动程序就会把数据包转给协议栈程序进行处理,如果这时有进程调用BPF 网络端口监听程序的话,则BPF 首先被链路层的驱动程序所调用,BPF会首先把一份数据复制到缓冲区中进行判断是否接收,首先根据事先定义的过滤规则进行判断,如果不符合规则的从中断返回,然后还需要判断这个数据包是否是发给本机的,如果是的话,链路层的驱动程序转给协议栈程序,然后返回,否则从中断返回,继续接收数据包,重复进行数据包的过滤工作。
3 系统设计
3.1 系统逻辑结构
通过对实际工程进行分析可知,整个系统有三个模块,分别是抓包、协议分析以及数据存储模块。
第一个是整个局域網监控系统中,最为基础的一个组成部分。
在整个系统的设计上,首先要考虑的就是怎样从网络中抓包,实现方式多种多样,可以根据操作系统以及环境的不同,进而选择不一样的方式去实现。
此系统,通过对WinPcap函数库进行应用,进而从网络中抓包。
3.2 捕获模块
对于网卡混杂模式的应用,目的在于能够截取网络数据包。
但是根据实际工程的原因,大多数情况下,都必须过滤掉网络上的一些特殊的数据包。
所以,在进行捕获时,要对不同的数据包进行核查,只有符合过滤条件才能被过滤掉。
这样一来,降低了系统效率,我们不可能对每一个数据包都进行过滤,即使这样做了,也可能会丢失以及分析处理不当,导致的数据包出现种种问题。
但是,文章中所提到的这个系统,是通过对WinPcap进行应用,进行实现对数据包的捕获,不仅仅能够提升监听效率,还能够减少开发程序,极大程度提升了系统的移植性。
3.3 WinPcap 过滤规则及捕获数据包
WinPcap 过滤器是基于描述性而指定的语法规则,过滤规则是一个包含过滤表达式的ASCII 码字符串。
捕获数据包步骤图如图1所示。
4 结束语
根据上文的分析与研究可知。
在网络中对数据包进行抓取以及分析工作时,可以应用以太网的广播机制或者是网卡应用的混杂工作模式。
这样一来,还能够
有效的优化网络提供数据支持。
参考文献
[1] 郭凯.基于WinPcap的数据包捕获系统的设计与实现[D].西安:西安电子科技大学,2013.。