欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    ARP包的封装、发送、捕获与解析软件开发毕业论文.doc

    • 资源ID:2386420       资源大小:266.50KB        全文页数:42页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARP包的封装、发送、捕获与解析软件开发毕业论文.doc

    ARP包的封装、发送、捕获与解析软件开发摘 要互联网络是时代需求的产物,随着社会需求的不断增长,互联网络技术得到飞速发展,网络规模急剧膨胀,通过研究网络协议来提高网络通信的安全性变得非常重要。ARP协议是TCP/IP协议栈中一个非常重要的网络通信协议。在透彻理解ARP协议,深入了解ARP协议的分组格式和ARP的工作流程,熟悉Winpcap编程的基础上,本文设计开发了一个ARP包的封装、发送、捕获与解析软件,该软件主要用于辅助教学。程序是在Windows环境下使用Visual C+6.0和WinPcap网络编程工具编写的,在程序测试阶段则使用了网络管理工具Sniffer对程序的运行结果和效率进行了测试。本文还对WinPcap以及Sniffer进行了简要介绍,并且在本文最后总结了开发程序过程中遇到的一些问题和解决办法,希望可以为学习网络编程和相关技术的人提供帮助。关键词:ARP协议;WinPcap;ARP数据包;SnifferABSTRACTInternet is the product of the times demand.With the increasing growing of social needs,Internet technologies is rapidly developing and the network size is rapidly expanding.It is important to improve the security of the network communications through studying network protocols. Arp is a very important network communications protocol in TCP/IP protocols.With the understanding of the Arp protocol and Arp-format and the ARP workflow and Familiaring with Winpcap programming,I designed and developed a software, which is a software of packaging Arp packets, senting,catching and analyzing.This software is used to teaching.This procedure is programmed using Visual C+ 6.0 and WinPcap in Windows environment.In the testing stage,Sniffer is used to text the result of this procedure and the efficiency of this procedure.This paper also introduces WinPcap and Sniffer,and concludes that some of the problems encountered in the procedure and their solutions in the end of this paper.I hope that these questions can provide assistance for the people who is learning network programming and related technologies.Keywords: ARP protocol; WinPcap; ARP packet; Sniffer目 录第1章 前言11.1 课题研究的意义11.2 课题的研究现状11.3 课题研究的工作任务和预期结果1第2章 ARP协议概述22.1 TCP/IP协议栈22.2 ARP协议的引入32.3 ARP协议的原理42.3.1 ARP的分组格式52.3.2 ARP协议的工作流程6第3章 SNIFFER软件简介83.1 Sniffer概述83.2 Sniffer功能简介83.2.1 Sniffer封装功能介绍83.2.2 Sniffer捕获功能介绍9第4章 网络编程工具124.1 Winpacp概述124.2 WinPcap的结构144.3 Winpcap的安装使用方法15第5章 软件开发175.1 需求规格说明175.1.2 引言175.1.2 数据描述175.1.3 功能需求185.2 概要设计说明195.3 详细设计说明195.4 代码实现245.4.1 本文系统的开发环境255.4.2 封装ARP包的函数255.4.3 发送ARP包的函数275.4.4 捕获、解析ARP包的函数275.5 测试285.5.1 封装测试285.5.2 发送测试295.5.3 捕获测试305.5.4 解析测试305.6 与Sniffer的比较32第6章 毕业设计中遇到的问题及解决办法34第7章 结论36致谢38参考文献39第1章 前 言1.1 课题研究的意义虽然Sniffer是一个功能强大的网络管理工具,但是正是由于它功能强大的原因,它运行时占有的资源也是很大的,因此在某些方面做的不是很好,比如在捕获数据包的时候,由于它消耗的资源很大,因此当它捕获到数据包的时候并不能及时处理这些数据包,只能把这些数据包丢掉,这样对于我们教学来说并不是有利的,因此为了能够更好的帮助大家了解、掌握ARP协议及其运作过程,本人在透彻理解ARP协议和熟悉Winpcap编程的基础上,设计开发了一个ARP包的封装、发送、捕获与解析软件用于辅助教学。1.2 课题的研究现状虽然ARP地址解析协议的定义已经给出了非常明确的解释,但是由于该协议工作在网络层以下的链路层上,是属于较底层的协议,国内外很少有人关心该协议的数据包通信过程,也正是因为这个原因,该协议下的攻击往往不容易被发现。随着网络攻击技术的发展,网络黑客越来越侧重于用采用较底层的协议,而且这种危害也日趋严重,比如现在的ARP欺骗技术1就是一个典型的例子。该技术主要是利用ARP协议中协议漏洞伪装目标主机的MAC地址非法窃取该主机的信息或者破坏该主机的正常的网络通信。鉴于这种现状,ARP协议的研究变得非常的重要,只有准确全面的研究ARP协议,解决ARP协议通信安全问题才能更好的提高网络通信的安全性2。1.3 课题研究的工作任务和预期结果(1)构造ARP包,选择并打开网卡,将ARP包发送出去;(2)获取网络中的ARP数据包;(3)解析数据包的内容,将结果标准输出,并同时写入日志文件;(4)与Sniffer做对比,测试和评价该软件。第2章 ARP协议概述2.1 TCP/IP协议栈TCP/IP协议包含了一系列构成互联网基础的网络协议。这些协议最早发源于美国国防部的ARPA互联网项目。TCP/IP字面上代表了两个协议:TCP传输控制协议和IP互联网协议3。时间回放到1983年1月1日,在这天,互联网的前身Arpanet中,TCP/IP协议取代了旧的网络核心协议NCP(Network Core Protocol),从而成为今天的互联网的基石。最早的的TCP/IP由Vinton Cerf和Robert Kahn两位开发,慢慢地通过竞争战胜了其它一些网络协议的方案,比如国际标准化组织ISO的OSI模型。TCP/IP成功的另一个因素在与对为数众多的低层协议的支持。这些低层协议对应与OSI模型中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量的支持TCP/IP,例如:以太网(Ethernet),令牌环(Token Ring),光纤数据分布接口(FDDI),端对端协议(PPP),X.25,帧中继(Frame Relay),ATM,Sonet,SDH等。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial、Line等)来传送数据。2.2 ARP协议的引入在任何时候,当主机或路由器有数据报要发送给另一个主机或路由器时,它必须有接收端的逻辑(IP)地址。但是IP数据报必须封装成祯才能通过物理网络。这就表示,发送端必须有接收端的物理地址。因此需要从逻辑地址到物理地址的映射4。使用静态映射和动态映射都可做到这点,逻辑地址和物理地址之间的关联可以静态地存储在地址映射表中。发送端可在表中查找出对应于逻辑地址的物理地址。但这不是解决问题的好方法。每当物理地址发生变化时,这个表就必须更新。频繁地在所有的机器上对表进行更新是非常麻烦的任务。但这种映射可做成动态的,即发送端在需要时可请求接收端宣布它的物理地址。ARP就是为这个目的而设计的。ARP把IP地址和它的物理地址关联起来。在典型的物理网络上,如局域网,链路上的每一个设备都用通常是写在NIC中的物理地址或站地址来标识。任何时候当主机或路由器需要找出这个网络上的另一个主机或路由器的物理地址时,它就发送ARP查询分组。这个分组包括发送端的物理地址和IP地址,以及接收端的IP地址。当发送端不知道接收端的物理地址,它就会在网络上以广播的形式发送一个ARP请求报文5。在网络上的每一个主机或路由器都接收和处理这个ARP查询分组,但只有预期的接收者才识别ARP查询分组的IP地址,并发回ARP响应分组。这个响应分组包含接收者的IP地址和物理地址。这个分组用单播直接发送给查询者,它使用收到的查询分组中所用的物理地址。2.3 ARP协议的原理IP数据包常通过以太网发送。以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。ARP是一个位于TCP/IP协议栈中的低层协议,它工作在数据链路层,用于将网络中的协议地址(当前网络中大多是IP地址)解析为本地的硬件地址(MAC地址)6。为了节省ARP缓冲区内存,被解析过的ARP条目的寿命都是有限的。如果一段时间内该条目没有被参考过,则条目被自动删除。在工作站PC的Windows环境中,ARP条目的寿命是2分钟,在大部分Cisco交换机中,该值是5分钟。反向ARP(Reverse ARP,RARP)用于把物理地址(MAC地址)转换到对应的IP地址。例如,在无盘工作站启动的时候,因为无法从自身的操作系统获得自己的IP地址配置信息。这时,无盘工作站可发送广播请求获得自己的IP地址信息,而RARP服务器则响应IP请求消息,为无盘工作站分配1个未用的IP地址(通过发送RARP应答包)7。代理ARP(PROXY ARP)也被称作混杂ARP(Promiscuous ARP)一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求7。无故(Gratuitous ARP,GARP)ARP也称为无为ARP。主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为无故ARP,GARP,主要有两个用途:(1)检查重复地址(如果收到ARP响应表明存在重复地址)。(2)用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。2.3.1 ARP的分组格式物理帧头(14B)ARP帧结构(28B)填充数据(18B)CRC(4B)表2-1 ARP分组格式的示意图 注:因为物理帧最小长度为64B,所以要填充18B。2.3.1.1 物理帧头表2-2 物理帧头的结构 目的MAC(6B)源MAC(6B)类型(2B)2.3.1.2 ARP帧结构表2-3 ARP帧结构的示意图 硬件类型 协议类型 硬件长度 协议长度 操作(请求1,回答2) 发送站硬件地址 (例如,对以太网是6字节) 发送站协议地址 (例如,对IP是4字节) 目标硬件地址(在请求中填入) (例如,对以太网是6字节) 目标协议地址 (例如,对IP是4字节)ARP分组具有如下的一些字段:HTYPE(硬件类型):这是16位字段,用来定义运行ARP的网络的类型。每一个局域网为其类型指派一个整数。例如,以太网是类型1。ARP可使用在任何网络上。PTYPE(协议类型):这是16位字段,用来定义协议的类型。例如,对IPv4协议,这个字段的值是080016。ARP可用于任何高层协议。HLEN(硬件长度):这是8位字段,用来定义以字节为单位的物理地址长度。例如,对以太网这个值是6。PLEN(协议长度):这是一个8位字段,用来定义以字节为单位的逻辑地址长度。例如,对IPv4协议这个值是4。OPER(操作):这是16位字段,用来定义分组的类型。已定义了两种类型:ARP请求(1)和ARP回答(2)。SHA(发送端硬件地址):这是可变长度字段,用来定义发送端的物理地址长度。例如,对以太网这个字段是6字节长。SPA(发送端协议地址):这是可变长度字段,用来定义发送端的逻辑(例如,IP)地址长度。对于IP协议,这个字段是4字节长。THA(目标硬件地址):这是可变长度字段,用来定义目标的物理地址长度。例如,对以太网这个字段是6字节长。对于ARP请求报文,这个字段是全0,因为发送端不知道目标的物理地址。TPA(目标协议地址):这是可变长度字段,用来定义目标的逻辑地址(例如,IP地址)长度。对于IPv4协议,这个字段是4字节长。2.3.2 ARP协议的工作流程(1)首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系;(2)当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址;(3)网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包,如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;(4)源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败;第3章 Sniffer软件简介3.1 Sniffer概述Sniffer软件是NAI公司推出的功能强大的协议分析软件。该软件支持的协议很丰富,而且能够进行快速解码分析。本软件开发过程中使用的Sniffer Pro 4.6可以运行在各种Windows平台上。但是Sniffer软件比较大,运行时需要的计算机内存比较大,因此对计算机性能的要求比较高,否则运行会比较慢。3.2 Sniffer功能简介Sniffer的功能主要是以下四个方面:(1)利用专家分析系统诊断问题;(2)实时监控网络活动;(3)收集网络利用率和错误;(4)捕获网络数据包进行详细分析。由于毕业设计的需求,本文将对Sniffer中报文的封装、捕获功能进行详细的介绍。在进行包捕获之前首先选择网络适配器,确定从计算机的哪个网络适配器上接收数据。只有选择网络适配器后才能正常工作。3.2.1 Sniffer封装功能介绍Sniffer软件报文发送功能比较弱,发送前需要在报文编辑窗口(见图3-1所示)先编辑报文发送的内容。首先要指定数据帧发送的长度,然后从链路层开始,一个一个将报文填充完成。也可以将捕获到的报文直接转换成发送报文,然后发送该数据包。也可以修改一下捕获到的报文内容将其发送出去。发送模式有两种:连续发送和定量发送。可以设置发送间隔,如果为0,则以最快的速度进行发送。图3-1 报文编辑窗口3.2.2 Sniffer捕获功能介绍报文捕获功能可以在报文捕获面板中完成。在捕获报文之前要设置捕获条件。捕获条件有以下几种:(1)基本捕获条件基本捕获条件有链路层捕获和IP层捕获。其中链路层捕获是按源MAC和目的MAC地址进行捕获,输入方式为十六进制连续输入,如:00E0FC123456。而IP层捕获是按源IP和目的IP进行捕获。输入方式为点间隔方式,如:10.107.1.1。如果选择IP层捕获条件则ARP等报文将被过滤掉。(2)高级捕获条件在“Advance”页面下,可以根据自己所需要的协议编辑捕获条件。(3)任意捕获条件在Data Pattern下,可以编辑任意捕获条件。用这种方法可以实现复杂的报文过滤,但很多时候是得不偿失,有时截获的报文就不多,还不如自己看看来得快。在本程序中使用的是设置高级捕获条件,在“Advance”页面下,选择的ARP协议,这样捕获到的数据包就是ARP数据包了。Sniffer软件提供了强大的分析能力和解码功能,如图3-2所示。对于捕获的报文提供了一个Expert专家分析系统进行分析,还有解码选项及图形和表格的统计信息。图3-2 Expert专家分析系统其中专家分析系统提供了一个智能的分析平台,对网络上的流量进行了一些分析,对于分析出的诊断结果可以查看在线帮助获得。对于某项统计分析可以通过用鼠标双击此条记录可以查看详细统计信息且对于每一项都可以通过查看帮助来了解起产生的原因。图3-3是对捕获报文进行解码的显示,通常分为三部分,包括当前捕获的报文、报文解码和报文二进制内容。目前大部分此类软件结构都采用这种结构显示。图3-3 解码分析图对于解码主要要求分析人员对协议比较熟悉,这样才能看懂解析出来的报文。使用该软件是很简单的事情,要能够利用软件解码分析来解决问题关键是要对各种层次的协议了解的比较透彻。工具软件只是提供一个辅助的手段。第4章 网络编程工具4.1 Winpacp概述Winpcap是一个免费公开的软件系统。它用于Windows系统下的直接的网络编程。大多数网络应用程序访问网络是通过广泛使用的套接字。这种方法很容易实现网络数据传输,因为操作系统负责底层的细节(比如协议栈,数据流组装等)以及提供了类似于文件读写的函数接口。但是有时,简单的方法是不够的。因为一些应用程序需要一个底层环境去直接操纵网络通信。因此需要一个不使用协议栈支持的原始的访问网络的方法。Winpcap的主要功能在于独立于主机协议(如TCP/IP)而发送和接收原始数据报。也就是说,Winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报,因此,它不能用于QoS调度程序或个人防火墙8。Winpcap适用于下面的开发者:(1)捕获原始数据包。不管这个包是发往本地机,还是其他机器之间的交换包;(2)在数据包被发送到应用程序之前,通过用户定义的规则过滤;(3)向网络发送原始数据包;(4)对网络通信量做出统计。这些功能依赖于Win32系统内核中的设备驱动以及一些动态链接库。Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。什么样的程序需要使用Winpcap,很多不同的工具软件使用Winpcap于网络分析、故障排除、网络安全监控等方面。Winpcap特别适用于下面这几个经典领域:(1)网络及协议分析;(2)网络监控;(3)通信日志记录;(4)traffic generators;(5)用户级别的桥路和路由;(6)网络入侵检测系统(NIDS);(7)网络扫描;(8)安全工具。Winpcap有些方面不能做。它不依靠主机的诸如TCP/IP协议去收发数据包。这意味着它不能阻塞,不能处理同一台主机中各程序之间的通信数据,它只能“嗅探”到物理线路上的数据包。因此它不适用于traffic shapers,QoS调度,以及个人防火墙。Winpcap内部结构:Winpcap是一个Win32平台下用于抓包和分析的系统。包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)。NetworkNPFDevice DriverKernel LevelUser LevelApplicationWpcap.dllPacket.dllPackets图4-1 packet.dll和一个高级的独立于系统的DLL(Wpcap.dll)(1)捕获系统要能得到网络上原始传输数据必须绕过协议栈。这就需要一个模块运行于操作系统内核,与网络设备驱动接口直接打交道。这一部分极端依赖系统,也被认为是一种设备驱动。现有版本有Windows85,98,ME,NT4,2000,Xp。这些驱动提供一些如数据包的捕获与发送这些基本功能,还提供一些高级的可编程的过滤系统和监控引擎。过滤系统可以约束只捕获特定的数据包(比如,只捕获特定主机发送的ARP报文)。监控引擎提供了一种强大但简单的使用机制去获得网络通信的统计荷载数据。(2)捕获系统要让用户程序使用内核提供的功能必须要有一个编程接口。Winpcap提供了两个不同的库:packet.dll和wpcap.dll。packet.dll提供一个底层的API,通过这个API可直接访问网络设备驱动,而独立于Microsoft OS。wpcap.dll是一个高层的强大捕获程序库,与Unix下的libpcap兼容。它独立于下层的网络硬件和操作系统。4.2 WinPcap的结构从硬件支持的角度讲,WinPcap的实现需要将网络接口卡设置为混杂模式(promiscuous),才能接收到共享网段内所有的数据包。WinPcap的基本实现思想就是对底层的捕获设备或其它机制按照操作系统层上的读写文件的操作来实现。主要流程如图4-2所示:图4-2 WinPcap的基本实现流程图以下介绍几个在抓包中要用的基本函数:(1)建立Winpcap捕捉句柄pcap_t *pcap_ open_live(char *device,int snaplen,int promisc, int to_ms,char *ebuf)9;(2)编译过滤规则串int pcap_compile(pcap_t *p,struct bpf_program *fp,char *str,int optimize,_bpf_u_int32 netmask);(3)设置过滤规则int pcap_setfifer(pcap_t *p,struct bpf_program* fp);(4)循环,开始抓包10Int pcap_loop(pcap_t *p,int cnt,pcap_handler callback,u_char* user);与此相似的还有以下这个用来采集和处理包的函数:int pcap_dispatch(pcap_t *p,int cnt,pcap_handler callback,u_c har* user);(5)抓包结束,关闭void pcap_close(pcap_t *p)11;(6)下面的函数允许通过WinPcap代替WindowsAPI向网络发送原始数据包int pcap_sendpacket(pcap_t *p ,u_char *buf,int size);实际上,WinPcap的底层核心也是基于原始套接字的,它的协议驱动提供了健全的抓包机制,所以在直接调用它所提供的函数库进行包的发送和接收,而不必去管底层是如何进行端到端的通信的。4.3 Winpcap的安装使用方法(1)到http:/winpcap.polito.it下载winpcap的安装包和程序员开发包;(2)执行安装包,这样机子就能运行winpcap程序了;(3)解压开发包,在VC的option的include和lib中加入winpcap的include和lib;(4)在程序中加入#include <pcap.h>,#include<remote-ext.h>,然后在工程的setting中加入预定义宏:WPCAP,HAVE_REMOTE,导入wpcap.lib库;(5)就可以编写wpcap程序了。第5章 软件开发5.1 需求规格说明5.1.2 引言本软件是一个教学辅助软件,主要用于辅助网络协议教学工作,在软件设计中注重对ARP协议和WinPcap网络工具的理解。本小节将着重描写该软件的功能及其实现模块,详细说明软件设计过程中使用到的数据的特点和软件的功能要求,并且列举软件中使用到的专业术语。相关专业术语定义:(1)ARP协议:ARP协议是一个位于TCP/IP协议栈中的低层协议,它工作在数据链路层,用于将网络中的协议地址(当前网络中大多是IP地址)解析为本地的硬件地址(MAC地址)。(2)WinPcap:Winpcap是一个免费公开的软件系统,它用于windows系统下的直接的网络编程。(3)Sniffer:Sniffer软件是NAI公司推出的功能强大的协议分析软件。其功能包括捕获网络流量进行详细分析、利用专家分析系统诊断问题、实时监控网络活动、收集网络利用率和错误等。5.1.2 数据描述(1)静态数据硬件类型HW_Type:以太网类型是1;上层协议类型Prot_Type:对IPv4协议,这个值是080016;MAC地址长度HW_Addr_Len:6;IP地址长度Prot_Addr_Len:4;本机ip:sip;本机mac:smac。(2)动态数据目的ip:Targ_Prot_Addr4;目的mac:Targ_HW_Addr6;操作数Flag:1表示请求,2表示应答;校验码:CRC。5.1.3 功能需求1功能划分(1)arp数据包的封装功能;(2)arp数据包的发送功能;(3)捕获arp数据包的功能;(4)解析arp数据包的功能;(5)将数据包内容显示在标准输出上,并同时写入日志文件的功能。2功能描述(1)arp数据包的封装、发送功能首先定义arp数据包的包结构,使用ARPPacket FillPacket(unsigned char *dip,unsigned char *dmac,int flag_packet)封装包内容,返回一个封装好的数据包对象,再使用函数void SendARPPacket(const unsigned char *arppkt)将数据包发送出去。(2)arp数据包的捕获与解析功能首先以混杂模式打开网卡,以接收所有的帧,实现此功能的函数为pcap_open_live(d->name,1000,1,300,errbuf),然后使用函数pcap_compile(adhandle,&fcode, packet_filter,1,netmask)编译过滤器,再设置过滤器pcap_setfilter(adhandle,&fcode),使得网卡只捕获arp数据包,最后一定要释放资源pcap_freealldevs(alldevs)9,即获得的设备列表。5.2 概要设计说明1本课题的工作任务和预期目标是(1)构造ARP包,选择并打开网卡,将ARP包发送出去;(2)获取网络中的ARP数据包;(3)解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件;(4)与Sniffer做对比,测试和评价该软件。2运行环境本程序在Windows xp操作系统下,使用Visual C+6.0和WinPcap网络编程工具完成软件的实现。5.3 详细设计说明1封装功能(1)功能描述定义arp数据包的包结构,使用ARPPacket FillPacket(unsigned char *dip,unsigned char *dmac,int flag_packet)封装包内容,返回一个封装好的数据包对象。(2)输入项目目的Ip:dip;目的mac:dmac;操作数:flag_packet;注:当在IP ADDRESS控件中输入目的ip时,表示要封装的数据包为arp请求包,此时flag_packet=1,dip的值为从IP ADDRESS控件中得到的数据,由于是arp请求包,所以目的mac为全f,通过函数memset(dmac,0xff, sizeof(dmac)初始化为全f的。在捕获arp数据包时,如果捕获到的数据包中的目的ip为本机ip时,本主机要发送给源主机一个arp应答包,所以flag_packet=2,此时参数中的dip指向捕获到的数据包中的ARP帧结构中的源IP,参数中的dmac指向捕获到的数据包中的ARP帧结构中的源MAC。(3)输出项目返回封装好的数据包结构对象arppkt。(4)程序逻辑 图5-1 封装数据包流程图(5)测试要点本功能的主要测试要点是通过用sniffer抓包后查看测试封装的数据包的内容的正确性。2发送功能(1)功能描述将封装好的数据包arppkt通过函数SendARPPacket(const unsigned char*)&arppkt)发送出去。(2)输入项目指向数据包的指针:&arppkt。(3)输出项目通过pcap_sendpacket(adhandle,arppkt,sizeof(ARPPacket)将数据包发送出去。(4)程序逻辑 图5-2 发送数据包流程图(5)测试要点本功能的测试要点是通过sniffer抓包,以测试是否把包发送出去。3捕获功能(1)功能描述通过函数pcap_open_live(d->name,1000,1,300,errbuf)将网卡以混杂模式打开以接收所有的帧,然后再通过函数pcap_compile(adhandle, &fcode,packet_filter,1,netmask)和pcap_setfilter(adhandle, &fcode)分别编译过滤器和设置过滤器,使程序只捕获到所需要的arp数据包。(2)输入项目一次捕获数据包的个数:m_CatchNumber。(3)输出项目在CList控件中输出捕获到的数据包的内容。(4)程序逻辑图5-3 捕获数据包流程图(5)测试要点本功能的测试要点是查看捕获数据包的内容。4解析功能(1)功能描述将数据包内容通过这个函数AddListItem(&arppkt)显示在CList控件上;并通过函数fopen(".LogText.txt","a")打开日志文件,然后通过fwrite(str,232,1,fp)写入日志文件;通过下列循环语句来判断捕获到的请求包中的目的Ip是否为本机ip,for(int i=0;i<4;i+)if(Sipi!=int(arph->arpFrame.Targ_Prot_Addri) break;如果是,则通过函数FillPacket(arph->arpFrame.Targ_Prot_Addr,arph->arpFrame.Send_HW_Addr,2)封装arp应答包,再通过函数SendARPPacket(const unsigned char*)&arppkt)将数据包发送出去。(2)输入项目目的ip:arph->arpFrame.Send_Prot_Addr;目的mac:arph->arpFrame.Send_HW_Addr;指向数据包的指针:&arppkt。(3)输出项目返回封装好的数据包结构对象arppkt。(4)程序逻辑其程序流程图见图5-4。(5)测试要点本功能的测试要点是观察显示到CList控件上的数据包内容是否正确,并查看数据包的内容是否正确的写入日志文件(主要的是由网络字节向向主机字节的转换),由于在解析时需要发送arp应答包,所以也需要测试封装之后的arp应答包内容的正确性。图5-4 解析数据包的程序流程图5.4 代码实现由于本软件主要应用于网络协议编程技术教学工作,其软件的编程实现也非常的重要,通过该节可以了解软件的实现过程中用到的函数的使用方法,这也是网络协

    注意事项

    本文(ARP包的封装、发送、捕获与解析软件开发毕业论文.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开