这是一个等效的问题这里对于 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
您可以使用tcpdump
或wireshark
来监控进出该 MAC 地址的网络流量。
我倾向于用来tcpdump
进行数据包日志记录,并且(如果我需要比仅仅读取 tcpdump 输出更好的东西),我会将数据包保存到文件中并将它们加载到 GUI 版本的wireshark 中进行分析。
例如:
MAC='01:02:03:04:05:06'
tcpdump -l -n -i br0 "ether src $MAC or ether dst $MAC"
您可以调整给予 tcpdump 的过滤规则,以排除您不感兴趣的内容(例如端口 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
我相当确定您需要在本地网络上运行名称服务器才能正常工作。