基于Winpcap的网络嗅探器设计与实现样本.docx
《基于Winpcap的网络嗅探器设计与实现样本.docx》由会员分享,可在线阅读,更多相关《基于Winpcap的网络嗅探器设计与实现样本.docx(23页珍藏版)》请在冰豆网上搜索。
基于Winpcap的网络嗅探器设计与实现样本
网络安全
课程设计
设计题目:
基于Winpcap网络嗅探器设计与实现
院系名称:
班级:
小构成员:
秦向红
贾博
指引教师:
孙飞显、夏冰
年1月
摘要
当前,网络也逐渐成为人们生活和学习中不可缺少某些,与此同步,网络信息安全性也越来越受到人们关注。
为了有效地实现网络传播中数据包检测、捕获和分析,较为以便地监控网络信息流量并保证信息安全可靠,产生了网络嗅探器。
基于Winpcap开发平台,使用VisualC++作为开发工具,设计并开发网络嗅探器。
设计实现IP、TCP、UDP数据包捕获和分析,以有效地对网络信息安全进行监测、捕获和分析。
同步分析了网络嗅探器基本工作原理,并阐述了应用捕获数据包流,依照Winpcap核心功能给出了其详细实现。
成果表白,该网络嗅探器构造简朴,捕获数据迅速,对网络安全管理具备重要意义。
核心词:
Winpcap、MFC、网络嗅探器、数据包
Abstract
Atpresent,thenetworkhasgraduallybecomeanindispensablepartinpeoplelifeandlearning,atthesametime,networkinformationsecurityhasbeenpaidmoreandmoreattention.Inordertoachievethecaptureandanalysisofdetection,datapacketinthetransmissionnetwork,moreconvenientmonitoringnetworkinformationflowandensurethesafetyandreliabilityoftheinformation,producedanetworksniffer.BasedontheWinpcapdevelopmentplatform,usingVisualC++asthedevelopmenttool,thedesignanddevelopmentofnetworksniffer.DesignandimplementationofIP,TCP,UDPdatapacketcaptureandanalysis,monitoring,captureandanalysisinordertoeffectivelyonthesecurityofnetworkinformation.Atthesametime,analyzestheprincipleofnetworksniffer,andexpoundstheapplicationofcapturingpacketstream,accordingtoWinpcapkeyfunctiongivestheconcreterealization.Theresultsshowthat,thenetworksnifferhastheadvantagesofsimplestructure,fastcapturedata,hasthevitalsignificancetothenetworksecuritymanagement.
Keywords:
Winpcap,MFC,networksniffer,packet
第1章绪论
1.1设计背景
当前,网络技术发展突飞猛进,网络已经渗入到生产、生活学习各个方面,并且,人们开始越来越依赖网络技术,计算机网络具备如下特性:
形式多样性,网络开放性,终端不均匀性,网络互联性等。
于是,网络特别容易受到黑客等不法分子袭击。
总体上说,网络安全所要研究领域涉及网络中数据信息完整性,保密性,真实性等各种方面内容。
可见网络安全所涉及不但仅是技术方面内容,尚有网络管理有关问题。
两者之间是密切有关,技术方面也许强调如何有效地防御黑客以避免非法外部袭击,而在管理方面则需要更加注重内部人员管理因素。
因此,如何较好地保护计算机中重要数据信息不受不法分子侵害,保护顾客计算机系统是当前网络安全方向研究重要问题。
普通,对网络中流通数据特别感兴趣普通有两类人,一类就是网络管理员,此外一类就是网络黑客,她们不断地对网络中数据进行检测,以保证明时地跟踪网络数据。
她们存在一种共同点,就是都要用到一种好数据包监控软件。
如黑客常惯用数据包监控软件检测互联网,监测网络信息内容,并对某些敏感信息作出分析,如财经交易等活动中浮现密码,顾客名等内容。
网络管理员则用该数据包软件检测网络流量,查找网络中漏洞,发现故障并做出解决等。
因此,学习网络中数据检测和数据分析过程,不但有助于网络管理员排除网络中漏洞和故障,重要是能有效地结识网络袭击原理,常采用技术,这样就可以有针对性破坏网络黑客侵入和对资料窃取。
可见,网络探测器可以检测网路流量,实现网络数据检测和捕获,已经逐渐成为网络分析过程中重要工具,对于维护网络安全和网络信息管理有着重要意义。
1.2国内外研究状况
基于网络合同分析和网络数据捕获技术,从广义上来讲,普通被叫作合同分析仪(ProtocofAnalyzer)。
这样定义因素在于咱们经常将某些纯软件,并且更侧重于捕获网络数据和进行合同分析系统叫做嗅探器(Sniffer)。
而在实际用中,基于硬件或者软硬件结合网络数据捕获和分析系统咱们称之为合同分析仪。
固然,咱们并不是在所有场合都对两者之间概念进行区别,由于她们在功能上都能完毕类似工作。
举例子来说,某些网络管理软件及某些网络合同分析仪都使用了嗅探器技术。
当前,已经存在了许多纯软件网络嗅探器,如:
Linuxsniffer、Dsniff、Tcpdump等,其中,不乏某些专门用于捕获顾客名字和顾客密码软件,如insniffer、winsniffer。
于是,咱们懂得,网络嗅探技术就是一把双刃剑,在被网络管理员纯熟使用同步也会被不法外部黑客运用,既可以作为一种诊断网络故障,排除网络存在问题工具,也为不法分子提供了窃取信息工具。
大多数纯软件合同分析仪都是采用pc机上网卡来辅助实现,即该过程可以描述为:
pc网卡+合同分析仪。
该软件实现重要功能就是数据捕获,信息编码,信息分析解决。
使用该软件可以实现网络流量捕获,并作出相应模仿。
并且,网络合同分析仪还可以产生大量网络数据包,以此来测试网络负载能力。
当前,已经存在了几款较典型合同分析仪,如:
HP公司IntemetAdvisor(网络专家系统)、WG公司Domino系列合同分析仪,相类似还涉及SnifferPortable合同分析工具等。
但是无论是从针对合同解码能力,还是从数据分析实时性角度来讲,该合同数据分析解决能力、数据包产生能力等方面都与采用硬件实现合同分析仪存在着较大差距。
一种典型硬件合同分析仪式通过专用数据采集硬件实现网络数据获取,采用专门采集箱完毕某些全线速捕获和实时性更好网络数据操作中。
尚有某些软件粘在应用层角度对网络性能进行测试,该类软件普通使用某些基准流量对网络数据进行分析,是比网络合同分析仪更高层次测试工具。
代表软件是Chariot,该软件是由Ganymedesoftware公司开发,尚有某些别软件在当前也是挺流行,例如用于网络规划验证模仿环境,过外已有某些部门对她们自己网络合同和它们组合构建较大网络系统来模仿,虽然执行效果较好,但是价格却很昂贵。
从老式观念上讲,网络维护人员经常需要一种功能强大集各种网络技术于一体测试软件。
因此,相对典型合同分析仪常加入网络管理,自动网络信息搜索,智能专家等功能,并且普通要具备一定移动性能。
当前网络分析和测试发展趋势是具备综合性能合同分析仪或者网络分析仪,它们在现场分析,故障诊断,网络数据维护等方面经常发挥着至关重要作用,像Fluke
OptViewINA手持综合功能合同分析仪就是一种典型例子。
1.3研究意义
计算机网络技术飞速发展,极大变化了人们老式生活和工作模式,越来越多社会经济活动开始依赖网络来完毕,可以说计算机网络发展已经成为当代社会进步一种重要标志。
但与此同步,计算机犯罪、黑客袭击、病毒入侵等恶性事件也屡屡发生。
因而,信息安全已越来越受到世界各国注重。
嗅探器作为一种网络通讯程序,是通过对网卡编程来实现网络通讯,对网卡编程是使用普通套接字(socket)方式来进行。
但是,普通套接字程序只能响应与自己硬件地址相匹配或是以广播形式发出数据帧,对于其她形式数据帧例如已到达网络接口但却不是发给此地址数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达数据包。
而网络嗅探器目恰恰在于从网卡接受所有通过它数据包,这些数据包即可以是发给它也可以是发往别处。
显然,要达到此目就不能再让网卡按普通正常模式工作,而必要将其设立为混杂模式。
嗅探器是一柄双刃剑,具备正反两个方面作用。
作为正面用途,嗅探器重要分析网络流量,作为发现和修补网络故障重要手段。
例如,当网络某个某些运营浮现异常,报文发送速度下降时,网络管理员无法确切找出问题核心所在时,嗅探器即可做出精准判断。
此外,网络管理员还可以运用嗅探器诊断出网络内大量不可见模糊问题,例如,哪个网络合同传播了多少流量,占重要通讯合同主机,大多数通讯目地址,报文发送时间和主机间报文传送时间间隔等。
另一方面,嗅探器也可以被别有专心人用于非法行为。
被嗅探器所截取数据通过解决可以向顾客还原显示数据包中所封装信息,该信息涉及顾客标记符和口令以及机密或者专用信息,用于危害邻居网络安全或获取更高档别访问权限。
本次课程设计通过基于Winpcap网络嗅探器设计与实现,网络嗅探器对网络上传播数据包捕获与分析功能进一步理解,做到知己知彼。
通过网络嗅探器对网络上传播数据包进行捕获和分析,获取所需要信息,运用对这些信息进行网络安全分析。
因而,网络嗅探器研究具备重要意义。
第2章需求分析
2.1顾客需求
网络嗅探(网络抓包)时一种运用计算机网络接口截获其他计算机数据报文工具。
使用网络嗅探(网络抓包)工具重要人群是黑客或网络安全技术人员,从袭击角度,黑客可以使用网络嗅探(网络抓包)程序非法获取网络中传播大量敏感信息,如账号和口令等,对网路安全极具威胁;从防守角度,网络嗅探(网络抓包)技术是居于网络入侵检测系统最底层环节,是整个系统数据来源,为技术人员提供重要根据。
无论是黑客还是安全人员,她们对抓包技术运用途径都是同样,即对网络上传播数据包进行捕获与分析,获取不要信息,但是她们目是不同样,前者是专门运用计算机网络搞破坏或恶作剧,而后者是通过对这些信息分析运用。
维护网络安全与稳定。
因而顾客提出了如下规定:
◆和谐图形化界面,不需要复杂命令,大某些功能通过鼠标点击就可达到,操作简朴、以便;
◆可以捕获网络数据包,并能对数据包进行简朴分析;
◆精准设立捕获规则和灵活过滤方略,能使顾客以便、精确地捕获所需要信息;
◆可以对网络中捕获数据包解码,用于故障分析;
◆顾客可以自定义过滤规则,使数据包捕获更加精准和具备灵活性,增强了软件功能以及与顾客交互能力;
2.2功能需求
对于基于Winpcap网络嗅探器设计与实现,网络嗅探(网络抓包)作为网络安全面最常用工具被广泛使用,本次设计实现功能有:
◆可以抓取IP数据包。
◆可以抓取TCP数据包。
◆可以抓取UDP数据包。
◆对抓取数据包进行解码。
2.3性能需求
一种程序除了能正常运营并且达到相应功能外,对程序性能也有严格规定,性能需求决定了整个系统性能档次、所采用技术和设备档次,本程序除了达到惯用软件对响应时间以及差错控制规定外,还提出如下规定:
(1)数据精准性。
捕获到数据包并不但仅是单纯数据信息,而是包具有IP头、TCP头等信息头最原始数据信息,这些信息保存了它在网络传播时原貌,为分析网络信息提供了重要资料。
(2)适应范畴。
先进抓包工具可以分析几百种合同。
普通状况下,大多数抓包工具至少可以分析下面合同:
IP、TCP、UDP等。
第3章Winpcap及有关合同简介
3.1Winpcap构成构造
Winpcap由内核级数据包监听设备驱动程序(NPF)、低档动态链接库(packet.dll)和高层、顾客级、不依赖于操作系统动态链接库(wpcap.dll)三某些构成。
Winpcap构成构造如图3.1所示。
(1)数据包监听设备驱动程序
在技术实现方面,为绕过操作系统合同栈来访问网络上原始数据包(rawpacket)。
这就规定Winpcap一某些运营在操作系统核心内部,直接与网络接口驱动交互。
由于这个某些是系统依赖(SystemDependent),在Winpcap解决方案中它被视为是一种设备驱动,称作NPF(NetgroupPacketFilter)。
Winpcap开发小组针对Windows95,Windows98,WindowsME,WindowsNT4,Windows和WindowsXP提供了不同版本驱动(在Windows95/98/ME中是VXD文献,在WindowsNT/中是SYS文献)。
这些驱动不但提供了基本特性(例如抓包、发送原始数据包——注入数据包),尚有更高档特性(例如可编程过滤器系统和监视引擎)。
前者可以被用来约束一种抓包会话只针对网络通信中一种子集(例如,只捕获特殊主机产生ftp通信数据包),后者提供了一种强大而简朴记录网络通信量机制(例如,获得网络负载或两个主机间数据互换量)。
概括地讲,NPF可直接从数据链路层抓取网络数据包并过滤,可将数据包不加修改地传递给运营在顾客层应用程序。
NPF在不同WINDOWS系统下是不同(在NT//XP中是npf.sys文献,一般位于C:
\WINDOWS\system32\drivers中),其重要功能是过滤数据包,并在数据包上附加时间戳、数据包长度等信息。
(2)低档动态链接库(packet.dll)和顾客级动态链接库(wpcap.dll)
为以便编程,Winpcap提供编程接口函数都封装在低档packet.dll(普通位于c:
\windows\system32\)和顾客级动态连接库wpcap.dll(普通位于c:
\windows\system32\)中。
底层packet.dll提供编程接口独立于WindowsAPI,packet.dllAPI是可以直接用来访问驱动函数;packet.dll运营在顾客层它将应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同WINDOWS系统上运营。
高层wpcap.dll导出了一组更强大且与LibPcap一致高层抓包函数库(CapturePrimitives),这些函数使得数据包捕获以一种与网络硬件和操作系统无关方式进行。
wpcap.dll使用packet.dll提供服务,并向应用程序提供完善监听接口。
3.2Winpcap简介
Winpcap是Win32平台下强大、有较好扩展性底层网络分析体系构造,是UNIX下Lipbcap移植到Windows下产物,是Win32环境下数据包捕获开放代码函数库。
Winpcap是第一种Win32开放式捕获包体系构造,可以支持大多数应用程序需要。
Winpcap包括了一种内核级数据包过滤器NPF(NetgroupPacketFilter)、一种底层动态链接库(packet.dll)和一种高层独立于系统库(wpcap.dll)。
NPF模块过滤数据包,将数据包不做任何改动传递给顾客。
packet.dll模块提供了Win32平台下捕获包驱动接口,基于pack-e.tdll编写程序可以不通过重新编译就在各种Win32平台下实现捕获数据包。
wpcap.dll库不依赖于操作系统,且它包括了某些其她高层函数,如过滤器生成器,顾客定义缓冲区和高层特性。
Winpcap重要功能在于独立于主机合同(如TCP、IP)而发送和接受原始数据包。
Winpcap可用于实现如下功能:
①捕获原始数据包,不论这个包是发往本地机,还是其她机器之间互换包。
②在数据包被发送到应用程序之前,通过顾客定义规则过滤。
③向网络发送原始数据包。
④对网络通信量做出记录。
这些功能依赖于Win32系统内核中设备驱动以及某些动态链接库。
Winpcap提供了一种强大编程接口,它很容易地在各个操作系统之间进行移植,也很以便程序员进行开发。
诸多不同工具软件使用Winpcap于网络分析,故障排除,网络安全监控等方面。
Winpcap特别合用于下面这几种典型领域:
◆网络及合同分析。
◆网络监控。
◆通信日记记录。
◆trafficgenerators。
◆顾客级别桥路和
3.3以太网简介
IEEE802.3所支持局域网原则最早是由Xerox开发,日后通过DIGITAL公司,Intel公司和Xerox联合扩展为以太网原则,符合以太网原则局域网成为以太网。
以太网上每一种主机为了标示自己唯一“身份”均有自己网口接口卡(NIC)。
网络接口卡普通安装在主机内并能为主机提供一种6字节物理地址。
在遵循IEEE802原则以太网中,这个物理地址称为MAC地址,MAC地址是唯一,任意两个不同网络接口卡都具备不同MAC地址。
以太网MAC地址可以分为三类:
单播地址,广播地址和多播地址。
以太网MAC帧格式具备7个域,分别为:
前导码,帧首定界符,目MAC地址,源MAC地址,合同类型或数据长度,数据帧校验序列,如表3-1所示。
前导码
(7字节)
帧首定界符
(1字节)
目MAC地址
(6字节)
源MAC地址
(6字节)
合同类型
(2字节)
数据
帧校验序列
(4字节)
表3-1以太网MAC帧格式
3.3.1网际合同IP
IP(网际合同)是TCP/IP合同族中核心合同,它负责数据包从源点交付到终点传播。
所有TCP、UDP、ICMP及IGMP数据都以IP数据包格式传播。
该合同提供不可靠,无连接数据报传送服务,但只能保证数据包被发送发送到目主机,而不论传播与否对的,详细纠错重传过程是交由传播层完毕。
3.3.2顾客数据报合同UDP
UDP合同位置是处在IP合同所在层上层。
有OSI模型知,传播层合同。
涉及了UDP和TCP合同。
但是,UDP合同有个缺陷,它不提供端点之间确认和重传功能,因而就不能保证数据安全精确地到达目端点,因此该合同是一种不可靠地传播合同。
3.3.3传播控制合同TCP
TCP(传播控制合同)合同时TCP/IP合同族种面向连接、可靠传播层合同。
TCP与UDP不同,她容许发送和接受字节流形式数据。
为了使服务器和客户端以不同速度发送和接受数据,TCP提供了发送和接受两个缓冲区,可以双向发送数据。
TCP在报文中加上一种递增确认序列号来告诉发送端,接受端盼望收到下一种报文,如果在规定期间内,没有收到关于这个包确认相应,则重新发送此包,这保证了TCP是一种可靠地传播层合同。
TCP所提供服务重要特点:
◆面向连接传播;
◆端到端通信;
◆高可靠性,保证传播数据对的性,不浮现丢失或乱序;
◆全双工方式传播;
◆采用字节流方式,即以字节为单位传播字节序列;
◆紧急数据传送功能。
第4章程序设计与实现
4.1程序运营环境
本系统运正常行硬件环境需求如下:
◆CPU:
PIII800MHZ及其以上;
◆内存:
128MB及其以上;
◆本系统运正常行软件环境需求如下:
◆操作系统:
Windows8;
◆动态链接库和驱动程序:
Winpcap4_1_2.exe;
4.2程序设计
4.2.1程序设计流程图
4.2.2程序详细设计
(1)新建工程并把需要文献导入工程。
导入include文献如图4.2所示。
同步用同样办法在“链接器—>常规”中添加lib文献。
图4.2导入文献
(2)设计主题对话框,如图4.3所示。
图4.3主题对话框
(3)设立选取网卡对话框,如图4.4所示。
图4.4选取网卡对话框
(4)创立protocoInfo.h文献,定义合同格式和合同中使用宏。
合同构造体定义:
typedefstruct_ETHeader//14字节以太头
typedefstruct_IPHeader//20字节IP头
typedefstruct_TCPHeader//20字节TCP头
typedefstruct_UDPHeader
宏定义:
#defineETHERTYPE_IP0x0800//MAC帧中合同类型字段取值
#defineETHERTYPE_ARP0x0806
//合同,IP首部中ipProtocol字段,标明上层合同
#definePROTO_ICMP1
#definePROTO_IGMP2
#definePROTO_TCP6
#definePROTO_UDP17
//定义TCP标志
#defineTCP_FIN0x01
#defineTCP_SYN0x02
#defineTCP_RST0x04
#defineTCP_PSH0x08
#defineTCP_ACK0x10
#defineTCP_URG0x20
#defineTCP_ACE0x40
#defineTCP_CWR0x80
(5)
使用类向导定义控件有关变量。
主窗体中变量定义,如图4.5所示;选取网卡对话框中变量定义,如图4.6所示。
图4.5主窗体变量定义
图4.6选取网卡窗体变量定义
(6)程序函数定义与实现。
文献CSniffer4_302_318Dlg.cpp中定义函数有:
voidOnBnClickedButtonNic()//点击“选取网卡”按钮响应事件
voidSetFiltRules()//设立过滤规则办法
voidDecodeIPPacket(constunsignedchar*pData)//IP分组解析
voidDecodeUDPPacket(constunsignedchar*pData)//UDP数据报解析
voidDecodeTCPPacket(constunsignedchar*pData)//TCP解析
voidCallbackFunctionPacket(unsignedchar*user,conststructpcap_pkthdr*Winpcaphead,constunsignedchar*packetdata)//解析包回调函数
voidCSniffer4_302_318Dlg:
:
SetInitData()//用全局变量给成员变量赋值
UINTProcessFunc(LPVOIDpParam)//线程函数
voidCSniffer4_302_318Dlg:
:
StartCapture()//抓包函数
voidCSniffer4_302_318Dlg:
:
OnBnClickedButtonStartcap()//点击"开始抓包"按钮响应事件
文献ChooseNIC.cpp中定义函数有:
voidCho