使用Ping命令获取同一网段计算机的MAC地址

ping命令返回的TTL生存值可以判断系统或路由,TTL=128是windows系统,TTL=64是Linux系统TTL=255是路由器

上图就说明119.75.213.52主机是Linux系统,至于不是64,原因是经过了6台路由器,每经过一个路由器,TTL值在原基础上减1

我们一般理解Ping就是用来测试网络连通性的,它使用ICMP协议来获取返回数据包。其实Ping命令还可以用来获取内网计算的MAC地址。

首先,我们用arp-a来查看一下本地计算机的ARP缓存记录表,一般里面都有一条网关的记录。偶尔会有个别其它机器的记录,但是过一段时间(一般为5分钟)就会过期失效而被删除。

如下:

C:\DocumentsandSettings\Administrator>arp-a

Interface:27.54.xxx.112---0x2

InternetAddressPhysicalAddressType

27.54.xxx.97e0-24-7f-19-33-80dynamic

然后,我们找一台内网确实存在的机器,ping它的ip地址。然后再查看arp-a,你会发现,arp缓存表里面,已经多出来一条记录,这条记录就是这个新的IP和它对应的MAC地址。

执行ping

C:\DocumentsandSettings\Administrator>ping27.54.xxx.113

Pinging27.54.xxx.113with32bytesofdata:

Requesttimedout.

Control-C

^C

结果如下:

C:\DocumentsandSettings\Administrator>arp-a

Interface:27.54.xxx.112---0x2

InternetAddressPhysicalAddressType

27.54.xxx.97e0-24-7f-19-33-80dynamic

27.54.xxx.11300-15-5d-c3-34-1bdynamic

最后,说说原理。在ping命令执行之后,如果目标IP与源IP是同一网段,则它会首先检查一下自己的arp缓存表,如果表中有目标地址的MAC,则不用发送ARP广播。如果arp缓存表中不存在,则系统会发起一个arp广播包,寻找目标IP地址的MAC。找到MAC之后再向目标地址发送ICMP数据包。

注意:只要目标主机在线,不管它是否禁ping,用这种办法都可以获取到对方的MAC地址。

相关推荐