これは同等の質問ですここ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
デバイスでチャットログファイルを実行してスキャンするか、ping
LANの各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
これが機能するには、ローカルネットワークで実行されているネームサーバーが必要であると確信しています。