Wyświetl wszystkie adresy MAC i powiązane adresy IP w mojej sieci lokalnej (LAN)

82

Jak mogę wyświetlić listę wszystkich adresów MAC i powiązanych adresów IP komputerów podłączonych do mojej sieci lokalnej (LAN)?

Maythux
źródło
6
ważne jest, aby zrozumieć, że jak tylko przejdziesz przez sprzęt warstwy sieciowej poziomu 3, nie będzie możliwe uzyskanie MAC i ip za tym
sprzętem
Dlaczego umieszczasz !po znaku zapytania? Nie jest to konieczne i jest stosowane tylko w przypadkach, gdy pytanie jest wykrzykiwane lub ma duże znaczenie.
kiri
@ minerz029 dziękuję za wyjaśnienie
Maythux
1
sudo tail -f /var/log/messages, a następnie odłącz urządzenie i podłącz je ponownie w urządzeniu, w którym próbujesz znaleźć adres MAC, lub grep / przeczytaj wiadomości, aby znaleźć urządzenie.
IceArdor

Odpowiedzi:

63

Możesz do tego użyć narzędzia Nmap . Nmap to bezpłatne narzędzie do skanowania sieciowego.

Spróbuj po prostu:

sudo nmap -sn 192.168.1.0/24

Podaj identyfikator sieci i maskę podsieci.

Jak znaleźć identyfikator sieci i maskę podsieci

Użyj polecenia ip a:

bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
    inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever

Tutaj w punkcie 2 mam wlan0urządzenie. Mówi inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0, adres IP: 192.168.3.66, maska podsieci: 24. Identyfikator sieci to 192.168.3.0po prostu zastąp ostatnią cyfrę cyfrą 0.

Lub jak nmapmówi człowiek :

sudo nmap -sn 192.168.1.0/24

Oto mały cytat ze strony podręcznika nmap (1) :

-sn (No port scan)

Ta opcja mówi Nmapowi, aby nie skanował portów po wykryciu hosta i wydrukował tylko dostępne hosty, które odpowiedziały na skanowanie. Jest to często nazywane „skanowaniem ping”, ale można również zażądać uruchomienia skryptów hosta traceroute i NSE.

Jest to domyślnie o jeden krok bardziej uciążliwe niż skanowanie listy i często można go używać do tych samych celów. Umożliwia lekki rozpoznanie sieci docelowej bez przyciągania dużej uwagi.

Wiedza o liczbie hostów jest dla atakujących bardziej cenna niż lista dostarczona przez skanowanie listy każdego adresu IP i nazwy hosta.

Administratorzy systemów często uważają tę opcję za wartościową. Można go łatwo wykorzystać do zliczania dostępnych komputerów w sieci lub monitorowania dostępności serwera. Jest to często nazywane przeglądaniem pingów i jest bardziej niezawodne niż pingowanie adresu rozgłoszeniowego, ponieważ wiele hostów nie odpowiada na zapytania rozgłoszeniowe.

Domyślne wykrywanie hosta za pomocą -snskłada się z żądania echa ICMP, TCP SYN do portu 443, TCP ACK do portu 80 i domyślnie żądania znacznika czasu ICMP.

W przypadku wykonania przez nieuprzywilejowanego użytkownika tylko pakiety SYN są wysyłane (za pomocą connectwywołania) do portów 80 i 443 na urządzeniu docelowym.

Gdy uprzywilejowany użytkownik próbuje skanować obiekty docelowe w lokalnej sieci Ethernet, żądania ARP są używane, chyba że --send-ipokreślono inaczej . -snOpcja może być połączona z każdym z typów sond Discovery (z -P*możliwości, bez -Pn) o większej elastyczności.

Jeśli zostanie użyta dowolna z tych opcji typu sondy i numeru portu, domyślne sondy zostaną zastąpione. W przypadku istnienia ścisłych zapór ogniowych między hostem źródłowym działającym Nmap a siecią docelową, zalecane jest użycie tych zaawansowanych technik. W przeciwnym razie hosty mogą zostać pominięte, gdy zapora zapuści sondy lub ich odpowiedzi.

W poprzednich wersjach Nmap -snbył znany jako -sP.

