解析ARP数据包---计算机网络课程设计_第1页
解析ARP数据包---计算机网络课程设计_第2页
解析ARP数据包---计算机网络课程设计_第3页
解析ARP数据包---计算机网络课程设计_第4页
解析ARP数据包---计算机网络课程设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华南农业大学信息学院课程设计课程设计题目:解析ARP数据包计划学时:2周所属课程名称:计算机网络课程设计开设时间: 2010学年第一学期 授课班级: 07软件R3指导教师:*学生姓名:*学 号:* 信息学院评分标准封面格式(5)正文格式(10)题目理解准确度(30)程序设计质量(30)设计报告质量(25)得分总分解析ARP数据包摘要:本文首先介绍了地址解析协议ARP的概念,详细说明了ARP的工作原理,ARP攻击的基本原理,详细分解了ARP数据包的各个字段含义,ARP协议工作的流程和这次课程设计的意义与目的;接着描述了此实验的总体设计;然后是详细设计,分析讲解了实现代码的主要部分;最后还讲了做这

2、次课程设计的个人总结,谈了一些个人观点。关键字:ARP数据包、工作原理、ARP攻击、解析、截获、功能1 引言1.1背景首先,我们来了解一下什么是ARP,ARP的工作原理以及ARP攻击所带来的危害。1.1.1什么是ARP地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM和FDDIIP网络中使用。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为

3、数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 另外,当发送主机和目的主机不在同一个局域网中时,即便知

4、道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)。1.1.2ARP工作原理在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。 以主机A(209.0.0.5)向主机B(209.0.0.6)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了

5、目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播,A主机MAC地址是“主机A的MAC地址”,这表示向同一网段内的所有主机发出这样的询问:“我是209.0.0.5,我的硬件地址是00-00-C0-15-AD-18"主机A的MAC地址".请问IP地址为209.0.0.6的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“209.0.0.6的MAC地址是08-00-2B-00-EE-0A”。这样,主机A就知道了主机B的MAC地址,它就可以向

6、主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。(如图1所示)ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间

7、人攻击。 ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障图1 ARP工作原理 1.1.3ARP攻击ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所

8、在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。初期:这种有目的的发布错误ARP广播包的行为,被称为ARP欺骗。ARP欺骗,最初为黑客所用,成为黑客窃取网络数据的主要手段。黑客通过发布错误的ARP广播包,阻断正常通信,并将自己所用的电脑伪装成别人的电脑,这样原本发往其他电脑的数据,就发到了黑客的电脑上,达到窃取数据的目的。 中期:ARP恶意攻击。后来,有人利用这一原理,制作了一些所谓的“管理软件”,例如网络剪刀手、执法官、终结者等,这样就导致了ARP恶意攻击的泛滥。往往使用这种软件的人,以恶意破坏为目的,多是为了让别人断线,逞一时之快。特别是在网吧中,或者因为商业竞争的目的、

9、或者因为个人无聊泄愤,造成恶意ARP攻击泛滥。随着网吧经营者摸索出禁用这些特定软件的方法,这股风潮也就渐渐平息下去了。 现在:综合的ARP攻击。最近这一波ARP攻击潮,其目的、方式多样化,冲击力度、影响力也比前两个阶段大很多。首先是病毒加入了ARP攻击的行列。以前的病毒攻击网络以广域网为主,最有效的攻击方式是DDOS攻击。但是随着防范能力的提高,病毒制造者将目光投向局域网,开始尝试ARP攻击,例如最近流行的威金病毒,ARP攻击是其使用的攻击手段之一。 相对病毒而言,盗号程序对网吧运营的困惑更大。盗号程序是为了窃取用户帐号密码数据而进行ARP欺骗,同时又会影响的其他电脑上网。1.1.4 ARP包

10、的格式ARP(同RARP)使用相同的报头结构,如图2所示。图2 ARP(RARP)包头结构硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方IP(0-1字节):源主机硬件

11、地址的前2个字节;发送方IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;目的IP(0-3字节):目的主机的IP地址。1.1.5 ARP协议工作流程1. 首先,每台主机都会在自己的ARP缓冲区 ( ARP Cache )中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播

12、包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数

13、据包,表示ARP查询失败。1.2意义与目的这次课程设计的意义与目的主要有以下两点:1、 我们已经学习了一个学期的计算机网络课程,在网络协议体系结构中,不管采用哪一种划分形式,网络层都是作为独立的一层,可见其在网络通信中的重要性。在网络层中有对重要协议:ARP/RARP,用于网卡物理地址(MAC地址)与网络协议地址(IP地址)之间的转换。通过这个课程设计,加深对课本知识的理解与掌握,同时自己亲自动手实现,对知识的领悟能够起到事半功倍的效果。2、 认识ARP地址解析协议的工作原理,了解ARP攻击(ARP欺骗)的实现原理,找到解决ARP攻击的有效解决方案,为局域网计算机提供一个安全的运行环境,以及在

