Как узнать IP, зная MAC
Все команды необходимо выполнять от лица супер-пользователя. Начнем с установки программы arp-scan — она есть в репозиториях практически любого дистрибутива Linux. Именно она позволяет определить IP адреса устройств в сети по их MAC адресам. Для Debian-base дистрибутивов (Ubuntu, Mint. ) команда будет звучать так:
apt-get install arp-scan
Если же вы пользователь дистрибутивов ветки Red Hat (Centos, Fedora. ) выполните:
yum install arp-scan
Немного о том, как работает утилита. Она использует функции протокола ARP, который выполняет обратное действие — позволяет узнать MAC необходимого IP, широковещательно (каждому узлу сети) рассылая запрос содержания: «У кого такой IP — пришлите мне свой MAC». И узел с совпавшим IP отвечает: «Это я, а это мой MAC».
В нашем случае мы знаем MAC, поэтому широковещательная рассылка не требуется, а вот IP не знаем — будем перебирать их из заданного диапазона адресов, или всей нашей сети. Рано или поздно IP совпадет и узел ответит тем же сообщением.
arp-scan -T aa:20:5c:64:71:bf 192.168.1.0/24 | grep aa:20:5c:64:71:bf
В данном примере сообщения будут отправлены узлу с MAC-адресом aa:20:5c:64:71:bf, для перебора будет использована сеть 192.168.1.0/24. /24 — это маска подсети, указывающая на диапазон перебираемых IP адресов: 192.168.1.1-192.168.1.254. Диапазон можно указывать и в таком формате. GREP в конце команды позволяет отфильтровать вывод только для данного MAC адреса. Это связано с тем, что если ваш коммутатор еще не успел «обучиться» данному MAC адерсу, он разошлет сообщения широковещательно (всем узлам), и некоторые узлы с совпавшем IP адресом из диапазона перебираемых адресов могут решить, что это сообщение им, и подзасорят вывод нашей команды.
Помимо вышеописанной задачи — «Узнать IP по MAC адресу», данная утилита используется для составления списка IP адресов сети в связке с их MAC адресами. В этом случае MAC адрес узла через ключ «-T» указывать не нужно — пускай сообщения идут всем узлам сети широковещательно:
Вывод команды будет содержать список всех узлов с IP из указанного диапазона и их MAC-адреса
Как узнать ip по mac-адресу?
Есть набор mac-адресов некоторого количества PC, как под Windows или Linux узнать их IP-адреса, если соединения с этими компьютерами ни разу не происходило и arp пуст?
p.s. Можно предложить вариант как для Linux так и для Windows, под рукой есть обе ОС
- Вопрос задан более трёх лет назад
- 195846 просмотров
Комментировать
Решения вопроса 2
Можно попробовать вот так (для Windows, в консоли)
Запустите пинг на бродкастовый адрес вашей сети.
Например если у вас сеть 192.168.0.0 с маской 255.255.255.0, ваш адрес тогда будет 192.168.0.1-254, а бродкастовый — самый последний 192.168.0.255. Вот именно его нужно попинговать, потом дать команду
arp -a
Увидите все ip адреса в вашей сети с их маками. Ну а там уже найдете нужный.
Определить IP адрес по MAC адресу
Эта статья рассказывает, как узнать, какой IP адрес имеет сетевое устройство с известным MAC адресом.
Этот вопрос чаще возникает для сетевых устройств, таких как сетевые принтеры или сетевые телекамеры. Например, мы подключили сетевой принтер или сетевую телекамеру к сети с DHCP и хотим узнать IP адрес этого устройства, но доступа к статистике DHCP сервера нет. Или на устройстве задан статический IP адрес, но мы не помним, какой именно. При этом мы знаем MAC адрес (написан на корпусе). Этот вопрос бывает актуален и для компьютеров, особенно к которым нет физического доступа.
Консольные команды определения IP адреса представлены на картинке, а далее описано, почему команды должны быть именно такими и как они работают, также приведён пример bat файла:
Способ работает на любом Windows компьтере в сети и не требует административных полномочий. Используется информация ARP кэша, производится чтение списка и поиск нужной записи.
Просмотр ARP кэша
Командная строка просмотра ARP кэша с поиском записи по определённому MAC адресу:
arp -a | find /i "01-23-45-67-89-ab"
Но, выполнив эту команду, мы можем не увидеть наше устройство.
Это происходит потому, что ARP кэш в Windows хранит записи от 15 до 45 секунд, начиная с Windows Vista: Address Resolution Protocol (ARP) caching behavior in Windows Vista TCP/IP implementations.
Наполнение ARP кэша
Поэтому перед чтением кэша необходимо заполнить его полным списком узлов сети. Это можно сделать, запустив ping на все узлы сети, например, если у нас сеть 192.168.1.1 / 255.255.255.0, то:
for /L %a in (1,1,254) do @start /b ping 192.168.1.%a -n 2 > nul
Важно, чтобы запуск ping’ов происходил как do @start /b ping, тогда
- все ping’и запускаются почти одновременно, и время выполнения цикла составит всего несколько секунд. Если написать просто do ping, т.е. без start, то цикл будет выполняться более 10 минут.
- значок @ перед start предотвращает вывод 254 команд ping
После завершения ping’ов нужно сразу запускать arp -a. Пауза более 15 секунд может привести к тому, что какие-то записи будут удалены из кэша.
Пакетный bat/cmd файл
То же решение в виде командного файла ip_by_mac.cmd с передачей MAC адреса в виде параметра будет выглядеть так:
@echo off if "%1" == "" echo no MAC address & exit /b 1 for /L %%a in (1,1,254) do @start /b ping 192.168.1.%%a -n 2 > nul ping 127.0.0.1 -n 3 > nul arp -a | find /i "%1"
ip_by_mac 01-23-45-67-89-ab
192.168.1.221 01-23-45-67-89-ab динамический
Ограничения
Способ работает только для тех узлов, которые отвечают на ping (icmp запросы), т.е. если у компьютера icmp echo отключен, то этот командный файл не определит его IP адрес.
Остается неудобство в том, что требуется явно указывать подсеть, а так же ограничение на подсеть – командный файл работает только для сетей 255.255.255.0.
Пример выполнения команд (видео)
Файлы для скачивания
Этот командный файл, как и другие скрипты, можно скачать по ссылке
Узнать IP по MAC
Очень простой сабж. Есть mac, как это сделать на простой клиентской машине в локальной сети? Если есть способ — подойдёт ли и для internet?