c0rp
źródło
To nie działa
Maythux,
4
Trzeba będzie 192.168.1.0/24to zmienić, aby zmienić zakres adresów IP użytkownika.
kiri
@ minerz029 Pewnie, że zmieniłem adres IP
Maythux
Nie wiem, czy to jest powód, ale w systemie Linux używam nmap -sP 192.168.1.0/24do skanowania ping.
tiktak
2
Czy wiesz, dlaczego do odczytu adresatów MAC z sieci wymagane są uprawnienia roota?
Michael Aquilina
45

arpbędzie powoli wrócić Ci listę aktywnych adresów MAC i IP lub nazwę hosta, jeśli mają jeden. Jeśli chcesz, aby działał szybciej, możesz użyć, arp -nktóry powinien pominąć wyszukiwanie DNS. Jeśli musisz to parsować, arp -anpominie kolumny o stałej szerokości.

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.10.0.11               ether   00:04:ff:ff:ff:d0   C                     eth0
10.10.0.16               ether   00:04:ff:ff:ff:a6   C                     eth0
raspbmc.local            ether   00:1f:ff:ff:ff:9c   C                     eth0
10.10.0.19               ether   00:04:ff:ff:ff:c9   C                     eth0
10.10.0.12               ether   bc:f5:ff:ff:ff:93   C                     eth0
10.10.0.17               ether   00:04:ff:ff:ff:57   C                     eth0
10.10.0.1                ether   20:4e:ff:ff:ff:30   C                     eth0
HPF2257E.local           ether   a0:b3:ff:ff:ff:7e   C                     eth0
10.10.0.15               ether   00:04:ff:ff:ff:b9   C                     eth0
tim                      ether   00:22:ff:ff:ff:af   C                     eth0
10.10.0.13               ether   60:be:ff:ff:ff:e0   C                     eth0

W przeciwnym razie router powinien być w stanie dać ci wyobrażenie o aktywnych urządzeniach (większość robi).


Edytuj Według komentarza Davida, ta odpowiedź nie jest tak idealna, jak się spodziewałem.

arppolega na jakimś poprzednim kontakcie do pracy. Jednak moim zdaniem nowoczesne urządzenia są tak rozmowne (powinieneś naprawdę oglądać wireshark - to edukacja) na poziomie emisji, że jest mało prawdopodobne, aby urządzenie było obecne w sieci bez odpowiedzi na transmisję. (Aby upewnić się, że możesz pingować wszystkie urządzenia w sieci za pomocą 10.10.0.255, a następnie prawdopodobnie uzyskasz ponad 90% urządzeń).

Aby dać ci pojęcie o tym, co mam na myśli, 10.10.0.16 powyżej to nasz PVR. Nie ma bezpośredniej interakcji między moim komputerem a PVR i nie ma żadnych usług działających na PVR (nie ma też UPNP / DLNA).

Tylko po to, aby szybko przejrzeć argumenty ...

  • A co z hakerami w mojej sieci? 1
    Mogą też blokować pingi ICMP. Mogą blokować wszystkie odpowiedzi na każdy rodzaj skanowania.
  • Och, ale z pewnością nmapjest nadal najlepszym możliwym rozwiązaniem
    Po uruchomieniu tutaj nadal brakuje czterech urządzeń. Cztery urządzenia aktywne w sieci. Albo nie reagują na pingi, albo nmap nie czeka wystarczająco długo, by odpowiedzieć ... Nie wiem. nmapjest świetnym narzędziem (szczególnie do skanowania portów, które możesz chcieć wykonać w następnej kolejności), ale nadal jest trochę niezdarny (i trochę powolny) w przypadku tego problemu. I nie nazywaj mnie Shirley.
