Найти MAC-адрес через прямое Ethernet-соединение
Я хочу найти MAC-адрес устройства. Пример. Подключите сетевой кабель от моей машины linux к целевому устройству, отправьте некоторую команду, получите MAC.
Лучшее решение, которое у меня есть сейчас, - это подключить маршрутизатор к устройству, дождаться его выдачи аренды dhcp, подключиться к маршрутизатору через ssh и зачитать таблицу аренды.
Я понимаю, что серверы dhcp ждут запроса от устройства, а затем выдают аренду, но я хотел бы активно отправить некоторый запрос на устройство и получить MAC из ответа напрямую.
Самая большая проблема заключается в том, что без запуска сервера dhcp я не могу связаться с устройством. Можно ли это сделать через нижний слой? Может быть, запрос ARP?
Благодарю!
Если вы используете linux, есть wirehark (или версия CLI tshark):
sudo apt-get install tshark
sudo tshark -i eth0
Вы увидите каждый пакет, который переносит ваш ноутбук или подключенное устройство через этот интерфейс Ethernet. Предполагая, что устройство включено, вы, вероятно, увидите MAC-адрес, который вы ищете где-то во всем сетевом протоколе низкого уровня. Если вы не сильно извергаетесь, попробуйте повторно подключить кабель Ethernet. (Извините, я пришел сюда, чтобы найти лучший ответ сам)
Сначала запустите другое устройство и запустите команду
arp -a
Вы можете видеть MAC-адрес устройства, которое вы только пинговали.
Если вы не знаете MAC-адрес устройства, единственный способ связаться с ним - это передача какого-либо рода. Это означает, что на хосте есть какое-то программное обеспечение, которое прослушивает такую трансляцию, которая ответит. Так как хосты (используя ARP) разрешают MAC-адреса в локальной сети с IP-адреса. ARP не будет работать для вас, если вы не знаете IP-адрес.
Если у вас просто есть устройство без поддержки протокола, вы застряли.
Мы решили это, слушая пакеты из целевой машины и извлекая адрес mac из первого полученного пакета.
Спасибо всем за ответы!