sda00 ★★★
19.07.07 22:22:58 MSD

Re: Узнать IP по MAC
Можешь сделать броадкаст пинг а потом посмотреть таблицу arp
ping 192.168.255.255
arp -a
qsloqs ★★
( 19.07.07 22:38:12 MSD )
Ответ на: Re: Узнать IP по MAC от qsloqs 19.07.07 22:38:12 MSD

Re: Узнать IP по MAC
не катит. но идея неплоха, спасибо.
sda00 ★★★
( 19.07.07 22:57:23 MSD ) автор топика

Re: Узнать IP по MAC
на основе пинга и арп можна сварганить такой скриптец: for ((i=$4; i&1 >/dev/null /sbin/arp -a $1.$2.$3.$i done запускаем так: findmac.sh 192 168 1 0 10 на выходе получаем маки с диапазона 192.168.1.0-10
dGhost ★★★
( 20.07.07 00:05:38 MSD )
Ответ на: Re: Узнать IP по MAC от dGhost 20.07.07 00:05:38 MSD

Re: Узнать IP по MAC
огромное спасибо, но это не вариант. те в моём случае (я совершенно случайно нашёл этот ип) пинг не проходит (ответа не будет). есть ли ещё какие принципиально новые способы?
(я нашёл ип, так как разбирался с мультикастом и у нас на 1-м ипе висит туева хуча этих «ретрансляторов» — то есть свезло). вопрос ребром — может ли сервер сам выдать каким-то образом arp таблицу сети/сегмента?
sda00 ★★★
( 20.07.07 00:22:17 MSD ) автор топика
Ответ на: Re: Узнать IP по MAC от sda00 20.07.07 00:22:17 MSD

Re: Узнать IP по MAC
Для этого nmap есть. И нет никакой разницы, отвечает хост на пинг или нет, ибо на arp-запрос он все равно ответит.
Узнать IP по MAC — задача неоднозначная, так как IP на одном МАС может быть много. Тут только сканить, а затем arp -an. И никакой пинг по широковещательным адресам Вам не поможет.
Посмотрите еще на arpwatch
И еще. Я дико извиняюсь, но понимаете ли Вы, что это все относится к одному физическому сегменту, в котором и находится Ваш хост.
ansky ★★★★★
( 20.07.07 02:45:32 MSD )
Ответ на: Re: Узнать IP по MAC от ansky 20.07.07 02:45:32 MSD

Re: Узнать IP по MAC
>Для этого nmap есть
как мне указать nmap-y цель по MAC адресу?
>Я дико извиняюсь, но понимаете ли Вы, что это все относится к одному физическому сегменту, в котором и находится Ваш хост
даже если мы снифаем трафф в promisc.
это arpwatch в пределах сегмента, что очевидно впрочем. нужен какой-то аналог ping-а, но по MAC адресу.
sda00 ★★★
( 20.07.07 03:54:45 MSD ) автор топика
Ответ на: Re: Узнать IP по MAC от sda00 20.07.07 03:54:45 MSD

Re: Узнать IP по MAC
>>Я дико извиняюсь, но понимаете ли Вы, что это все относится к одному физическому сегменту, в котором и находится Ваш хост
>даже если мы снифаем трафф в promisc.
‘s/физическому сегменту/широковещательному домену/’
Даже если 🙂 promisc ничего не меняет. Все arp-запросы и прочий не IP-трафик через маршрутизатор не ходит.