Oli
źródło
1
JEŻELI zmienię swój identyfikator MAC ID za pomocą zmieniacza Mac, czy może on wyświetlać oryginał?
rɑːdʒɑ
2
@BYEAskUbuntu, jeśli używasz zmieniacza MAC, twój MAC jest tym, co ustawiłeś. Dla wszystkich użytkowników sieci jego pochodzenie jest ogólnie nieznane, więc nie, nie może.
Ruslan
3
@ Ruslan To po prostu paranoik, że je wycinam ... Jestem pewien, że dla osoby byłoby to dość trudne, ale nigdy nie wiadomo, kto cię prześladuje.
Oli
9
Jestem zaskoczony tą odpowiedzią. „arp” nie wyświetla listy aktywnych adresów MAC w sieci lokalnej. „arp” pokazuje listę adresów MAC odpowiadających komputerom, które współpracowały z maszyną, na której jest uruchomiony. Jeśli ostatnio nie było komunikacji między maszyną lokalną a inną maszyną w sieci, maszyna ta nie pojawi się na liście „arp”.
davidcl
5
Właśnie zrobiłem szybki test w mojej sieci, a arp wyświetla tylko około 25% istniejących urządzeń. Jeśli komputer z uruchomionym arp nie otrzyma pakietu z innego urządzenia, nie będzie go na liście arp. Chciałbym dowiedzieć się więcej o urządzeniach, których nmap nie wykrył w twojej sieci; istnieją sposoby na ukrycie się przed nmap, ale domyślnie skanowanie nmap jest całkiem skuteczne. To powiedziawszy, nie ma bezpiecznej odpowiedzi, ponieważ jeśli urządzenie nie generuje ruchu i nie odpowiada na żądania, jest niewidoczne - ale większość urządzeń odpowiada na niektóre żądania.
davidcl
36

Używam arp-scando tego:

$ sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1     ec:1a:59:61:07:b2       (Unknown)
192.168.2.50    90:59:af:3d:6d:bc       (Unknown)
192.168.2.51    3c:97:0e:48:22:12       (Unknown)
192.168.2.52    00:18:31:87:8f:b0       Texas Instruments

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded
jcrigby
źródło
1
Jeśli chcesz określić interfejs sieciowy, np. Bezprzewodowy, użyj tego poleceniasudo arp-scan -l -I wlan0
HarlemSquirrel
Tak, arp-scan jest rzeczywiście „najlepszym narzędziem do tego zadania”.
mivk
To dla mnie nie działa ... z jakiegoś powodu urządzenie nie odpowiada.
Andrew Wagner
aby uruchomić arp-scan musiałem zrobić brew install arp-scanw OSX El Capitan.
jamescampbell
16

Możesz użyć arp-scan.

Zainstaluj za pomocą tego polecenia:

sudo apt-get install arp-scan

Aby wyświetlić listę wszystkich adresów IP i powiązanych adresów MAC, użyj:

sudo arp-scan --interface=eth0 --localnet

