Предположим, у вас есть какая-то встроенная плата с Ethernet, подключенная к порту Ethernet на вашем ноутбуке. Вы ничего не знаете о его конфигурации сети (пока). Вы знаете, что он загружается, но он без головы и имеет только порт Ethernet. У него нет IP-адреса (пока).
Как узнать MAC-адрес устройства?
Я посмотрел на arp, arping, arp-scan, arpwatch. Единственное, что я обнаружил - это использование tshark и прочесывание выпуклости вручную.
Рабочая плоскость 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
перечислять все интерфейсы.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, принято заранее согласно таблице маршрутизации. Пакет IP перенесен в соответствующий кадр после поиска ARP.
Несомненно, можно превратить машину в надлежащий переключатель 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
и просмотрите таблицу MAC
brctl showmacs br0
Или Вы можете использовать wireshark, чтобы захватить весь трафик и отфильтровать его протоколом BOOTP или использованием -e
выбор напечатать информацию о слое связи и фильтр протокола BOOTP с tcpdump:
http://www.tcpdump.org/tcpdump_man.html
sudo tcpdump -i any port bootps -e
"$(cat list_of_files.txt)"
– Sergiy Kolodyazhnyy
3 January 2017 в 20:51