Jak znaleźć adres MAC maszyn w sieci?

12

Jak mogę znaleźć adres MAC komputerów w sieci?

Muszę odkryć maszyny, które są dostępne tylko z zainstalowanym BIOSem (bez systemu operacyjnego).

Muszę znaleźć adres MAC maszyn, które działają.

Peter Mortensen
źródło
Zobacz także serverfault.com/questions/260333/…
Stefan Lasiewski
Duplikat między witrynami (w przypadku przepełnienia stosu): Jak odkryć adres MAC komputerów w sieci i przez nią? .
Peter Mortensen

Odpowiedzi:

8

Będziesz musiał uzyskać dostęp do informacji dostępnych na zarządzanych przełącznikach. Jeśli masz niezarządzaną sieć, nie widzę sposobu, aby to zrobić.

Zakłada się, że komputery docelowe są zdolne do Wake-on-LAN (WoL). W takim przypadku ustanowione jest łącze do serwera (poszukaj migającej diody LED łącza), a karta sieciowa nasłuchuje transmisji WoL. AFAIK, karta nie odpowiada na nic w tym stanie. Jeśli nie ma WoL, karta najprawdopodobniej jest wyłączona (brak diody LED łącza) i w ogóle nie będzie działać.

Posipiet
źródło
7

Jeśli maszyny nie są zasilane, jest to niemożliwe.

Jeśli są one zasilone, sądzę, że jest to również niemożliwe, ponieważ potrzebujesz minimalnego stosu sieciowego, aby przynajmniej odpowiedzieć na takie pytania, jak zapytania ARP itp., Które nie działają bez zainstalowanego systemu operacyjnego.

To, co może działać (nie wiem i nie mogę teraz przetestować), to to, że karta sieciowa i przełącznik komunikują się, gdy karta sieciowa jest podłączona lub włączona, a przełącznik w ten sposób uczy się adresu MAC. W takim przypadku potrzebujesz przełącznika zarządzalnego i zapytaj go o podłączone adresy mac.

Sven
źródło
2
Państwo może dostać go bez stosu sieciowego, czy to z prośbą o BOOTP lub PXE. Myślę, że to zależy od maszyny, czy to zadziała.
Bart Silverstrim
6

Możesz użyć Nmap do wykonania bardzo szybkiego skanowania ARP przy użyciu następującej składni.

nmap -sn -PR -oX nmap.xml 192.168.1.0/24

Wykorzystuje ping ARP (tylko żądania ARP, bez ICMP, UDP lub TCP, bez skanowania portów) do skanowania określonego zakresu adresów IP i rejestrowania odpowiedzi adresu IP / adresu MAC / nazwy hosta w pliku XML (nmap.xml).

Napisałem skrypt PowerShell, który munguje plik XML i wyrzuca plik CSV . To również odfiltrowuje hosty w dół. Uważam, że jest to łatwiejsze w użyciu w programie Excel niż w pliku XML. Oto skrypt, jeśli ktoś jest zainteresowany.

# 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
John Homer
źródło
Wypróbowałem powyższe polecenie i otrzymałem błąd Scantype n not supported. Najwyraźniej flaga -snnie jest obsługiwana w Nmap 4.x.
Stefan Lasiewski
Z nmap 5.30BETA1 ChangeLog:
John Homer
2
Przełączono na -Pn i -sn oraz jako preferowaną składnię odpowiednio do pomijania skanowania ping i pomijania skanowania portów. Wcześniej zalecane były opcje -PN i -sP. Ustanawia to bardziej regularną składnię dla niektórych opcji, które wyłączają fazy skanowania: -n brak odwrotnego DNS -Pn brak wykrywania hosta -sn brak skanowania portu Czuliśmy również, że stara opcja -sP („ping ping”) była nieco myląca ponieważ obecne wersje Nmapa mogą iść znacznie dalej (w tym -sC i --traceroute), nawet przy wyłączonym skanowaniu portów. Zachowamy wsparcie dla poprzednich nazw opcji w dającej się przewidzieć przyszłości.
John Homer
Na tej podstawie powinieneś być w stanie użyć składni „-sP” zamiast nowszego parametru „-sn”. Niestety nie mam wersji nmap4 do przetestowania.
John Homer
3
  1. Wyświetl informacje o przełączniku / routerze, jeśli przełącznik jest wystarczająco zaawansowany.
    (W przełącznikach Cisco polecenie to show mac-address-table).
  2. Jeśli komputery mają system BIOS / kartę sieciową z obsługą PXE, przeczytaj informacje z dzienników DHCP, ponieważ będą próbowały uzyskać dzierżawę DHCP. Jeśli nie masz DHCP, po prostu zrzuć cały ruch rozgłoszeniowy za pomocą Wireshark i odfiltruj ruch DHCP. Wszystkie nowo zasilane maszyny bez systemu operacyjnego będą wyświetlane w ruchu.
