arp脚本

arp脚本

ARP协议: 地址解析协议,(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

![](http://img.5iqiqu.com/images5/db/db9aee3a12aa547656befaa7969ab6cf.png)

结构ether_header定义了以太网帧首部;结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答;ether_arp结构除了包含arphdr结构外,还包含源主机和目的主机的地址。

图中前面的部分是以太网(这里是Ethernet II类型)的帧头部。其中:

第一个字段是以太网目的MAC地址(广播类型的MAC地址:0XFF-FF-FF-FF-FF-FF,)其目标是网络上的所有主机。

第二个字段是以太网源MAC地址,即请求地址解析的主机MAC地址。

第三个字段是协议类型,这里用0X0806(MAC)代表封装的上层协议是ARP协议协议。

硬件类型:表明ARP协议实现在何种类型的网络上。

协议类型:代表解析协议(上层协议)。这里,一般是0800,即IP。

硬件地址长度:MAC地址长度,此处为6个字节。

协议地址长度:IP地址长度,此处为4个字节。

(op)操作类型:代表ARP协议数据包类型。0表示ARP协议请求数据包,1表示ARP协议应答数据包。

源MAC地址:发送端MAC地址。

源IP地址:代表发送端协议地址(IP地址)。

目标MAC地址:目的端MAC地址(待填充)。

目标IP地址:代表目的端协议地址(IP地址)。

ARP协议应答协议报文和ARP协议请求协议报文类似。不同的是,此时,以太网帧头部的目标MAC地址为发送ARP协议地址解析请求的主机的MAC地址,而源MAC地址为被解析的主机的MAC地址。同时,操作类型字段为1,表示ARP协议应答数据包,目标MAC地址字段被填充以目标MAC地址。

以太网首部总共有14字节数据,arp请求报文总共有28字节。所以一个ARP请求分组或应答分组总共有46字节数据。

而以太网数据包的最小数据为60字节。所以,要对其进行填充。

这里有一些重复信息

1.在以太网的数据帧报头中和ARP请求数据帧中都有发送端的MAC物理地址。

2.在发送ARP请求时,以太网帧头中的目的MAC物理地址为FF-FF-FF-FF-FF-FF,而在ARP帧中的目的MAC处此时为空。

3.对一个ARP请求来说,除ARP中目的端MAC硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本地的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后发送出去。

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一 般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

![](http://img.5iqiqu.com/images3/64/64c798229bfdd1cff36ace8875351090.png)

一个简单的ARP脚本来抓取同一网络中的主机MAC地址:

1#!/bin/bash 2 i=1 3 count=0; 4 while [ $i -le 254 ] 5 do 6 if [ $count -gt 10 ];then 7 count=0 8 sleep 1 9 fi 10 ping -c1 172.16.12.$i & 11 let i++ 12 let count++ 13 done 14

![](http://img.5iqiqu.com/images3/14/144ae4282c2fa6e3f52d6c6e74c4ed80.png)

 

同一网络中主机地址:

![](http://img.5iqiqu.com/images3/1f/1fd39ba9a321f1c53945317f893dbd17.png)

 

 

代码交流 2021