Dane wyjściowe będą wyglądać następująco:

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36   (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e   (Unknown)
192.168.1.110   00:15:17:5f:d2:80   Intel Corporate
192.168.1.111   00:ff:88:5f:fd:f0   (Unknown)
192.168.1.153   00:15:17:5f:d2:82   Intel Corporate
192.168.1.180   52:54:00:70:04:02   QEMU
192.168.1.199   52:54:00:fe:7f:78   QEMU
Peter Mortensen
źródło
1
To nie znajduje urządzenia, które nie ma jeszcze adresu IP ...
Andrew Wagner
9

GUI

Możesz spróbować odkryć avahiZainstaluj avahi-discover .

  1. Zainstaluj go za pomocą tego polecenia (lub klikając powyższy link):

    sudo apt-get install avahi-discover
    
  2. Uruchom Avahi Zeroconf Browser lub avahi-discoverz terminala.
  3. Powinno zostać wyświetlone okno z listą urządzeń w sieci lokalnej.
    Adres MAC będzie ciągiem w nawiasach kwadratowych.

Wiersz poleceń

Możesz użyć tego polecenia w terminalu:

avahi-browse -a -t -d local

Jest instalowany domyślnie.

kiri
źródło
1
Czy to działa, aby pokazać adres MAC maszyny, na której nie są uruchomione żadne usługi?
Eliah Kagan
3
W moim przypadku nie działa to dla każdego urządzenia w sieci. Jest cholernie schludny, ale nie pokazuje głupich klientów bez usług avahi / upnp.
Oli
5
  1. Najpierw wykonaj skanowanie sieci, aby sprawdzić, które hosty są dostępne / online za pomocą nmap -sn 1.2.3.4/24lubfping -g 1.2.3.4/24

  2. Następnie użyj adresu MAC odpowiadającego adresowi IP arping. Pseudo-kod do przodu:

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
  3. Cheatery: skonsultuj pamięć podręczną arp lokalnego przełącznika; to powinno dać ci ładny przegląd ...

far4d
źródło
3

W przypadkach, w których obsługiwany jest protokół NetBIOS , wolę używać

nbtscan 192.168.1.1-192.168.1.255.

Silveri
źródło
5
Wykrywa to tylko klientów obsługujących protokół NetBIOS (Windows i Linux + Samba).
Eric Carvalho,
2

Zaintrygował mnie ten post. Potrzebowałem tego.

Napisałem skrypt powłoki, który analizuje dane arpwyjściowe za pomocą awkinstrukcji i generuje dane wyjściowe HTML. Jeśli wykonasz skrypt i przekierujesz dane wyjściowe do pliku HTML, pozostanie Ci plik HTML, który pokazuje adres IP, pełny adres MAC i link do strony wyszukiwania IEEE OUI. Pomaga to w określeniu klienta przez producenta karty sieciowej.

printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"

Pomaga nmapnajpierw wykonać skanowanie w sieci LAN, aby mieć wpisy w tabeli ARP. Mam nadzieję, że formatowanie zostało przetłumaczone. Możesz to wyostrzyć, aby mieć tekst w formacie tabeli.

użytkownik38537
źródło
2

Po pracy i wyszukiwaniu odkryłem to polecenie:

nmap -sP -PE -PA21,23,80,3389 192.168.1.*

nmap: Narzędzie do eksploracji sieci i skaner zabezpieczeń / portów

-sP(Pomiń skanowanie portów). Ta opcja mówi Nmapowi, aby nie skanował portów po wykryciu hosta i wydrukował tylko dostępne hosty, które odpowiedziały na skanowanie. Jest to często nazywane „skanowaniem ping”, ale można również zażądać uruchomienia skryptów hosta traceroute i NSE. Jest to domyślnie o jeden krok bardziej uciążliwe niż skanowanie listy i często można go używać do tych samych celów. Umożliwia lekki rozpoznanie sieci docelowej bez przyciągania dużej uwagi. Wiedza o liczbie hostów jest dla atakujących bardziej cenna niż lista dostarczona przez skanowanie listy każdego adresu IP i nazwy hosta.

-PE; -PP; -PM (Typy pingowania ICMP). Oprócz omówionych wcześniej nietypowych typów wykrywania hostów TCP, UDP i SCTP, Nmap może wysyłać standardowe pakiety wysyłane przez wszechobecny program ping. Nmap wysyła pakiet ICMP typu 8 (żądanie echa) na docelowe adresy IP, oczekując w zamian od dostępnych hostów typu 0 (odpowiedź echa). Niestety dla eksploratorów sieci, wiele hostów i zapór sieciowych blokuje teraz te pakiety, zamiast odpowiadać jako: wymagane przez RFC 1122 [2]. Z tego powodu skany tylko ICMP rzadko są wystarczająco niezawodne w stosunku do nieznanych celów przez Internet. Ale dla administratorów systemu monitorujących wewnętrzną sieć mogą być praktycznym i wydajnym podejściem. Użyj opcji -PE, aby włączyć to zachowanie żądania echa.

-A(Agresywne opcje skanowania). Ta opcja włącza dodatkowe zaawansowane i agresywne opcje.

21,23,80,3389 Porty do przeszukiwania

192.168.1.* Zakres adresów IP. zamień na swoje

Maythux
źródło
1

Po zmęczeniu się używaniem nmap i ARP stworzyłem ten mały program, który odpytuje wszystkie adresy MAC dla danego zakresu adresów IP: https://github.com/drkblog/findmacs

drk.com.ar
źródło
Czy odpytuje sekwencyjnie czy równolegle?
Peter Mortensen
0

możesz użyć arp.

Spowoduje to wyświetlenie adresów MAC i adresów IP.


źródło
Działa to tylko w przypadku urządzeń, które zostały podłączone (np. Przez ping).
Peter Mortensen