Como encontrar o endereço MAC de um computador remoto?


34

Eu sei o endereço IP de um host na minha própria LAN. Usando isso, como posso encontrar seu endereço MAC (sem precisar acessá-lo fisicamente)?

Respostas:


46

Se você estiver em uma máquina Windows, abra uma caixa de comando (Iniciar ... Executar ... cmd), pinga máquina de destino para que você tenha feito contato com ela e, em seguida, emita o comando arp -apara exibir sua tabela ARP local, que listará Endereços IP e seus endereços MAC correspondentes, por exemplo,

C:\Users\L3K> arp -a

Interface: 192.168.200.128 --- 0xb
  Internet Address      Physical Address      Type
  192.168.200.1         00-50-7f-c3-5c-88     dynamic
  192.168.200.2         00-50-7f-d1-e1-40     dynamic
  192.168.200.6         00-80-77-dd-a8-6b     dynamic

Se você estiver em um sistema baseado em Linux, instale o arp-scanutilitário e, em uma linha de comando, poderá solicitar uma verificação da sua rede - no meu caso:

sudo arp-scan 192.168.200.0/24

Se você estiver usando uma interface diferente da Ethernet, por exemplo, sem fio, precisará especificar isso, como

sudo arp-scan -I wlan0 192.168.200.0/24

Se você não souber qual interface está usando, basta usar o comando apropriado abaixo.

ifconfig  (For Debian based OS such as Ubuntu)
ip link   (For OS like Arch Linux)

14
Funcionará apenas se outro host estiver no mesmo segmento da LAN.
AnonymousLurker

@ Linker3000, qual é o objetivo de pingantes arp -a?
Pacerier 10/11/2015

4
@Pacerier - o comando arp mostra o conteúdo do cache do Address Resolution Protocol, que mapeia os endereços IP para os endereços de hardware (mac). Se você não entrou em contato com o endereço IP de destino, ele não estará no cache. O ping é uma maneira simples de contatá-lo e adicioná-lo ao cache. Você pode usar qualquer comando de rede, apenas o ping é fácil.
Kevin Jones

19

O comando arpingvem com o iputilspacote no linux. Especifique um endereço IP para executar ping e ele retornará o endereço MAC, mesmo entre comutadores e sub-redes na LAN (pelo menos na nossa LAN).

# arping -c 1 -I eth0 10.100.10.11
ARPING 10.100.10.11 from 10.100.10.25 eth0
Unicast reply from 10.100.10.11 [00:22:68:88:F3:90]  0.594ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

1
No Debian, existem 2 pacotes: arpinge iputils-arping. O arpingpacote funcionou para mim, embora a interface de rede seja especificada com letras minúsculas i:arping -c 1 -i eth0 10.100.10.11
chronos

8

Experimentar

getmac /s hostname

ou:

getmac /s IP

Você precisa de acesso de administrador à máquina para fazer isso.


Por que não usar apenas o arp -aque não precisa de acesso de administrador?
Pacerier 10/11/2015

2

Se você possui um switch gerenciado ou o seu roteador permite visualizar a tabela ARP, é possível obtê-lo a partir daí.

Se o computador para o qual você possui o IP estiver on-line, você poderá fazer o ping e obter o MAC da tabela ARP local.

Uma observação geral para o benefício de outras pessoas: não é possível obter o endereço MAC para máquinas que estão em uma LAN diferente, pois os protocolos da Camada 3 são usados ​​para endereçamento e entrega nesse caso e o MAC é a Camada 2.


Realmente não lhe deu instruções sobre "como" fazer isso.
GregD 13/02/11

2
No caso de visualizá-lo no roteador, basta acessar a interface da Web e procurar. Não pode ser muito mais específico do que isso, já que todo roteador tem um layout e um conjunto de páginas diferentes para seu administrador da web. Parece um duro -1 para mim, especialmente porque eu dei mais informações que o MaQleod.
imoatama

2

basta usar algo como:

nmap -n -sP 192.168.146.0/24

depois de adaptar os parâmetros à sua configuração, isso examinará toda a sua sub-rede, fornecendo endereços IP e MAC



1

Se a sua máquina e a máquina de destino estiverem na mesma sub-rede, você poderá fazer o ping apenas para fazer com que sua associação IP⟷MAC seja registrada via ARP (Address Resolution Protocol).

ping -c1 $IP
arp -n | grep $IP

por exemplo, se eu quiser encontrar o IP de 10.1.135.150:

# ping -c1 10.1.135.150
PING 10.1.135.150 (10.1.135.150) 56(84) bytes of data.
64 bytes from 10.1.135.150: icmp_seq=1 ttl=64 time=1.88 ms

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

Em seguida, consulte a tabela ARP

# arp -n | grep 10.1.135.150
10.1.135.150             ether   8c:ae:4c:f4:4d:e1   C                     eth0

Portanto, o MAC de 10.1.135.150 é 8c:ae:4c:f4:4d:e1


0

Enquanto não houver gateway roteando o tráfego entre os computadores, qualquer sniffer fornecerá essas informações.


Obrigado pela resposta Ofir. Como subquestão, existe uma maneira de fazer isso se o host em questão estiver inativo? Sim, eu poderia consultar o cache ARP do meu próprio host, mas, infelizmente, atualmente não contém o IP no qual estou interessado. Então, fiquei pensando se há alguma maneira de extrair, digamos, o cache ARP de um roteador intermediário e procurar nele?
Frederick

0

Você sempre pode consultar a tabela arp no seu roteador (em alguns casos, o roteador combina as tabelas de concessão arp e dhcp).


Exatamente o que estou procurando, mas que ferramentas ou comandos me ajudarão a fazer isso?
Frederick

Mas espere um minuto, estou na mesma LAN, para que não haja roteador certo?
Frederick

As LANs típicas terão pelo menos um roteador. Dependendo do roteador, você tem diferentes opções de como obtê-lo. Na maioria dos roteadores domésticos, você precisa acessá-lo usando a Interface da Web para encontrar essas informações; os roteadores mais complexos permitem que você faça telnet ou consulte a porta do console para obter essas informações.
precisa saber é o seguinte

0

Outra maneira é:

nbtstat -a 192.168.1.1

(substitua 192.168.1.1pelo endereço desejado)


Além disso, se getmacfor usado em um computador que não seja Windows, você obterá:

ERRO: O servidor RPC está indisponível.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.