Afficher la liste des ordinateurs sur un réseau local sous Linux

Je suis un développeur Web qui essaie de mieux gérer la sécurité. J'essaie de trouver un moyen (sur les distros basés sur Linux / Debian) d'énumérer tous les ordinateurs sur le même réseau sur lequel mon netbook est activé. J'ai essayé "arp -n" mais je ne pense pas que ce soit une liste complète, car mon iPhone est sur le même routeur wi-fi que mon netbook, et cela n'a pas été créé. Existe-t-il un meilleur moyen d'obtenir une liste complète de machines qui partagent la même passerelle?

Obtenir nmap . C'est le programme Trinity utilisé dans The Matrix et vous pouvez effectuer une analyse pour trouver tous les périphériques connectés au réseau local, et plus encore.

Voici le guide de référence.

C'est ce que j'utilise, nmap et une adresse utilisant la notation de bloc CIDR du réseau que vous souhaitez numériser. D'abord, vous devez installer nmap car il peut ne pas être pré-installé avec vous distro. Sur Ubuntu:

 sudo apt-get install nmap 

Ensuite, décrivez votre adresse réseau en utilisant ifconfig:

 ifconfig 

Ifconfig output pour l'interface que je souhaite analyser:

 wlan1 Link encap:Ethernet HWaddr 00:1f:3b:03:d2:bf inet addr:192.168.1.104 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link ... 

Utilisez l'addit inet et Mask pour trouver l'adresse réseau dans la notation CIDR, plus sur CIDR ici . L'adresse est:

 192.168.1.0/24 

Exécutez nmap en utilisant le paramètre -sP, qui ne vérifiera plus que vérifier si l'hôte est en ligne:

 sudo nmap -sP 192.168.1.0/24 

La sortie nmap ressemblera à ceci:

 Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST Nmap scan report for 192.168.1.1 Host is up (0.013s latency). MAC Address: -MAC ADDRESS- (Cameo Communications) ... Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds 

Voilà, si vous avez besoin de plus d'aide avec nmap, consultez la documentation officielle de nmap ou exécutez:

 nmap --help 

arp -n affiche uniquement des machines sur votre réseau local auxquelles votre machine a déjà parlé. Vous pouvez obtenir cette liste pour mieux remplir en faisant un ping sur les adresses multi-ondes de diffusion et de tous les hôtes:

L'adresse de diffusion "tous" (en binaire). Notez que la plupart des piles IP traduiront cela aux adresses de diffusion de sous-réseau pour tous les sous-réseaux auxquels vous êtes attaché:

 ping 255.255.255.255 

L'adresse de diffusion du sous-réseau pour votre sous-réseau actuel. Donc en supposant que vous êtes sur 192.168.1.0/24:

 ping 192.168.1.255 

L'adresse de multidiffusion "tous les hôtes". J'aime beaucoup cela car il est plus probable de trouver des hôtes configurés pour d'autres sous-réseaux IP, qui se trouvent sur le même réseau Ethernet que vous:

 ping 224.0.0.1 

Notez que cette méthode, et les autres méthodes que j'ai vus mentionnées dans d'autres réponses à ce jour, recherchent uniquement des hôtes compatibles IP sur le réseau actuel. C'est probablement tout ce dont vous avez besoin, mais il est possible pour un attaquant de faire de la fouille, ou de faire de mauvaises choses, un réseau sans être visible via IP.

ip neigh et hosts . NO nmap requis / NO sudo requied .

En s'appuyant sur cela, vous pouvez créer un script Python:

 #!/usr/bin/env python """List all hosts with their IP adress of the current network.""" import os out = os.popen('ip neigh').read().splitlines() for i, line in enumerate(out, start=1): ip = line.split(' ')[0] h = os.popen('host {}'.format(ip)).read() hostname = h.split(' ')[-1] print("{:>3}: {} ({})".format(i, hostname.strip(), ip)) 

Télécharger via

 wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py 

