使用Ping命令获取同一网段计算机的MAC地址
我们一般理解Ping就是用来测试网络连通性的,它使用ICMP协议来获取返回数据包。其实Ping命令还可以用来获取内网计算的MAC地址。
首先,我们用arp -a来查看一下本地计算机的ARP缓存记录表,一般里面都有一条网关的记录。偶尔会有个别其它机器的记录,但是过一段时间(一般为5分钟)就会过期失效而被删除。
如下:
C:\Documents and Settings\Administrator>arp -a
Interface: 27.54.xxx.112 --- 0x2
Internet Address Physical Address Type
27.54.xxx.97 e0-24-7f-19-33-80 dynamic
然后,我们找一台内网确实存在的机器,ping它的ip地址。然后再查看arp -a,你会发现,arp缓存表里面,已经多出来一条记录,这条记录就是这个新的IP和它对应的MAC地址。
执行ping
C:\Documents and Settings\Administrator>ping 27.54.xxx.113
Pinging 27.54.xxx.113 with 32 bytes of data:
Request timed out.
Control-C
^C
结果如下:
C:\Documents and Settings\Administrator>arp -a
Interface: 27.54.xxx.112 --- 0x2
Internet Address Physical Address Type
27.54.xxx.97 e0-24-7f-19-33-80 dynamic
27.54.xxx.113 00-15-5d-c3-34-1b dynamic
最后,说说原理。在ping命令执行之后,如果目标IP与源IP是同一网段,则它会首先检查一下自己的arp缓存表,如果表中有目标地址的MAC,则不用发送ARP广播。如果arp缓存表中不存在,则系统会发起一个arp广播包,寻找目标IP地址的MAC。找到MAC之后再向目标地址发送ICMP数据包。
注意:只要目标主机在线,不管它是否禁ping,用这种办法都可以获取到对方的MAC地址。