Как узнать MAC-адрес удаленного компьютера?


34

Я знаю IP-адрес хоста в своей локальной сети. Используя это, как я могу найти его MAC-адрес (без физического доступа к нему)?

Ответы:


46

Если вы работаете на компьютере с Windows, откройте окно командной строки (Пуск ... Выполнить ... cmd), pingцелевой компьютер, чтобы вы установили с ним контакт , а затем arp -aвведите команду для просмотра локальной таблицы ARP, в которой будет показан список IP-адреса и их соответствующие MAC-адреса, например,

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

Если вы работаете в системе на основе Linux, установите arp-scanутилиту, а затем из командной строки вы можете запросить сканирование вашей сети - в моем случае:

sudo arp-scan 192.168.200.0/24

Если вы используете интерфейс, отличный от Ethernet, скажем, беспроводной, вам необходимо указать его, например:

sudo arp-scan -I wlan0 192.168.200.0/24

Если вы не знаете, какой интерфейс используете, просто используйте соответствующую команду ниже.

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

14
Будет работать, только если другой хост находится в том же сегменте локальной сети.
AnonymousLurker

@ Linker3000, какой смысл pingраньше arp -a?
Pacerier

4
@Pacerier - команда arp показывает содержимое кэша протокола разрешения адресов, который отображает IP-адреса на аппаратные (mac) адреса. Если вы не связались с целевым IP-адресом, он не будет в кеше. Ping - это простой способ связаться с ним, чтобы добавить его в кеш. Вы можете использовать любую сетевую команду, это просто ping.
Кевин Джонс

19

Команда arpingпоставляется с iputilsпакетом на Linux. Укажите IP-адрес для ping, и он возвращает MAC-адрес даже через коммутаторы и подсети в локальной сети (по крайней мере, в нашей локальной сети).

# 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
В Debian есть 2 пакета: arpingи iputils-arping. arpingПакет работал для меня, хотя сетевой интерфейс указан с строчными i:arping -c 1 -i eth0 10.100.10.11
Chronos

8

Пытаться

getmac /s hostname

или:

getmac /s IP

Вам нужен доступ администратора к машине, чтобы сделать это.


Почему бы просто не использовать, arp -aкоторый не нуждается в доступе администратора?
Pacerier

2

Если у вас есть управляемый коммутатор или ваш маршрутизатор позволяет вам просматривать его таблицу ARP, вы можете получить его оттуда.

Если компьютер, для которого у вас есть IP-адрес, подключен к сети, вы можете пропинговать его и получить его MAC из локальной таблицы ARP.

Общее замечание ради других: невозможно получить MAC-адрес для машин, которые находятся в другой локальной сети, поскольку в этом случае для адресации и доставки используются протоколы уровня 3, а MAC - это уровень 2.


На самом деле не дал ему никаких инструкций о том, «как» сделать это.
GregD

2
В случае просмотра его на роутере, вы просто заходите в веб-интерфейс и охотитесь. Не может быть более конкретным, чем это, так как каждый маршрутизатор имеет свою разметку и набор страниц для своего веб-администратора. Мне это кажется грубым -1, тем более что я дал больше информации, чем MaQleod.
Имоатама

2

просто используйте что-то вроде:

nmap -n -sP 192.168.146.0/24

после адаптации параметров к вашей настройке будет сканироваться вся ваша подсеть с указанием адресов IP и MAC


1

Вы можете использовать такую ​​утилиту, как http://trogonsoftware.com/trogon-mac-scanner.html или другой сканер адресов ip \ mac, чтобы сканировать сеть на наличие адресов удаленных компьютеров в локальной сети.


Есть также много бесплатных опций ... поиск "IP-сканер"
JoshP

1

Если и ваша машина, и целевой компьютер находятся в одной подсети, вы можете просто пропинговать ее, чтобы ее ассоциация IP-MAC была зарегистрирована через протокол разрешения адресов (ARP).

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

например, если я хочу найти IP 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

Затем запросите таблицу ARP

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

Таким образом, MAC 10.1.135.150 является 8c:ae:4c:f4:4d:e1


0

Пока нет шлюза, маршрутизирующего трафик между компьютерами, любой перехватчик предоставит вам эту информацию.


Спасибо за ответ Офир. Как подвопрос, есть ли способ сделать это, если рассматриваемый хост не работает? Да, я мог бы запросить кэш ARP моего собственного хоста, но, к сожалению, в настоящее время он не содержит интересующего меня IP-адреса. Поэтому мне было интересно, есть ли способ каким-то образом извлечь, скажем, кэш ARP промежуточного маршрутизатора и посмотреть на него?
Фредерик

0

Вы всегда можете обратиться к таблице arp на своем маршрутизаторе (в некоторых случаях маршрутизатор объединяет таблицы аренды arp и dhcp).


Именно то, что я ищу, но какие инструменты или команды помогут мне сделать это?
Фредерик

Но подождите, я нахожусь в той же локальной сети, так что не будет никакого маршрутизатора, верно?
Фредерик

Типичные локальные сети будут иметь хотя бы один маршрутизатор. В зависимости от роутера у вас есть разные варианты как его получить. Большинству домашних маршрутизаторов вам необходим доступ к нему через веб-интерфейс, чтобы найти эту информацию, более сложные маршрутизаторы позволят вам подключиться или запросить через консольный порт, чтобы получить эту информацию.
MaQleod

0

Другой способ это:

nbtstat -a 192.168.1.1

(заменить 192.168.1.1нужным адресом)


Кроме того, если getmacиспользуется на компьютере, отличном от Windows, вы получите:

ОШИБКА: сервер RPC недоступен.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.