网站大量收购独家精品文档,联系QQ:2885784924

实验报告-ARP地址解析.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告-ARP地址解析

实验一 实验名称: ARP地址解析协议 实验目的 1.掌握ARP原理,学会ARP编程 2.进一步熟悉VC++开发环境 实验要求 查找资料,写出ARP原理和主要使用的API函数. 实验内容 1.ARP原理: 我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。 ? ?? ???ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。 ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。#include packet32.h #include ntddndis.h #include stdio.h #include conio.h void start() { printf(T-ARP --- ARP Tools\n); return ; } void usage() { printf(Attention:\n); printf( 1 You must have installed the winpcap_2.3 or winpcap_3.0_alpha\n); printf( 2 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\IPEnableRouter == 0x1\n\n); return ; } int getmine() { char sendbuf[1024]; int k; ETHDR eth; ARPHDR arp; for(k=0;k6;k++) { eth.eh_dst[k]=0xff; eth.eh_src[k]=0x82; arp.arp_sha[k]=0x82; arp.arp_tha[k]=0x00; } eth.eh_type=htons(ETH_ARP); arp.arp_hdr=htons(ARP_HARDWARE); arp.arp_pro=htons(ETH_IP); arp.arp_hln=6; arp.arp_pln=4; arp.arp_opt=htons(ARP_REQUEST); arp.arp_tpa=inet_addr(219.220.30.138);//htonl(myip); arp.arp_spa=inet_addr(112.112.112.112); memset(sendbuf,0,sizeof(sendbuf)); memcpy(sendbuf,eth,sizeof(eth)); memcpy(sendbuf+sizeof(eth),arp,sizeof(arp)); PacketInitPacket(lppackets,sendbuf,sizeof(eth)+sizeof(arp)); if(PacketSetNumWrites(lpadapter,1)==FALSE) { printf(Warning: Unable to send a packet 2 times\n); } if(PacketSendPacket(lpadapter,lppackets,TRUE)==FALSE) { printf(PacketSendPacket in getmine Error: %d\n,GetL

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档