Как узнать MAC-адрес компьютеров в сети?
Мне нужно обнаружить машины, которые доступны только с установленным BIOS (без операционной системы).
И мне нужно найти MAC-адрес компьютеров, которые работают.
Как узнать MAC-адрес компьютеров в сети?
Мне нужно обнаружить машины, которые доступны только с установленным BIOS (без операционной системы).
И мне нужно найти MAC-адрес компьютеров, которые работают.
Ответы:
Вам нужно будет получить доступ к информации, доступной на ваших управляемых коммутаторах. Если у вас есть неуправляемая сеть, я не вижу способа сделать это.
Предполагается, что целевые компьютеры поддерживают Wake-on-LAN (WoL). В этом случае устанавливается связь с сервером (посмотрите на светодиодный индикатор), и сетевая карта прослушивает трансляции WoL. AFAIK, карта не отвечает ни на что в этом состоянии. Если нет WoL, карта, скорее всего, выключена (индикатор связи отсутствует) и не будет работать вообще.
Если машины не включены, это невозможно.
Если они включены, я думаю, это также невозможно, так как вам нужен минимальный сетевой стек, чтобы хотя бы отвечать на такие вещи, как запросы ARP и т. Д., Который не работает без установленной ОС.
Что может сработать (я не знаю и не могу сейчас проверить), так это то, что сетевой адаптер и коммутатор обмениваются данными, когда сетевой адаптер подключен или включен, и коммутатор таким образом узнает MAC-адрес. Если это так, вам понадобится управляемый коммутатор и запросите его для подключенных MAC-адресов.
Вы можете использовать Nmap для очень быстрого сканирования ARP, используя следующий синтаксис.
nmap -sn -PR -oX nmap.xml 192.168.1.0/24
При этом используется пинг ARP (только запросы ARP, без ICMP, UDP или TCP, без сканирования портов) для сканирования указанного диапазона IP-адресов и записи ответов IP-адрес / MAC-адрес / имя хоста в файл XML (nmap.xml).
Я написал сценарий PowerShell, который манипулирует файлом XML и выплевывает файл CSV . Это также отфильтровывает неработающие хосты. Я считаю, что это легче использовать в Excel, чем файл XML. Вот сценарий, если кому-то интересно.
# Define nmap input file
$NmapXMLFile = ".\nmap.xml"
# Initialize object array
$HostItems = @()
# Initialize index
$x = 0
# Load XML
[xml]$NmapXML = Get-Content $NmapXMLFile
# Loop through XML
ForEach ($HostNode in $NmapXML.nmaprun.host) {
# Check host status
If ($HostNode.status.state -eq "up") {
# Create host object
$HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor
# Store ID and increment index
$HostObj.ID = $x += 1
# Store hostname
$HostObj.Hostname = $HostNode.hostnames.hostname.name
# Loop through addresses
foreach ($HostAddress in $HostNode.address) {
# Check IP address
If ($HostAddress.addrtype -eq "ipv4") {
# Store IP address
$HostObj.'IP Address' = $HostAddress.addr
}
# Check MAC address
If ($HostAddress.addrtype -eq "mac") {
# Store MAC address
$HostObj.'MAC Address' = $HostAddress.addr
# Store vendor
$HostObj.Vendor = $HostAddress.vendor
}
}
# Append host object to array
$HostItems += $HostObj
}
}
# Print host items
$HostItems
# Export host items to CSV
$HostItems | Export-CSV -NoType .\nmap.csv
Scantype n not supported
. Очевидно, флаг -sn
не поддерживается в Nmap 4.x.
show mac-address-table
).С компьютера Unix, прослушивая компьютеры без ОС в той же локальной сети, и, если возможно, через концентратор (не коммутатор), вы можете попробовать
arp
cat /proc/net/arp
Также вы можете попробовать wireshark
(с компьютера под управлением ОС). Опять же, лучше использовать концентратор для перехвата любых сообщений с компьютеров BIOS, включая широковещательные сообщения.
Основная проблема здесь в том, что это информация уровня 2, так что только коммутаторы видят ее. Некоторые коммутаторы предоставляют интерфейс, который позволяет вам взглянуть на эту информацию, но если они не единственный способ получить ее, это перехватить на физическом уровне, например, установив концентратор между коммутатором.
Если вы используете управляемые коммутаторы, эта информация, вероятно, доступна из коммутатора. Некоторые интегрированные маршрутизаторы / коммутаторы конечного пользователя (например, такие, которые часто также упаковывают модемы ADSL) иногда имеют список клиентов DHCP, который включает MAC-адреса.
Если вы используете неуправляемые коммутаторы и действительно хотите знать эту информацию, я рекомендую купить концентратор и временно заменить коммутатор на него. Затем вы можете подключить компьютер с Wireshark к концентратору и перехватывать пакеты ARP для записи MAC-адресов. В качестве альтернативы вы можете использовать Echolot, чтобы сделать это за вас - он выборочно отслеживает пакеты ARP и создает базу данных MAC-адресов.
Вот решение, которое сработало для меня:
Очень простой маленький трюк, который вы можете сделать за 2 секунды, заключается в том, что любая операционная система записывает таблицу с mac и IP-адресом любого устройства, с которым она взаимодействует. Это известно как ARP TABLE. Таким образом, вопрос заключается в том, как заставить взаимодействие со всеми устройствами? Вы можете просто пропинговать широковещательный IP-адрес. Это не идеально, поскольку некоторые устройства или брандмауэр могут блокировать пинг-запрос ICMP, но это работает во многих сценариях.
Команды (в широковещательном адресе ipv4 192.168.0.255):
ping 192.168.0.255
В Linux используют:
ping -b 192.168.0.255
Подождите несколько секунд, пока устройства ответят, затем выполните:
arp -a
Пинг IPV6 см. В комментарии Гедриуса Рекасиуса.
Не идеально, но не инструменты, не исследования, не трата времени, работает во всех основных операционных системах и работает быстро.
ping6 -c2 -n ff02::1%wlan0
. Нужно только обновить имя используемого сетевого интерфейса, IP-адрес для этой цели всегда зависит ff02::1
от того, в какой сети вы находитесь.
Как уже говорили другие, если у вас есть неуправляемые коммутаторы или BootP / PXE, нет простого способа получить MAC компьютеров без ОС.
Если ваши работающие машины работают под управлением Windows, это легко для сценария (обычно через WMI)
Здесь есть несколько примеров: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0].Type=SearchText&f[0].Value=MAC+address&x=0&y= 0
Я собирался предложить переключить таблицу MAC-адресов, но кто-то уже рассмотрел этот выше.
Если какие - либо из компьютеров имеет работу ОС и иметь IP - адрес, вы можете подключиться к той же локальной сети, вы можете использовать Nmap (или с графическим интерфейсом , как Zenmap) из http://nmap.org/ ... если вы бежите это в той же локальной сети, вы должны получить информацию MAC-адреса для всех машин, которые отвечают.
Было бы полезно узнать больше о том, зачем вам нужны MAC-адреса, если есть лучший способ добиться того же результата.
Вы можете собирать информацию ARP с помощью, например, постоянно работающего arpalert. При этом у вас будет набор ARP-адресов, видимых после запуска.
Выключенные машины не будут отправлять вам ответы ARP.
Чтобы ускорить процесс, вы можете использовать nmap-пинг (nmap -sP) в вашей сети с сервера, на котором вы запускаете arpalert, чтобы активировать все возможные (живые и работающие) хосты для ответа на ваш запрос arp. Благодаря регулярному запуску nmap-сканирования у вас больше шансов поймать недолговечный хост.
фрагмент от arpalert:
Если MAC-адрес отсутствует в списке, arpalert запускает предопределенный сценарий пользователя с MAC-адресом и IP-адресом в качестве параметров.
фрагмент из nmap:
Nmap («Network Mapper») - это бесплатная утилита с открытым исходным кодом (лицензия) для исследования сети или аудита безопасности.
Оглянись здесь:
Я использую: nmap -sP 192.168.1.1/24
(замените 192.168.1.1/24 вашим диапазоном IP-адресов)
Он покажет вам только машины, которые работают, и даст вам что-то вроде:
[root@x ~]# nmap -sP 192.168.1.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST
Nmap scan report for 192.168.1.1
Host is up (0.0019s latency).
MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown)
Nmap scan report for 192.168.1.33
Host is up (0.035s latency).
MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate)
Nmap scan report for 192.168.1.254
Host is up (0.0020s latency).
MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds
Если у вас не установлена ОС, вы можете использовать Linux Live CD, Nmap, вероятно, доступен в большинстве из них