MACアドレスでLAN上のWindows PCの名前を見つける方法は?

MACアドレスでLAN上のWindows PCの名前を見つける方法は?

これは同等の質問ですここOSX用。 LAN上のWIndows PCのNetBIOS名をMACアドレス(またはその逆)で見つける最も簡単な方法は何ですか?

これは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デバイスでチャットログファイルを実行してスキャンするか、pingLANの各IPアドレスを順番にスキャンしてarp応答を見つけます。

答え2

tcpdumpまたは、wireshark対応するMACアドレスに着信および発信するネットワークトラフィックを監視するために使用できます。

私はこれをパケットロギングに使用する傾向がありtcpdump(tcpdump出力を読み取るよりも優れている必要がある場合)、パケットをファイルに保存し、分析のためにWiresharkのGUIバージョンにロードします。

たとえば、

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

興味のないコンテンツ(ポート80や443など)を除外したり、興味のあるコンテンツ(tcpやudpポート137-139など)を含めるようにtcpdumpに提供されているフィルタリングルールを調整したりできます。ただし、どのパケットが必要な識別情報を提供するのかわからないため、あまり除外しないでください。

Wiresharkを使用して分析するためにファイルにパケットログを書き込むには、その-w filenameオプション-s snaplenと一緒にtcpdumpのオプションを使用します(パケット全体をキャプチャするにはsnaplenが0です)。

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

これが機能するには、ローカルネットワークで実行されているネームサーバーが必要であると確信しています。

関連情報