基于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的应用,使其封装性能够只应用在一层驱动的设
计上,极大程度地降低了设计的烦琐性,更容易开拓驱动程序。
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.。
基于WinPcap的网络数据解析系统
T P I ae i rdcd j dti i l h ts rsl a rsne . C /P r n oue n ea .f ay te et eu w s peetd t I nl t
Ke wo d y r s: Wi c p d t c p ue poo o nlss n a ; aa at r ; rt cl ay i P a
1引 言
计 算机 网络 的发 展 ,给 人 们 的生 活和 工 作带 来 了方
便 。但 是 ,网络 是 一把 双 刃剑 ,在 给 我们 带 来极 大 方便 的 同时 也给 我 们带 来 了很 大 的 安全 问题 。 因此 ,获 取 网 络 的数 据信 息 ,并 对之 分析 ,也是 保 障 网络 安全 的 重要
2Sho o e e/ n ltc, Wx I tu f T hog , u/ lguZ 4 2 .ha co fM c nsadE c / l h L e rs u/n / t o e noy Wx J ns I 2 c ̄) st e c l ;a 7
Ab ta t F r ovn te ewo k e ue sr c : o sli g h nt r scr
基于 WiP a n c p的网络数据解析系统
魏 敏 ,奚 茂龙 ,周 阳花
(. 1 江南大 学 物联 网工程 学院 ,江苏 无 锡 2 4 2 ;2 无锡职 业技 术学院 机 电学院 ,江苏 无锡 2 4 2 ) 1 12 . 112
摘 要 : 针对 目前的 网络安 全问题 ,设计并实现 了基于 Wncp的网络数据解 析系统 。介绍 了 Wncp i a P i a 的结构组成 ,论述 了基于 P
控编 程提供 了一个 易于 移植 的应用框 架 。
用VC_实现基于Winpcap的网络数据包捕获与分析
数据
图 3 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.4 TCP 数据 报或 UDP 数据 报
关键词: VC++; 数据包捕获; WinPcap
中 图 分 类 号 :T P312
文 献 标 识 码 :A
文章编号:1672- 7800(2007)03- 0104- 02
1 数据包的捕获原理
在正常的情况下, 一个网络接口应该 只响应以下两种数据帧:
( 1) 与自己硬件地址相匹配的数据帧。 ( 2) 发向所有机器的广播数据帧。其 实在一个实际的系统中, 数据的收发由网 卡完成, 网卡接收到传输来的数据帧, 网 卡 内 的 单 片 程 序 接 收 数 据 帧 的 目 的 MAC 地址, 根据计算机上的网卡驱动程序设置 的 接 收 模 式 判 断 是 否 接 收 。而 对 于 合 法 的 网卡来说应该只接收以下数据帧有以下 4 种模式: ①广播方式。②组播方式。③单播 方式。④混杂模式。 数据包捕获作为一种网络通讯程序, 也是通过对网卡的编程来实现网络通讯。 因此, 网络数据包捕获的基本原理是让网 卡接收一切它所能接收的数据。
基于Winpcap的数据包捕获和协议分析系统的设计与实现
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的网络分析的研究与实现
基于 WiP a n cp的网络分析 的研 究与实现
徐 波 。张勤 慧
( 南京林业大学 信息 ( 网络)中心 , 南京 203) 107
摘 要 :主要讨论利 用 WiP a n cp开发 包实现 Wid w no s下网络数据 包的捕 获技术 ,分析 了I 、T P等协议 的解析过 P C
划分 硬件 和软件监控 系统 。实 时监 视 、控制和记 录局域 网 中
的违 规 行 为 是 网络 监 控 系 统标 准 功 能 。 目前 国外 主 要有 : Ehra 和 S ie 这两款软件 。S ie 软件它能够给 网管员实 tee l nfr n r f
3 WiP a n cp研 究
通过用 户级 的程 序接 口来实现 抓包 ,通过这 些接 口,用
最后 介绍 了利 用 vc + + 开发工 具来 实现实 时抓取 并分 析数 据 包 ,将 协议 、I P源地址 、 目标地址 、包长度等 主要协议 内容
保存 下来 ,提供给用户 ,也是为进 一步 的网络分 析打下坚 实
的基 础 。
户 程序 可以利用 内核驱 动提供 的高级 特性 。pc ed1 w — akt l和 p . cpd1 Wi cp提 供 的 两 个 库 。 pc e 提供 了 一 个 底 层 a.l是 n a p ak t
AI P ,通过 它可 以直接用来访 问驱动 的函数 ;Wip a n cp导 出了
Ab t a t ag o a ra n t r sn n v ra r walh s i a t l r m h sr c :a l r e lc a e ewo k u i g u i e s l e l a e n u a l o me t e a t a e d , h s r ce fo te l i f t i p a t a n i e r g r q ie n s u e t e W iP a r e o a h e e a p a t a ewo k mo i r g s se T i a t l r c il e gn e n e u r me t , s h n c p d v r t c iv r ci l n t r n ti y t m. h s r c e c i i c on i ma ny d s u s s t e u e o n c p d v l p n i wi d ws n t r a k t c p u e tc n lg .An l ss o P CP i l ic s e h s f Wi P a e e o me t kt n o ewo k p c e a t r e h oo y ay i f I ,T p o o o a s g p o e s u i g t e MS S ld t a et tr aa n t o k F n l , s b ih d t e s se h r w r p rt g r t c lp r i r c s , s - q a a s O s e d t e w r . i al e t l e y t m a d a e o e ai n n h b o y a s h n e v r n n , h u h t sig t c i v AN n t r gf n t n n i me t tr g e t , o a h e eL o o n mo i i u ci . on o
基于WinPcap的网络分析的研究与实现
基于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], 武伟;魏晓;魏仕民
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Winpcap的网络嗅探器设计与实现
1
基于网络协议分析和网络数据捕获的技术,从广义上来讲,通常被叫作协议分析仪(ProtocofAnalyzer)。这样定义的原因在于我们常常将一些纯软件的,并且更侧重于捕获网络数据和进行协议分析的系统叫做嗅探器(Sniffer).而在实际用中,基于硬件或者软硬件结合的网络数据捕获和分析系统我们称之为协议分析仪。当然,我们并不是在所有的场合都对两者之间的概念进行区分,因为他们在功能上都能完成类似的工作.举例子来说,一些网络管理软件及一些网络协议分析仪都使用了嗅探器技术。
嗅探器是一柄双刃剑,具有正反两个方面的作用。作为正面用途,嗅探器主要分析网络流量,作为发现和修补网络故障的重要手段.例如,当网络某个部分运行出现异常,报文发送速度下降时,网络管理员无法确切找出问题的关键所在时,嗅探器即可做出精确的判断。此外,网络管理员还可以利用嗅探器诊断出网络内大量不可见的模糊问题,比如,哪个网络协议传输了多少流量,占主要通讯协议的主机,大多数通讯的目的地址,报文发送的时间和主机间报文传送的时间间隔等.另一方面,嗅探器也可以被别有用心的人用于非法行为。被嗅探器所截取的数据经过处理可以向用户还原显示数据包中所封装的信息,该信息包括用户标识符和口令以及机密的或者专用的信息,用于危害邻居网络的安全或获取更高级别的访问权限。
本次课程设计通过基于Winpcap的网络嗅探器设计与实现,网络嗅探器对网络上传输的数据包的捕获与分析功能的进一步了解,做到知己知彼。通过网络嗅探器对网络上传输的数据包进行捕获和分析,获取所需要的信息,利用对这些信息进行网络安全分析。因此,网络嗅探器的研究具有重要意义。
基于winpcap的网络抓包系统
术、多线程技术 、S C E O K T技术的应用 ,在 C/s模式中有效地 进行 计算 机的监控 。 客户端进行信息的收集 , 并将信息发送给 服务端,在完整的呈现给管理人员 , 整个过程都在监控系统 的 进行下有序 良好的进行 , 使管理人员在局域 网内能够实现正常 的管理和监测 ,进而促使 了计算机管理 的准确性和 高效性 。
dm f l = c p dm u p i ep a up
— — —
(n i n d c a 木 d m f l ) u s g e h r ) u p ie :
回调函数 ,用来处理数据包 木 /
v i a k t h n l r u c a * u p i e odpce l ade ( h r d m f ,
—
_
1 3 1 9 0端 口的数据 识别为 H T 17 、10 T P协议 。还有一种方法是 基 于正则表达式识别 , 通过大量 的统计分析 , 得到某种应用层 协议 的特 征表达式 ,然后利用正则表达式 匹配 引擎进行 识别。 它们 两者 各有 优缺点,基于端 口号的识别虽然效率 比较高 , 但 是对 于一些不常见的协议不容易识别 出来 。 而基于正则表达式 的识 别对 应用 层协议的识别范围 比较广 。 我们 的系 统结合了上述 这两种方法,利用各 自的优点 。 我 们 自己研 究出来一些协议的正则表达式 。 其对 D S的识别率 尤 N
… 刘海林, 陈世欣, 龚仕华. 于 HO K技术 的计算机监控 基 O
上机1:基于WinPcap的网络嗅探器设计与实现.
上机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的网络嗅探器的设计与实现
性 与可靠 性 日益 受到人们 的重 视 。网络 嗅探 器 可 以有效完 成对 网络 上 传输 数 据 包 的捕 获 , 而收 从 集 与分析 网络 信息 , 网络 流 量监 控 和 故 障 检测 是
所 必 不 可 少 的 工 具 之 一 , 网 络 管 理 与 网 络 安 全 对 具 有重要 的意义 。
Ab t a t Ai n t h e u t wbe fn t r n g me t t ep p r rp ss an t o k s i e t n c p sr c : mi g a es c r y p lmso ewo k ma a e n , a e o o e ew r nf r h Wi p a t i h p wi
a e e o me tp a om n s a sd v l p n lt r a d Viu lC f a e eo me t o l ip a n iu l .T e fn a n a p i cpe o s d v l p n o n c p a d v s a t W C h d me t r i l f u l n
De i n a d I p e e t to f sg n m lm n a i n o
Newo k S i e s d o i p a t r n f r Ba e n W n c p
C HENG 。 n L n I Fa g
( col f o p t cec , agh Istt o eh o g , agh u e 4 5 0 ) Sh o o m ue S i e Hun sin tue f c nl y Hun si b i 3 0 3 C r n i T o H
随着 I e e 的迅 猛发展 , nr t tn 网络 已 1益成 为 工 3
课程设计(论文)_基于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)、一个底层的动态连接库()和一个高层的不依赖于操作系统的静态库()共三个部分构成。
这里,NPF在操作系统的内核级,、在用户级。
1)数据包监听设备驱动程序Array技术实现上,为了实现抓包,系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包(rawpacket)。
这就要求WinPcap的一部分运行在操作系统核心内部,直接与网络接口驱动交互。
由于这个部分是系统依赖(system dependent)的,在Winpcap的解决方案中它被视为是一个设备驱动,称作NPF(Netgroup Packet Filter)。
图1.1 WinPcap的组成和结构2)底层的动态连接库()和高层静态库()为了方便编程,WinPcap必须提供一个编程接口(API),这就是WinPcap的底层的动态连接库()和高层静态库()。