Kristaps
źródło
3

Z komputera z systemem Unix, nasłuchując komputerów bez systemu operacyjnego w tej samej sieci LAN, a jeśli to możliwe za pośrednictwem koncentratora (nie przełącznika), możesz spróbować

arp
cat /proc/net/arp

Możesz także spróbować wireshark(z komputera z systemem operacyjnym). Ponownie, lepiej użyć Hub do przechwytywania wszelkiej komunikacji z komputerami BIOS, w tym transmisji.

Pierścień Ø
źródło
1

Podstawowym problemem jest to, że są to informacje warstwy 2, więc tylko przełączniki je widzą. Niektóre przełączniki zapewniają interfejs, który pozwala zerknąć na te informacje, ale jeśli nie jedyny sposób, aby je zdobyć, to przechwycenie warstwy fizycznej, np. Poprzez zainstalowanie koncentratora między przełącznikiem.

Jeśli używasz zarządzanych przełączników, informacje te są prawdopodobnie dostępne z przełącznika. Niektóre zintegrowane routery / przełączniki użytkownika końcowego (takie jak te, które często pakują również modemy ADSL) czasami mają listę klientów DHCP, która zawiera adresy MAC.

Jeśli używasz niezarządzanych przełączników i naprawdę chcesz poznać te informacje, zalecamy zakup koncentratora i tymczasowe zastąpienie go przełącznikiem. Następnie możesz podłączyć komputer z Wireshark do koncentratora i przechwytywać pakiety ARP w celu zapisywania adresów MAC. Alternatywnie możesz użyć Echolot, aby to zrobić za Ciebie - selektywnie śledzi pakiety ARP i buduje bazę adresów MAC.

imoatama
źródło
Edycja - po prostu ponownie przeczytaj część o tym, że jest to tylko BIOS. Stanowi to kolejne wyzwania poza problemem przechwytywania danych warstwy 2 - klienci mogą nawet nie wysyłać żadnych danych przez sieć. Jeśli klienci mają BIOS, który obsługuje DHCP lub wysyła pakiety ARP, powinna istnieć możliwość ich zobaczenia z przełącznika. Nie jestem pewien, jakie wersje BIOS-u to obsługują, wiem jednak, że niektóre z nich.
imoatama,
1

Oto rozwiązanie, które zadziałało dla mnie:

  1. Włącz rozruch sieciowy w systemie BIOS. (Np. Ustaw kartę sieciową na „Enabled with PXE”)
  2. Uruchom maszynę.
  3. Urządzenie podejmie próbę rozruchu z sieci, pokazując adres MAC.
Igor Ostrowski
źródło
1

Bardzo łatwą małą sztuczką, którą możesz zrobić w ciągu 2 sekund, jest fakt, że każdy system operacyjny zapisuje tabelę z adresem MAC i adresem IP dowolnego urządzenia, z którym współpracuje. Jest to znane jako TABELA ARP. Pytanie brzmi: jak wymusić interakcję ze wszystkimi urządzeniami? Możesz po prostu pingować adres IP emisji. Nie jest to idealne, ponieważ niektóre urządzenia lub zapora mogą blokować żądanie ping ICMP, ale działa w wielu scenariuszach.

