Получить 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/interfaces
auto 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