Come trovare l'indirizzo MAC di un computer remoto?


34

Conosco l'indirizzo IP di un host sulla mia LAN. Usandolo, come posso trovare il suo indirizzo MAC (senza doverlo accedere fisicamente)?

Risposte:


46

Se sei su un computer Windows, apri una finestra di comando (Start ... Esegui ... cmd), pingil computer di destinazione in modo da aver preso contatto con esso , quindi emetti il ​​comando arp -aper visualizzare la tabella ARP locale, che elencherà Indirizzi IP e corrispondenti indirizzi MAC, ad es.

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 sei su un sistema basato su Linux, installa l' arp-scanutilità, e quindi da una riga di comando puoi chiedere una scansione della tua rete - nel mio caso:

sudo arp-scan 192.168.200.0/24

Se si utilizza un'interfaccia diversa da Ethernet, ad esempio wireless, è necessario specificarlo, ad esempio

sudo arp-scan -I wlan0 192.168.200.0/24

Se non sai quale interfaccia stai utilizzando, utilizza semplicemente il comando appropriato di seguito.

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

14
Funzionerà solo se un altro host si trova sullo stesso segmento LAN.
AnonymousLurker,

@ Linker3000, qual è il punto di pingprima arp -a?
Pacerier,

4
@Pacerier: il comando arp mostra il contenuto della cache del protocollo di risoluzione dell'indirizzo, che mappa gli indirizzi IP sugli indirizzi hardware (mac). Se non hai contattato l'indirizzo IP di destinazione, non sarà nella cache. Il ping è un modo semplice per contattarlo per aggiungerlo alla cache. È possibile utilizzare qualsiasi comando di rete, è solo ping è facile.
Kevin Jones,

19

Il comando arpingviene fornito con il iputilspacchetto su Linux. Specifica un indirizzo IP su cui eseguire il ping e restituisce l'indirizzo MAC, anche attraverso switch e sottoreti sulla LAN (almeno sulla nostra 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
In Debian ci sono 2 pacchetti: arpinge iputils-arping. Il arpingpacchetto ha funzionato per me, sebbene l'interfaccia di rete sia specificata in minuscolo i:arping -c 1 -i eth0 10.100.10.11
chronos,

8

Provare

getmac /s hostname

o:

getmac /s IP

Per fare ciò è necessario l'accesso come amministratore alla macchina.


Perché non usare semplicemente arp -aciò che non richiede l'accesso come amministratore?
Pacerier,

2

Se hai uno switch gestito o il tuo router ti consente di visualizzare la sua tabella ARP, puoi ottenerlo da lì.

Se il computer per cui si possiede l'IP è online, è possibile eseguire il ping e ottenere il MAC dalla tabella ARP locale.

Una nota generale per gli altri: non è possibile ottenere l'indirizzo MAC per le macchine che si trovano su una LAN diversa poiché in questo caso i protocolli di livello 3 vengono utilizzati per indirizzamento e consegna e MAC è livello 2.


Non gli ho davvero dato istruzioni su "come" farlo.
GregD,

2
Nel caso in cui venga visualizzato sul router, è sufficiente accedere all'interfaccia Web e cercare. Non può essere molto più specifico di quello poiché ogni router ha un layout e un set di pagine diversi per l'amministratore web. Mi sembra un duro -1, soprattutto da quando ho dato più informazioni di MaQleod.
imoatama,

2

usa qualcosa come:

nmap -n -sP 192.168.146.0/24

dopo aver adattato i parametri alla propria configurazione, questo eseguirà la scansione dell'intera sottorete fornendo indirizzi IP e MAC



1

Se sia la macchina che la macchina di destinazione si trovano sulla stessa sottorete, è possibile eseguire il ping per fare in modo che la sua associazione IP⟷MAC sia registrata tramite ARP (Address Resolution Protocol).

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

ad esempio se voglio trovare l'IP di 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

Quindi interrogare la tabella ARP

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

Quindi il MAC del 10.1.135.150 è 8c:ae:4c:f4:4d:e1


0

Finché non vi è alcun gateway che instrada il traffico tra i computer, qualsiasi sniffer ti fornirà queste informazioni.


Grazie per la risposta Ofir. Come domanda secondaria, c'è un modo per farlo se l'host in questione è inattivo? Sì, potrei interrogare la cache ARP del mio host, ma purtroppo attualmente non contiene l'IP che mi interessa. Quindi mi chiedevo se c'è un modo per estrarre in qualche modo la cache ARP di un router intermediario e cercare in quello?
Federico,

0

Puoi sempre consultare la tabella arp sul tuo router (in alcuni casi, il router combina insieme le tabelle di leasing arp e dhcp).


Esattamente quello che sto cercando, ma quali strumenti o comandi mi aiuteranno a farlo?
Federico,

Ma aspetta un minuto, sono sulla stessa LAN, quindi non ci sarà alcun router giusto?
Federico,

Le LAN tipiche avranno almeno un router. A seconda del router, hai diverse opzioni su come ottenerlo. La maggior parte dei router domestici necessari per accedervi utilizzando l'interfaccia Web per trovare tali informazioni, i router più complessi ti consentiranno di accedere a Telnet o eseguire query tramite la porta della console per ottenere tali informazioni.
MaQleod,

0

Un altro modo è:

nbtstat -a 192.168.1.1

(sostituire 192.168.1.1con l'indirizzo desiderato)


Inoltre, se getmacutilizzato su un computer non Windows, otterresti:

ERRORE: il server RPC non è disponibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.