Получить MAC-адрес подключенного, немеченого, ненастроенного, ненастраиваемого устройства Ethernet?
Предположим, у вас есть какая-то встроенная плата с Ethernet, подключенная к порту Ethernet на вашем ноутбуке. Вы ничего не знаете о его конфигурации сети (пока). Вы знаете, что он загружается, но он безголовый и имеет только порт Ethernet. У него нет IP-адреса (пока).
Как вы узнаете MAC-адрес устройства?
Я посмотрел на arp, arping, arp-scan, arpwatch. Единственное, что я обнаружил, - это использование tshark и прочесывание изверга вручную.
2 ответа
Бег равнины tshark или же tcpdump производит грязный вывод, потому что весь трафик, исходящий с вашей машины, тоже регистрируется.
Пытаться
tcpdump -i eth0 -lenq 'ether src not <your_mac>'
-eзахватывает кадр Ethernet-lмгновенно очищает буфер stdout-nне разрешать имена хостов-qбудь тише.- замещать
<your_mac>по MAC-адресу вашего локального интерфейса, например:ip addr show, - очевидно заменить
eth0с правильным интерфейсом. Если вы используете Windows, используйтеtshark -Dперечислить все интерфейсы. - (Изменить) В Linux вы можете использовать
tcpdumpвместо установкиtsharkкоторый требует установки целогоwiresharkпакет.tcpdumpдолжен быть предварительно установлен на Ubuntu (он находится в метапакетеubuntu-standard).
Альтернатива: если вы хотите, чтобы исходные MAC-адреса были только выходными, сделайте (вдохновленный и бесстыдно адаптированный комментариями ОП ниже)
ETH=eth0;MAC=$(cat /sys/class/net/$ETH/address); tcpdump -lenq -i $ETH "ether src not $MAC" | awk '{print $2}'
Лучше всего начать захват без ссылки, а затем подключить кабель.
Я не думаю, что есть способ обнюхивать движение. Причиной сбоя ARP является то, что устройство не имеет IP-адреса и не отвечает на запросы ARP.
Другим возможным решением было бы подключить устройство к управляемому коммутатору и считать таблицу MAC-адресов, но я чувствую, что это не вариант для вас.
В любом случае, чтобы устройство могло быть обнаружено, оно должно отправлять какой- либо трафик Ethernet. Если вам повезет, он отправляет DHCP/Bootp обнаружение, которое вы можете прослушать.
(Правка) Почему хост не держит таблицу MAC, как коммутатор? Ну, это не нужно, потому что это не переключатель. В отличие от коммутатора, решение о том, какой интерфейс выдает кадр Ethernet, принимается заранее в соответствии с таблицей маршрутизации. После поиска ARP IP-пакет помещается в соответствующий кадр.
Конечно, вы можете превратить вашу машину в правильный переключатель L2. Вы можете создать мост между несколькими физическими интерфейсами. Я немного возился с этим, и, как оказалось, вы можете получить хороший стол MAC!
- устанавливать
bridge-utilsиз хранилища. Создайте новый мост Ethernet в
/etc/network/interfacesauto br0 iface br0 inet static # dhcp goes as well address ... network ... bridge_ports eth0 up /sbin/brctl setageing br0 300 up /sbin/brctl stp br0 0Это определяет "мост" (на самом деле нет моста - только один интерфейс) без связующего дерева
stp br0 off, Адреса будут устаревать через 300 лет. Установите это по своему вкусу, но не низко.- Подними мост
ifup br0 Проверьте, если это
brctl showи просмотреть таблицу MACbrctl showmacs br0- Прибыль (?)
Либо вы можете использовать wireshark для захвата всего трафика и фильтрации его по bootp, либо использовать -e опция для вывода информации о канальном уровне и фильтра bootp с помощью tcpdump:
http://www.tcpdump.org/tcpdump_man.html
sudo tcpdump -i any port bootps -e