如何通过 MAC 地址找到 LAN 上 Windows PC 的名称?

如何通过 MAC 地址找到 LAN 上 Windows PC 的名称?

这是一个等效的问题这里对于 OSX。通过 MAC 地址查找 LAN 中 WIndows PC 的 NetBIOS 名称(反之亦然)的最简单方法是什么?

可以通过 IP 来完成:

nmblookup -A a.b.c.d
nmblookup pc_netbios_name

有没有类似的MAC地址命令?

答案1

您可以使用下表通过 IP 地址找出最近联系的设备的 MAC 地址arp

ping -c1 -w1 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=63 time=0.785 ms

--- 10.0.2.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.785/0.785/0.785/0.000 ms

arp -n 10.0.2.2
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

您可以将其合并到一个小函数中:

iptoarp() {
    local ip="$1"
    ping -c1 -w1 "$ip" >/dev/null
    arp -n "$ip" | awk '$1==ip {print $3}' ip="$ip"
}

iptoarp 10.10.0.2    # --> 52:54:00:12:35:02

据我所知,没有简单的方法可以从 MAC 地址获取 IP 地址或 NetBIOS 名称。运行arpwatch并扫描来自该设备的聊天日志文件,或者ping依次扫描 LAN 上的每个 IP 地址并查找arp响应。

答案2

您可以使用tcpdumpwireshark来监控进出该 MAC 地址的网络流量。

我倾向于用来tcpdump进行数据包日志记录,并且(如果我需要比仅仅读取 tcpdump 输出更好的东西),我会将数据包保存到文件中并将它们加载到 GUI 版本的wireshark 中进行分析。

例如:

MAC='01:02:03:04:05:06'
tcpdump -l -n -i br0 "ether src $MAC or ether dst $MAC"

您可以调整给予 tcp​​dump 的过滤规则,以排除您不感兴趣的内容(例如端口 80 或 443)和/或包含您感兴趣的内容(例如 tcp 和 udp 端口​​ 137-139)。不过,不要排除太多,因为您永远不知道哪种数据包将为您提供所需的识别信息。

要将数据包日志写入文件以使用wireshark进行分析,请使用tcpdump的-w filename选项及其-s snaplen选项(snaplen为零以捕获完整数据包)

tcpdump -l -n -i br0 -w macdump.log -s 0 "ether src $MAC or ether dst $MAC"

让它运行足够长的时间以获得良好的样本 - 如果目标机器关闭或不活动,这可能需要几个小时。

答案3

arp -n | grep -i YOUR:MAC:HERE | awk '{print $1}' | nslookup

我相当确定您需要在本地网络上运行名称服务器才能正常工作。

相关内容