Como posso descobrir o nome de um PC Windows na minha LAN por endereço MAC?

2

Esta é uma pergunta equivalente solicitada aqui para o OSX. Qual é a maneira mais fácil de descobrir um nome NetBIOS de um PC do Windows em minha LAN por endereço MAC e vice-versa?

Pode ser feito por IP com:

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

Existe um comando similar para o endereço MAC?

    
por Hrvoje T 29.10.2015 / 08:24

3 respostas

3

Você pode descobrir o endereço MAC de um dispositivo recentemente contatado por seu endereço IP usando a tabela 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

Você pode mesclar isso em uma pequena função:

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

Não conheço nenhuma maneira fácil de obter um endereço IP ou nome NetBIOS de um endereço MAC. Execute arpwatch e verifique o arquivo de log para bate-papo desse dispositivo ou ping de cada endereço IP em sua LAN e procure a resposta arp .

    
por 29.10.2015 / 08:40
1

Você pode usar tcpdump ou wireshark para monitorar o tráfego de rede de e para esse endereço MAC.

Eu costumo usar tcpdump para fazer o registro de pacotes e (se eu precisar de algo um pouco melhor do que apenas ler a saída do tcpdump) salvei os pacotes em um arquivo e carreguei-os na versão GUI do wireshark para análise.

Por exemplo:

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

Você pode ajustar a regra de filtragem dada ao tcpdump para excluir itens nos quais você não está interessado (por exemplo, porta 80 ou 443) e / ou incluir coisas que lhe interessam (por exemplo, portas tcp e udp 137-139). Não exclua muito, porém, porque você nunca sabe que tipos de pacotes lhe darão as informações de identificação que você procura.

Para gravar o log de pacotes em um arquivo para análise com o wireshark, use a opção -w filename do tcpdump E sua opção -s snaplen (com snaplen zero para capturar pacotes completos)

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

Deixe a execução longa o suficiente para obter uma boa amostra - o que pode levar horas se a máquina de destino estiver desligada ou inativa.

    
por 29.10.2015 / 11:04
0

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

Tenho quase certeza de que você precisa estar executando um nome na sua rede local para que isso funcione.

    
por 29.10.2015 / 08:38

Tags