Jestem twórcą stron internetowych, który próbuje lepiej kontrolować bezpieczeństwo. Próbuję znaleźć sposób (na dystrybucjach opartych na systemie Linux / Debian), aby wyświetlić listę wszystkich komputerów w tej samej sieci LAN, na której znajduje się mój netbook. Próbowałem „arp -n”, ale nie sądzę, że jest to pełna lista, ponieważ mój iPhone jest na tym samym routerze Wi-Fi, co mój netbook, i to nie wyszło. Czy istnieje lepszy sposób na uzyskanie pełnej listy komputerów, które współużytkują tę samą bramę?
networking
wireless-networking
security
CaptSaltyJack
źródło
źródło
Odpowiedzi:
Uzyskaj nmap . Jest to program Trinity używany w Matrycy. Możesz wykonać skanowanie, aby znaleźć wszystkie urządzenia podłączone do sieci LAN, w której się znajdujesz i nie tylko.
Oto przewodnik informacyjny.
źródło
sudo apt-get install nmap
To jest to, czego używam, nmap i adres za pomocą notacji blokowej CIDR sieci, którą chcesz przeskanować. Najpierw musisz zainstalować nmap, ponieważ może on nie być fabrycznie zainstalowany wraz z dystrybucją. W systemie Ubuntu:
Następnie ustal adres sieciowy, używając ifconfig:
Dane wyjściowe ifconfig dla interfejsu, który chcę skanować:
Użyj adresu inet i Maski, aby dowiedzieć się, jaki jest adres sieciowy w notacji CIDR, więcej o CIDR tutaj . Adres jest:
Uruchom nmap za pomocą parametru -sP, który skanuje nie dalej niż sprawdzanie, czy host jest w trybie online:
Wyjście nmap będzie wyglądać mniej więcej tak:
To wszystko, jeśli potrzebujesz dodatkowej pomocy z nmap, zobacz oficjalną dokumentację nmap lub uruchom:
źródło
nmap -sA 192.168.1.0/24
Opcja nmap-sA
pokazuje podobne wyniki opisowe z lepszą czytelnością, która obejmuje nazwę urządzenia, adres IP, mac itp. jak w przypadku opcji-sP
. Osobiście wolę -sA niż -sP ze względu na czytelność.arp -n
pokazuje tylko urządzenia w twojej sieci LAN, z którymi urządzenie już rozmawiało. Możesz uzyskać tę listę, aby lepiej się zapełniać, wysyłając pakiety ping do adresów multiemisji rozgłaszania i wszystkich hostów:Adres rozgłoszeniowy „wszyscy” (binarnie). Pamiętaj, że większość stosów adresów IP przetłumaczy to na adresy rozgłoszeniowe podsieci dla wszystkich podsieci, do których jesteś przyłączony:
Adres emisji podsieci dla bieżącej podsieci. Zakładając, że masz 192.168.1.0/24:
Adres multiemisji „wszystkich hostów”. Bardzo mi się podoba, ponieważ bardziej prawdopodobne jest znalezienie hostów skonfigurowanych dla innych podsieci IP, które są podłączone do tej samej sieci Ethernet, co Ty:
Zauważ, że ta metoda oraz inne metody, o których do tej pory wspominałem w innych odpowiedziach, szukają tylko hostów z dostępem do IP w bieżącej sieci. Prawdopodobnie to wszystko, o co musisz dbać, ale atakujący może węszyć w sieci lub robić złe rzeczy, nie będąc widocznym przez IP.
źródło
ip neigh
ahosts
. NIE wymaga nmap / NIE wymaga sudo .Na tej podstawie możesz zbudować skrypt w języku Python:
Pobierz przez
(lub po prostu
arp
... nie widziałem tego wcześniej)źródło
ip neigh | awk '{ print $1 }' | xargs -n1 host
ip n
w skrócie. Może lepiejip n | grep REACHABLE
.Nie znalazłem wystarczających odpowiedzi, więc pomyślałem, że spróbuję. W końcu FAQ sugeruje kontekst dla linków .
nmap
jest świetny, jeśli trochę mylący w użyciu. Oto coś, co uruchamiam, aby odkryć lokalne urządzenia sieciowe, które w większości można kopiować i wklejać.nmap -sP
(lubnmap -sn
) skanuje przez pingowanie . Istnieją inne opcje „wykrywania hosta”, takie jak znmap -sL
lubnmap -Pn
.Sposób nr 1.
Sposób nr 2. Wiem, że to działa, ale nie mogę powiedzieć, czy jest to właściwa droga.
Z przyjemnością dowiem się, czy istnieją bardziej skuteczne sposoby. Do tego czasu trzymam się tego.
źródło
Możesz na przykład pingować całą podsieć za pomocą małego skryptu powłoki Linux
źródło
ip n
powiedziano FAILED wszystkim.Hunt to narzędzie wiersza polecenia, które jest w stanie zbudować listę komputerów, które transmitują informacje w sieci. Wykorzystuje dane TCP, UDP, ICMP i ARP do budowy listy aktywnych adresów MAC w sieci. To pasywne narzędzie, które działa poprzez słuchanie na drutach.
źródło
Aby uzyskać bardziej zwartą listę podłączonych urządzeń:
Wyjaśnienie.
nmap -sL 192.168.0.*
wyświetli listę wszystkich adresów IP w podsieci i zaznaczy te, które mają nazwę:Ponieważ wszystkie interesujące rekordy zaczynają się od nawiasów
(
i cyfr1
, filtrujemy je za pomocą| grep \(1
(odwrotny ukośnik jest potrzebny, aby uniknąć nawiasu)Quirk
Uwaga: jeśli dwa urządzenia mają tę samą nazwę,
nmap
pokaże tylko to, które było podłączone do routera jako ostatnieźródło
Aby zeskanować status zakresu adresów IP, jest to przyjemne i proste:
Gdzie:
Uwaga:
-sn
był znany jako-sP
Zrobiłem to na Mac OS X (który jest oparty na BSD). Nie jestem pewien, czy wersja Linuksa ma jakieś różnice.
źródło
Możesz użyć fping
sudo apt-get install fping
(w systemach operacyjnych podobnych do Debiana).fping jest podobny do pingowania, ale znacznie lepiej sprawdza się podczas pingowania wielu hostów. Flaga -r 1 informuje fping, aby wykonał tylko jedną rundę. Część 2> 1 pozwala grepowi filtrować dane wyjściowe.
Wyświetliłby coś takiego:
Istnieje również interesująca flaga nmap , która pozwoli ci zobaczyć dostawcę MAC - jeśli jest znany. Używaj z sudo , aby zobaczyć adresy MAC.
Otrzymasz na przykład:
źródło
1. Alternatywne rozwiązanie, jeśli transmisje
nmap
nie są dostępne:2a lub po prostu zapytaj swój serwer nazw domen :
2b. bez awk
pinguje wszystkie pingowane urządzenia sieciowe w podsieci 192.168.2.0/24 równolegle (w celu skrócenia czasu działania). Następnie
arp
powinno wyświetlić się każde urządzenie, które odpowiedziało.nie sprawdza aktywnych ani bieżących połączeń, ale wyświetla listę wszystkich połączeń, w których lokalna usługa domeny przechowuje wpis, nawet naprawdę stare.
Bardziej szczegółowe wyjaśnienie:
seq 254
tworzyć liczby od 1 do 254 (dla wszystkich liczb od 100 do 150:seq 100 150
)xargs
wywołujeping
i zamienia „IP” (-iIP
) naseq
numer uence z stdin, więc 192.168.2.IP zmienia się na 192.168.2.1 dla pierwszegoseq
numeru,-P
określa liczbę równoczesnychping
procesów, którexargs
należy rozpocząć, wybieram tę samą kwotę +1 jako adresy ( = 254) jestem zainteresowany.ping
z adresem IP zmodyfikowanym przez xargs (192.168.2.IP
) i ping tylko raz (-c1
);-i
w tym przypadku musisz użyć tego samego identyfikatora, który określono dla argumentów xargsIP
grep time=
aby usunąć każdą linię zawierającą zbędne informacje, interesują nas tylko odpowiedzi, które zapewniają czas podróży w obie strony (= otrzymałem odpowiedź)arp -a
wyświetlać prawidłowe pary nazw (ip)Nazywam to moim poleceniem pingall i udostępniłem je przez alias w
~/.bashrc
:źródło