Nel mio lavoro c'è un sacco di computer e voglio fare uno scherzo. Riesco a chiudere il computer in rete ma trovare indirizzi IP per me è difficile.
Come posso trovare facilmente tutti gli indirizzi IP online da 192.168.1.aa a 192.168.1.zz?
Nel mio lavoro c'è un sacco di computer e voglio fare uno scherzo. Riesco a chiudere il computer in rete ma trovare indirizzi IP per me è difficile.
Come posso trovare facilmente tutti gli indirizzi IP online da 192.168.1.aa a 192.168.1.zz?
Risposte:
In generale, nmap
è abbastanza utile per scansionare rapidamente le reti.
Per installare nmap, immettere il seguente comando nel terminale:
sudo apt-get install nmap
Una volta installata l'applicazione, immettere il seguente comando:
nmap -sn 192.168.1.0/24
Ciò mostrerà quali host hanno risposto alle richieste di ping sulla rete tra 192.168.1.0 e 192.168.1.255.
Per le versioni precedenti di Nmap, utilizzare -sP
:
nmap -sP 192.168.1.0/24
Per riferimenti aggiuntivi, consultare le seguenti pagine:
Guida all'installazione di NMAP
È uno strumento molto utile per imparare.
Se tutti i computer della tua rete sono Ubuntu o qualsiasi altra distribuzione che utilizza avahi-daemon
( DNS-SD ), puoi ottenere un elenco dettagliato di essi (con nome host e indirizzo IP) facendo:
avahi-browse -rt _workstation._tcp
Se vuoi conoscere tutti gli indirizzi IP utilizzati nella tua rete, puoi utilizzare arp-scan
:
sudo arp-scan 192.168.1.0/24
Poiché non è installato per impostazione predefinita, dovrai installarlo con sudo apt-get install arp-scan
. arp-scan
invia pacchetti ARP alla rete locale e visualizza le risposte ricevute, quindi mostra anche gli host con firewall (che bloccano il traffico in base ai pacchetti IP).
arp-scan
non trova tutti i dispositivi associati alla mia rete wireless. Ora, ad esempio, sudo arp-scan 192.168.2.0/24
mostra 2 risultati (.1 e .1), mentre nmap -sn 192.168.2.0/24
mostra 4 risultati (.1, .2, .3 e .4). Quindi, sembra che nmap
sia più preciso (so per certo che ci sono 4 dispositivi collegati alla rete). Perchè è questo?
nmap
.
arp-scan
è bella !
Nota per il lettore : la risposta originale è stata pubblicata un po 'di tempo fa e al momento in cui stavo solo imparando gli script di shell. Vedi la versione rivista di seguito per uno script nuovo e migliorato che funziona molto più velocemente.
nmap
sarebbe la mia scelta n. 1, ma cosa succede se non ce l'hai? Il modo DIY sarebbe con uno script ping che attraversa manualmente ogni possibile indirizzo IP sulla rete. Quello che abbiamo qui è solo il ciclo while, dove impostiamo l'ultimo numero nell'indirizzo, facciamo un singolo ping silenzioso all'indirizzo, controlla se il comando ha esito positivo o meno (e se ha avuto successo, allora l'host è ovviamente attivo) e l' printf
istruzione. Modo rapido e sporco, mi ci sono voluti circa 10 minuti per scriverlo, ma il tempo di esecuzione potrebbe essere un po 'lento, però.
#!/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
Originariamente ho pubblicato questa risposta nell'agosto 2015. Da allora ho imparato qualcosa in più sullo scripting della shell e una volta che ho visto questo script, ho pensato che sarebbe stata una buona idea rivedere questa risposta per aggiungere alcuni miglioramenti. Ecco alcune idee:
Lo script è ovviamente lento e ping
attende la risposta dell'host. Per impostazione predefinita, ping
per due RTT, che possono variare a seconda della congestione della rete e, per quanto ne so, il protocollo TCP raddoppia il tempo di attesa ogni volta (almeno in base a questo ). Quindi potremmo forzare ping
a uscire con la -w 1
bandiera. Poiché abbiamo 256 indirizzi e assumiamo 1 secondo per ciascun indirizzo, lo script richiederà circa 256/60 = 4,27 minuti.
Fare un comando e poi catturare il suo stato di uscita con $?
non era davvero necessario. Il if ... then;...fi
grado di operare su comandi direttamente. In altre parole, è sufficiente fare questo:
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
then
<some other code here>
fi
Il printf
comando può essere riscritto in questo modo:
printf "IP %s is up\n" 192.168.0."$NUM"
Questo è più di un cambiamento stilistico, ma è coerente con il modo in cui printf
funziona e appare in molte altre lingue, con la quotazione "$NUM"
variabile. La citazione qui non è necessaria, poiché abbiamo a che fare solo con i numeri, non è necessario anticipare la divisione delle parole a causa della presenza di spazi in una variabile.
Un miglioramento delle prestazioni molto migliore può essere ottenuto se generiamo diversi processi in background. La modifica dello script qui sotto fa esattamente questo. Metto il ping
e printf
in una funzione, pingf
(sì, nome banale, lo so). Ora, c'è anche una singola main
funzione che esegue il loop e la chiamata di 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
Quanto meglio funziona? Non male, in realtà, richiede pochi secondi.
$ 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 può essere la tua risposta.
Per installare tramite terminale:
sudo apt-get install netdiscover
esempio di utilizzo:
sudo netdiscover -r 192.168.1.0/24 -i wlan0
Un IP con indirizzi MAC apparirà sul tuo terminale. Guarda lo screenshot
spero di aiutarti
*** buffer overflow detected ***: netdiscover terminated
.
fping
è un ottimo strumento per scansionare più host su una rete tramite ICMP. Se non installato, è possibile installarlo tramite:
sudo apt-get install fping
fping
invia i pacchetti ECHO_REQUEST ICMP e contrassegna un host come Su se ottiene ECHO_RESPONSE dall'host.
Ad esempio, per scansionare gli host della sottorete 192.168.1.0/24
, puoi fare:
fping -g 192.168.1.0/24
Per un numero specifico di host, ad es. Da 192.168.1.15
a 192.168.1.140
:
fping -g 192.168.1.15 192.168.1.140
fping
è altamente configurabile, ad es. quanti pacchetti verranno inviati, il tempo di attesa per la risposta, il formato di output ecc.
Controlla man fping
per avere più idee.
angry ip scanner