Comment trouver toutes les adresses IP utilisées sur un réseau

Dans mon travail, il y a beaucoup d’ordinateur et je veux faire une blague. Je peux fermer un ordinateur via le réseau, mais il m’est difficile de trouver des adresses IP.

Comment trouver facilement toutes les adresses IP en ligne de 192.168.1.aa à 192.168.1.zz?

En règle générale, nmap est très utile pour parsingr rapidement les réseaux.

Pour installer nmap, entrez la commande suivante dans le terminal:

 sudo apt-get install nmap 

Une fois l’application installée, entrez la commande suivante:

 nmap -sn 192.168.1.0/24 

Cela vous indiquera quels hôtes ont répondu aux requêtes ping sur le réseau entre 192.168.1.0 et 192.168.1.255.


Pour les anciennes versions de Nmap, utilisez -sP :

 nmap -sP 192.168.1.0/24 

Pour plus de références, voir les pages suivantes:

Guide d’installation NMAP

Guide de référence NMAP

C’est un outil très utile à apprendre.

Si tous les ordinateurs de votre réseau sont Ubuntu ou toute autre dissortingbution utilisant avahi-daemon ( DNS-SD ), vous pouvez en obtenir une liste détaillée (avec le nom d’hôte et l’adresse IP):

 avahi-browse -rt _workstation._tcp 

Si vous voulez connaître toutes les adresses IP utilisées sur votre réseau, vous pouvez utiliser arp-scan :

 sudo arp-scan 192.168.1.0/24 

Comme il n’est pas installé par défaut, vous devrez l’installer avec sudo apt-get install arp-scan . arp-scan envoie des paquets ARP au réseau local et affiche les réponses reçues, de sorte que même les hôtes protégés par un pare-feu (qui bloquent le trafic en fonction des paquets IP).

Netdiscover peut être votre réponse.

Pour installer via un terminal:

 sudo apt-get install netdiscover 

exemple d’utilisation:

 sudo netdiscover -r 192.168.1.0/24 -i wlan0 

Une adresse IP avec adresses MAC s’affichera sur votre terminal. Voir la capture d’écran

entrez la description de l'image ici

j’espère vous aider

référence

Note au lecteur : La réponse originale a été postée il y a longtemps et à l’époque où j’apprenais seulement à écrire des scripts shell. Voir la version révisée ci-dessous pour un nouveau script amélioré qui s’exécute beaucoup plus rapidement.

Réponse originale

nmap serait mon choix n ° 1, mais que faire si vous ne l’avez pas? Le bricolage consisterait en un script ping qui passe manuellement chaque adresse IP possible sur le réseau. Ce que nous avons ici est juste une boucle While, où nous définissons le dernier chiffre de l’adresse, faisons un ping simple silencieux à l’adresse, vérifions si la commande aboutit ou non (et si elle réussit, l’hôte est évidemment en hausse) et la déclaration printf . Manière rapide et sale, il m’a fallu environ 10 minutes pour l’écrire, mais l’exécution peut être un peu lente, cependant.

 #!/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 

Réponse revisitée

À l’origine, j’avais posté cette réponse en août 2015. Depuis, j’en ai appris un peu plus sur les scripts shell, et une fois que j’ai vu ce script, j’ai pensé qu’il serait judicieux de revenir sur cette réponse pour y apporter quelques améliorations. Voici quelques idées:

  • Le script est évidemment lent et le ping attend la réponse de l’hôte. Par défaut, ping pour deux RTT, ce qui peut varier en fonction de l’encombrement de votre réseau et, autant que je sache, le protocole TCP double le temps d’attente à chaque fois (du moins en fonction de cela ). Nous pourrions donc forcer ping à -w 1 avec l’ -w 1 . Étant donné que nous avons 256 adresses et que nous supposons 1 seconde pour chaque adresse, le script prendra environ 256/60 = 4,27 minutes.

  • Faire une commande puis capturer son statut de sortie avec $? n’était pas vraiment nécessaire. Le if ... then;...fi peut opérer directement sur les commandes. En d’autres termes, il suffit de faire ceci:

     if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ; then  fi 
  • La commande printf peut être réécrite de la manière suivante:

     printf "IP %s is up\n" 192.168.0."$NUM" 

    Il s’agit là d’un changement stylistique, mais cohérent avec le fonctionnement et l’apparence de printf dans de nombreuses autres langues, avec la variable "$NUM" . Il n’est pas nécessaire de citer ici – puisque nous ne traitons que de chiffres, nous n’avons pas besoin d’anticiper le fractionnement des mots car il y a des espaces dans une variable.

  • Il est possible d’améliorer considérablement les performances en générant plusieurs processus en arrière-plan. Le script ci-dessous fait exactement cela. Je mets le ping et printf dans une fonction, pingf (oui, nom ringard, je sais). Maintenant, il y a aussi une seule fonction main qui effectue la mise en boucle et l’appel de 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 

Comment ça marche mieux? Pas mal, en fait, prend quelques secondes.

 $ 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 

Choses à garder à l’esprit

  • Windows (à partir de Windows 7, je pense) ont commencé à bloquer la réponse aux demandes d’écho ICMP. Ask Ubuntu et d’autres sites du même genre suscitent de nombreuses questions à ce sujet. “Hé, mon ordinateur Linux peut être traité, mais pas sous Windows, que se passe-t-il?” Sachez simplement que pour les versions Windows plus récentes, vous devez activer la réponse à l’écho ICMP.

fping est un excellent outil pour parsingr plusieurs hôtes sur un réseau via ICMP. S’il n’est pas installé, vous pouvez l’installer en:

 sudo apt-get install fping 

fping envoie les paquets ICMP ECHO_REQUEST et marque un hôte en tant que Up s’il obtient ECHO_RESPONSE de l’hôte.

Par exemple, pour parsingr les hôtes du sous-réseau 192.168.1.0/24 , vous pouvez effectuer les opérations suivantes:

 fping -g 192.168.1.0/24 

Pour un nombre spécifique d’hôtes, par exemple, de 192.168.1.15 à 192.168.1.140 :

 fping -g 192.168.1.15 192.168.1.140 

fping est hautement configurable, par exemple combien de paquets seront envoyés, le temps d’attente de la réponse, le format de sortie, etc.

Vérifiez man fping pour avoir plus d’idée.