Polecenia to (w adresie IPv4 192.168.0.255):

ping 192.168.0.255

W systemie Linux:

ping -b 192.168.0.255

Poczekaj kilka sekund, aż urządzenia odpowiedzą, a następnie:

arp -a

Ping IPV6 patrz komentarz Giedriusa Rekasiusa

Nie jest idealny, ale bez narzędzi, bez badań, bez straty czasu, działa w każdym większym systemie operacyjnym i jest szybki.

Giovanni Silva
źródło
Uważam, że łatwiejsze i bardziej niezawodne jest wykonywanie takich pingów przez IPv6 niż przez IPv4. Przykładowe polecenie może wyglądać tak ping6 -c2 -n ff02::1%wlan0. Wystarczy tylko zaktualizować nazwę używanego interfejsu sieciowego, adres IP używany do tego celu jest zawsze ff02::1niezależny od sieci, w której się znajdujesz.
kasperd
1

Przeskanuj sieć za pomocą Nmapa, a następnie sprawdź tabelę ARP ( arp -aw dystrybucjach Linuksa).

MihaiM
źródło
0

Jak powiedzieli inni, jeśli masz niezarządzane przełączniki lub BootP / PXE, nie ma łatwego sposobu na uzyskanie adresów MAC komputerów bez systemu operacyjnego.

Jeśli na uruchomionych komputerach jest uruchomiony system Windows, łatwo jest go napisać (zwykle za pomocą WMI)

Tutaj jest kilka przykładów: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0].Type=SearchText&f[0].Value=MAC+address&x=0&y= 0

gWaldo
źródło
0

Chciałem zasugerować zmianę tablicy adresów MAC, ale ktoś już ją opisał powyżej.

Jeśli którykolwiek z komputerów ma system operacyjny i ma adres IP, możesz podłączyć się do tej samej sieci LAN, możesz użyć NMAP (lub wersji GUI takiej jak Zenmap) z http://nmap.org/ ... jeśli uruchomisz w tej samej sieci LAN powinieneś uzyskać informacje o adresie MAC dla wszystkich komputerów, które odpowiedzą.

Przydałoby się lepiej zrozumieć, dlaczego musisz uzyskać adresy MAC, na wypadek, gdyby istnieje lepszy sposób na osiągnięcie tego samego wyniku.

Mitch Miller
źródło
0

Możesz zbierać informacje ARP, na przykład przez stale działający arpalert. Dzięki temu zestaw adresów ARP będzie widoczny po uruchomieniu.

Wyłączone maszyny nie będą wysyłać odpowiedzi ARP.

Aby przyspieszyć ten proces, możesz użyć skanu nmap ping (nmap -sP) w sieci z serwera, na którym działa arpalert, w celu wyzwolenia wszystkich możliwych (działających i działających) hostów w odpowiedzi na zapytanie arp. Dzięki regularnemu późniejszemu skanowaniu nmap ping masz większe szanse na złapanie krótko żyjącego hosta.

fragment z arpalert:

Jeśli MAC nie ma na liście, arpalert uruchamia predefiniowany skrypt użytkownika z parametrami adresu MAC i adresu IP.

fragment kodu nmap:

Nmap („Network Mapper”) to darmowe narzędzie typu open source (licencja) do eksploracji sieci lub audytu bezpieczeństwa

Rozejrzyj się tutaj:

asdmin
źródło
0

Używam: nmap -sP 192.168.1.1/24

(zastąp 192.168.1.1/24 swoim zakresem IP)

Pokaże tylko działające maszyny i da ci coś takiego:

[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

Jeśli nie masz zainstalowanego systemu operacyjnego, możesz użyć Linux Live CD, nmap jest prawdopodobnie dostępny w większości z nich

neofutur
źródło