14、不小心被攻击时知道如何处理。2 总体设计 2.1 系统或算法框架设计1. 得到网络驱动.利用PCAP提供的PCAP_findalldevs( )函数实现此功能.2. 选择一块网卡,并判断其是否可用.3. 编辑设置过滤器,使其只捕获ARP包.过滤函数PCAP_complie和PCAP_setfilter.设置函数为PCAP_setfilter( ).4. 开始捕获数据包并进行处理.使用PCAP_next_ex( )函数实现此功能.2.2功能设计通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。程序的具体要求如下所示:1)以命令行的形式运行,如下

15、所示:arp1.exelog.txt其中,arp1.exe为程序名;log.txt为日志文件名。2)程序输出内容如下所示:源IP地址源MAC地址目的IP地址目的MAC地址操作时间各部分的说明如下所示:1、源IP地址:输出ARP消息格式中的源IP地址字段。2、源MAC地址:输出ARP消息格式中的源物理地址字段3、目的IP地址:输出ARP消息格式中的目的IP地址字段。4、目的MAC地址:输出ARP消息格式中的目的物理地址字段。5、操作:输出ARP消息格式中的操作字段,若为ARP请求,则为1,若为ARP应答,则为2。6、时间:该ARP包产生的时间。3)当程序接收到键盘输入Ctrl十C时退出。2.3

16、平台设计Windows 7, Microsoft Microsoft Visual C+ 6.0 简体中文版, WinPcap_4_1_2, WpdPack_4_1_22.4 数据结构的设计struct ARPPACKETunsigned short hdtyp; /硬件地址unsigned short protyp; /协议类型unsigned char hdsize; /硬件地址长度unsigned char prosize; /协议地址长度unsigned short op; /操作值: ARP/RARPu_char smac6; /源MAC地址u_char sip4; /源IP地址u_

17、char dmac6; /目的MAC地址u_char dip4; /目的IP地址;3 详细设计3.1 泵程序代码所使用的头文件以及链接库,其中头文件pcap.h 和链接库Ws2_32.lib、wpcap.lib都不是Microsoft Microsoft Visual C+ 6.0 中提供的。#include < Winsock2.h > #pragma comment( lib , "Ws2_32.lib" ) /使用ntohs( )函数 , 转换2B/4B的数据#pragma comment( lib , "wpcap.lib" )#in

18、clude "pcap.h" /需要另外导入,具体步骤见Winpcap使用说明#include < fstream.h > #include < iomanip.h > /格式化输出#include < conio.h > /使用_getch( )3.2 ARP包头结构体struct ARPPACKETunsigned short hdtyp; /硬件地址unsigned short protyp; /协议类型unsigned char hdsize; /硬件地址长度unsigned char prosize; /协议地址长度unsign

19、ed short op; /操作值: ARP / RARPu_char smac6; /源MAC地址u_char sip4; /源IP地址u_char dmac6; /目的MAC地址u_char dip4; /目的IP地址;3.3自定义处理包函数,在使用前必须申明/pcap_pkthdr是winpcap加入的/pkt_data表示MAC帧的起始位置/out是输出流void packet_handler( const pcap_pkthdr *header, const u_char *pkt_data , ostream& out );3.4主函数。本程序只能在命令行下运行,并且还带两

20、个参数,第一个参数即是本程序可执行文件名,第二个参数便是文件名,用来记录程序执行时产生的结果。程序首先判断程序启动时是否有两个参数,若不是两个,则输出提示信息后退出。然后获取网络设备列表,选择一个网卡后,以混杂模式打开网卡,接受所有的帧,接着获取子网掩码和设置过滤器,以确保只接收ARP数据包。最后一直循环等到获取ARP数据包,报获取到的数据包分解后按照一定的格式同时输出到命令行窗口和指定文件。(具体请见源代码)3.4 自定义处理包函数,这个函数主要是用来截获ARP数据包(具体请见源代码)4 总结4.1 工作小结这是我上完计算机网络课程以来的第一次课程设计,通过这次试验,我了解到:在网络协议体系

21、结构中,不管采用哪一种划分形式,网络层都是作为独立的一层,可见其在网络通信中的重要性。在网络层中有对重要协议:ARP/RARP,用于网卡物理地址(MAC地址)与网络协议地址(IP地址)之间的转换。通过这个课程设计,我加深了对课本知识的理解与掌握,同时自己亲自动手实现,对课本知识有了更加深刻的领悟。另外,我还认了识ARP地址解析协议的工作原理,了解ARP攻击(ARP欺骗)的实现原理,找到了解决ARP攻击的有效解决方案。最重要的一点是,这次试验暴露出我对这门课程的学习的许多问题,很多重要知识都已经忘得差不多了,以后要注意学习。4.2 存在的问题1、本程序是在命令行模式下运行,界面不美观,并且只有在输入正确参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论