W mojej pracy jest dużo komputerów i chcę żartować. Mogę zamknąć komputer przez sieć, ale znalezienie adresów IP jest dla mnie trudne.
Jak mogę łatwo znaleźć wszystkie internetowe adresy IP od 192.168.1.aa do 192.168.1.zz?
W mojej pracy jest dużo komputerów i chcę żartować. Mogę zamknąć komputer przez sieć, ale znalezienie adresów IP jest dla mnie trudne.
Jak mogę łatwo znaleźć wszystkie internetowe adresy IP od 192.168.1.aa do 192.168.1.zz?
Odpowiedzi:
Zasadniczo nmapjest dość przydatny do szybkiego skanowania sieci.
Aby zainstalować nmap, wprowadź następujące polecenie w terminalu:
sudo apt-get install nmap
Po zainstalowaniu aplikacji wprowadź następujące polecenie:
nmap -sn 192.168.1.0/24
To pokaże, którzy hosty odpowiedzieli na żądania ping w sieci między 192.168.1.0 a 192.168.1.255.
W przypadku starszych wersji Nmap użyj -sP:
nmap -sP 192.168.1.0/24
Dodatkowe informacje można znaleźć na następujących stronach:
Jest to bardzo przydatne narzędzie do nauki.
Jeśli wszystkie komputery w sieci to Ubuntu lub inna dystrybucja korzystająca z avahi-daemon( DNS-SD ), możesz uzyskać ich szczegółową listę (z nazwą hosta i adresem IP), wykonując:
avahi-browse -rt _workstation._tcp
Jeśli chcesz poznać wszystkie adresy IP używane w sieci, możesz użyć arp-scan:
sudo arp-scan 192.168.1.0/24
Ponieważ nie jest instalowany domyślnie, musisz go zainstalować za pomocą sudo apt-get install arp-scan. arp-scanwysyła pakiety ARP do sieci lokalnej i wyświetla otrzymane odpowiedzi, dzięki czemu pokazuje nawet zaporowe hosty (które blokują ruch na podstawie pakietów IP).
arp-scannie można znaleźć wszystkich urządzeń powiązanych z moją siecią bezprzewodową. Teraz na przykład sudo arp-scan 192.168.2.0/24pokazuje 2 wyniki (.1 i .1), podczas gdy nmap -sn 192.168.2.0/24pokazuje 4 wyniki (.1, .2, .3 i .4). Wydaje się, że nmapjest to bardziej dokładne (wiem na pewno, że do sieci podłączone są 4 urządzenia). Dlaczego to?
nmap.
arp-scanjest miłe !
Uwaga dla czytelnika : Oryginalna odpowiedź została opublikowana jakiś czas temu, kiedy uczyłem się tylko skryptowania powłoki. Zobacz poprawioną wersję poniżej, aby uzyskać nowy i ulepszony skrypt, który działa znacznie szybciej.
nmapbyłby moim wyborem nr 1, ale co, jeśli go nie masz? Zrób to sam, używając skryptu ping, który ręcznie przechodzi przez każdy możliwy adres IP w sieci. Mamy tutaj tylko pętlę while, w której ustawiamy ostatnią liczbę w adresie, wykonujemy cichy pojedynczy ping na adres, sprawdzamy, czy polecenie się powiodło, czy nie (a jeśli się powiedzie, to host jest oczywiście w górze) i printfinstrukcja. Szybki i brudny sposób, napisanie go zajęło mi około 10 minut, ale środowisko wykonawcze może być nieco wolne.
#!/bin/sh
# set -x
NUM=1
while [ $NUM -lt 256 ];do
ping -q -c 1 192.168.0.$NUM > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 0 ]; then
printf 192.168.0.$NUM"\n"
fi
NUM=$(expr $NUM + 1)
done
Oryginalnie opublikowałem tę odpowiedź w sierpniu 2015 roku. Od tego czasu dowiedziałem się nieco więcej o skryptach powłoki, a kiedy zobaczyłem ten skrypt, pomyślałem, że warto ponownie przejrzeć tę odpowiedź, aby dodać kilka ulepszeń. Oto kilka pomysłów:
Skrypt jest oczywiście powolny i pingczeka na odpowiedź hosta. Domyślnie pingdla dwóch RTT, które mogą się różnić w zależności od stopnia przeciążenia twojej sieci, i, o ile rozumiem, protokół TCP podwaja czas oczekiwania za każdym razem (przynajmniej zgodnie z tym ). Więc możemy zmusić pingdo przekroczenia limitu czasu z -w 1flagą. Ponieważ mamy 256 adresów i zakładamy 1 sekundę na każdy adres, skrypt zajmie około 256/60 = 4,27 minuty.
Wykonanie polecenia, a następnie przechwycenie statusu wyjścia $?nie było tak naprawdę konieczne. if ... then;...fiMoże działać bezpośrednio na komendy. Innymi słowy, wystarczy to zrobić:
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
then
<some other code here>
fi
printfKomenda może być zapisane jako tak:
printf "IP %s is up\n" 192.168.0."$NUM"
Jest to bardziej zmiana stylistyczna, ale jest spójna z tym, jak printfdziała i wygląda w wielu innych językach, ze "$NUM"zmienną cytowania . Cytowanie tutaj nie jest konieczne - ponieważ mamy do czynienia tylko z liczbami, nie musimy przewidywać podziału słów ze względu na spacje w zmiennej.
Znacznie lepszą poprawę wydajności można osiągnąć, jeśli spawnujemy kilka procesów w tle. Poniższa edycja skryptu właśnie to robi. Włożyłem pingi printfdo funkcji, pingf(tak, banalne imię, wiem). Teraz jest też jedna mainfunkcja, która wykonuje zapętlanie i wywoływanie pingf.
#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
then
printf "IP %s is up\n" 192.168.0."$1"
fi
}
main(){
NUM=1
while [ $NUM -lt 255 ];do
pingf "$NUM" &
NUM=$(expr "$NUM" + 1)
done
wait
}
main
O ile lepiej to działa? Właściwie nieźle zajmuje kilka sekund.
$ time ./ping_script.sh
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
0m02.50s real 0m00.01s user 0m00.12s system
Netdiscover może być twoją odpowiedzią.
Aby zainstalować przez terminal:
sudo apt-get install netdiscover
przykładowe użycie:
sudo netdiscover -r 192.168.1.0/24 -i wlan0
Adres IP z adresami MAC wyświetli się na twoim terminalu. Zobacz zrzut ekranu
mam nadzieję, że ci pomogę
*** buffer overflow detected ***: netdiscover terminated .
fpingjest doskonałym narzędziem do skanowania wielu hostów w sieci za pomocą ICMP. Jeśli nie jest zainstalowany, możesz go zainstalować:
sudo apt-get install fping
fping wysyła pakiety ICMP ECHO_REQUEST i oznacza hosta jako Up, jeśli pobierze ECHO_RESPONSE od hosta.
Na przykład, aby przeskanować hosty podsieci 192.168.1.0/24, możesz:
fping -g 192.168.1.0/24
Dla określonej liczby hostów, np. Od 192.168.1.15do 192.168.1.140:
fping -g 192.168.1.15 192.168.1.140
fping jest wysoce konfigurowalny, np. ile pakietów zostanie wysłanych, czas oczekiwania na odpowiedź, format wyjściowy itp.
Sprawdź, man fpingaby uzyskać więcej pomysłów.
angry ip scanner