(Ou tout simplement arp … Je n'ai pas vu cela avant)

Je n'ai pas trouvé les réponses existantes assez satisfaisantes, alors j'ai pensé essayer. Après tout, la FAQ suggère de fournir un contexte pour les liens .

nmap est génial, si un peu confus à utiliser. Voici quelque chose que je cours pour découvrir les périphériques réseau locaux qui sont principalement copier-coller-capable. nmap -sP (ou nmap -sn ) analyse par ping . Il existe d'autres options pour la «découverte de l'hôte», comme avec nmap -sL ou nmap -Pn .

Chemin # 1.

 ehtesh@x200arch:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1. ehtesh@x200arch:~$ ip addr show wlp3s0 | grep "inet " inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0 ehtesh@x200arch:~$ arp -a ? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0 ehtesh@x200arch:~$ nmap -sP 172.18.72.0/24 Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-12-17 20:08 EST Nmap scan report for 172.18.72.2 Host is up (0.017s latency). <... 15 IP addresses snipped ...> Nmap scan report for 172.18.72.253 Host is up (0.13s latency). Nmap done: 256 IP addresses (17 hosts up) scanned in 5.74 seconds ehtesh@x200arch:~$ arp -a | sort -n -k 1,1 ? (172.18.72.126) at ec:35:86:4a:37:d2 [ether] on wlp3s0 ? (172.18.72.148) at 10:9a:dd:b8:79:71 [ether] on wlp3s0 ? (172.18.72.178) at 9c:20:7b:7b:08:ba [ether] on wlp3s0 ? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0 ? (172.18.72.253) at b8:78:2e:19:05:0b [ether] on wlp3s0 ? (172.18.72.2) at 00:14:1c:da:e1:c2 [ether] on wlp3s0 ? (172.18.72.40) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0 ? (172.18.72.43) at d8:c7:c8:ce:0f:60 [ether] on wlp3s0 ? (172.18.72.44) at d8:c7:c8:ce:0f:68 [ether] on wlp3s0 ? (172.18.72.45) at 6c:f3:7f:c6:71:16 [ether] on wlp3s0 ? (172.18.72.46) at 6c:f3:7f:c4:4c:b3 [ether] on wlp3s0 ? (172.18.72.47) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0 ? (172.18.72.48) at 24:de:c6:c6:b6:78 [ether] on wlp3s0 ? (172.18.72.49) at 24:de:c6:c6:b6:e6 [ether] on wlp3s0 ? (172.18.72.51) at 00:9c:02:d0:4c:4e [ether] on wlp3s0 ? (172.18.72.54) at 00:23:76:99:99:bf [ether] on wlp3s0 ? (172.18.72.62) at 8c:70:5a:0d:06:18 [ether] on wlp3s0 ? (172.18.72.63) at 7c:e9:d3:51:86:55 [ether] on wlp3s0 ? (172.18.72.64) at a0:88:b4:47:eb:c8 [ether] on wlp3s0 

Chemin # 2. Je sais que cela fonctionne, mais je ne peux pas dire si c'est le bon chemin à parcourir.

 ehtesh@x200arch:~$ #ifconfig | grep broadcast ehtesh@x200arch:~$ ip address show wlp3s0 | grep brd link/ether 00:1e:65:bf:1b:42 brd ff:ff:ff:ff:ff:ff inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0 ehtesh@x200arch:~$ ping -b -c 3 -i 20 172.18.75.255 <... similar output to above ...> 

Je serais heureux de savoir s'il existe des moyens plus efficaces. Jusque-là, je m'en occupe.

Vous pouvez essayer de faire un ping sur un sous-réseau donné avec un petit script shell linux, par exemple

 $ for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done 

Hunt est un outil de ligne de commande capable de créer une liste de machines qui diffusent sur le réseau pour plus d'informations. Il utilise les données TCP, UDP, ICMP et ARP pour créer une liste d'adresses MAC actives sur un réseau. C'est un outil passif qui fonctionne en écoutant le fil.

Pour analyser l'état d'une gamme d'adresses IP, c'est sympa et simple:

 sudo nmap -sn 192.168.1.2-20 

Où:

  -sn: Ping Scan - disable port scan 

Remarque:

 In previous releases of Nmap, -sn was known as -sP.. 

Je l'ai fait sur Mac OS X (qui est basé sur BSD). Je ne sais pas si la version Linux a des différences.

Pour une liste plus compacte des périphériques connectés:

 nmap -sL 192.168.0.* | grep \(1 

Explication.

nmap -sL 192.168.0.* toutes les adresses IP en sous-réseau et marque celles qui ont le nom:

 Nmap scan report for 192.168.0.0 Nmap scan report for Dlink-Router.Dlink (192.168.0.1) Nmap scan report for 192.168.0.2 ... Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53) ... Nmap scan report for 192.168.0.255 

Comme tous les enregistrements intéressants commencent par parenthèse ( et le chiffre 1 , nous filtrons pour cela avec | grep \(1 (la barre oblique inverse est nécessaire pour échapper aux parenthèses)

Bizarrerie
Attention, si deux appareils ont le même nom, nmap affichera seulement celui qui était connecté au routeur en dernier