Comment puis-je lister tous les adresses MAC et leurs associés adresses IP des machines connectées à mon réseau local (LAN)?
Vous pouvez utiliser l'utilitaire Nmap pour cela. Nmap est un utilitaire d'analyse de réseau gratuit.
Essayez juste:
Sudo nmap -sn 192.168.1.0/24
Veuillez remplacer votre identifiant de réseau et votre masque de sous-réseau.
Comment trouver un identifiant réseau et un masque de sous-réseau
Utilisez la commande ip a
:
bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
inet6 ::1/128 scope Host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever
Ici, au point 2, j'ai le périphérique wlan0
. Il indique inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
, adresse IP: 192.168.3.66
, masque de sous-réseau: 24
. L'ID réseau est 192.168.3.0
, il suffit de remplacer le dernier chiffre par 0.
Ou comme le dit l'homme nmap
:
Sudo nmap -sn 192.168.1.0/24
Voici une petite citation de la page de manuel, nmap (1) :
-sn (No port scan)
Cette option indique à Nmap de ne pas effectuer d'analyse du port après la découverte de l'hôte et d'imprimer uniquement les hôtes disponibles ayant répondu à l'analyse. Ceci est souvent appelé "analyse du ping", mais vous pouvez également demander que les scripts de l'hôte traceroute et NSE soient exécutés.
Il s'agit par défaut d'une étape plus intrusive que l'analyse de liste et peut souvent être utilisé aux mêmes fins. Il permet une reconnaissance légère d'un réseau cible sans attirer beaucoup d'attention.
Pour les attaquants, il est plus utile de connaître le nombre d'hôtes actifs que la liste fournie par l'analyse de la liste de chaque adresse IP et nom d'hôte.
Les administrateurs système trouvent souvent cette option intéressante. Il peut facilement être utilisé pour compter les machines disponibles sur un réseau ou pour surveiller la disponibilité du serveur. Cela s'appelle souvent un balayage de ping et est plus fiable que de faire un ping sur l'adresse de diffusion car de nombreux hôtes ne répondent pas aux requêtes de diffusion.
La découverte d’hôte par défaut effectuée avec
-sn
consiste en une demande d’écho ICMP, TCP SYN sur le port 443, TCP ACK sur le port 80, et une demande d'horodatage ICMP par défaut.
Lorsqu'ils sont exécutés par un utilisateur sans privilège, seuls les paquets SYN sont envoyés (à l'aide d'un appel connect
) aux ports 80 et 443 de la cible.
Lorsqu'un utilisateur privilégié tente d'analyser des cibles sur un réseau Ethernet local, les demandes ARP sont utilisées sauf si --send-ip
a été spécifié. L'option -sn
peut être combinée à n'importe quel type de sonde de détection (les options -P*
, à l'exclusion de . -Pn
) pour une plus grande flexibilité.
Si l'une de ces options de type de sonde et de numéro de port est utilisée, les sondes par défaut sont remplacées. Lorsque des pare-feu stricts sont en place entre l'hôte source exécutant Nmap et le réseau cible, il est recommandé d'utiliser ces techniques avancées. Sinon, des hôtes risquent de ne pas être détectés lorsque le pare-feu abandonne les sondes ou leurs réponses.
Dans les versions précédentes de Nmap,
-sn
était appelé-sP
.
arp
lentement vous renverra une liste des adresses MAC et des adresses IP actives ou de leurs noms d'hôte, le cas échéant. Si vous voulez que cela aille plus vite, vous pouvez utiliser arp -n
qui devrait ignorer les recherches DNS. Si vous devez l’analyser dans quelque chose, arp -an
ignorera les colonnes de largeur fixe.
$ arp
Address HWtype HWaddress Flags Mask Iface
10.10.0.11 ether 00:04:ff:ff:ff:d0 C eth0
10.10.0.16 ether 00:04:ff:ff:ff:a6 C eth0
raspbmc.local ether 00:1f:ff:ff:ff:9c C eth0
10.10.0.19 ether 00:04:ff:ff:ff:c9 C eth0
10.10.0.12 ether bc:f5:ff:ff:ff:93 C eth0
10.10.0.17 ether 00:04:ff:ff:ff:57 C eth0
10.10.0.1 ether 20:4e:ff:ff:ff:30 C eth0
HPF2257E.local ether a0:b3:ff:ff:ff:7e C eth0
10.10.0.15 ether 00:04:ff:ff:ff:b9 C eth0
tim ether 00:22:ff:ff:ff:af C eth0
10.10.0.13 ether 60:be:ff:ff:ff:e0 C eth0
Sinon, votre routeur devrait pouvoir vous donner une idée des périphériques actifs (la plupart le font).
Edit Par le commentaire de davidcl, cette réponse n'est pas aussi parfaite que je l'avais espéré.
arp
s'appuie sur des contacts antérieurs pour fonctionner. Cependant, à mon avis, les appareils modernes sont tous si bavards (vous devriez vraiment regarder Wirehark - c'est une éducation) au niveau de la diffusion qu'il est peu probable qu'un appareil soit présent sur le réseau sans au moins répondre à une émission. (Pour être sûr que vous pouvez d'abord envoyer une requête ping à tous les périphériques du réseau avec 10.10.0.255, vous obtiendrez probablement plus de 90% des périphériques.)
Pour vous donner une idée de ce que je veux dire, le 10.10.0.16 ci-dessus est notre PVR. Il n'y a pas d'interaction directe entre mon PC et le PVR et il n'y a pas de services fonctionnant sur le PVR (pas de UPNP/DLNA non plus).
Juste pour jouer à travers les arguments rapidement ...
nmap
reste la meilleure solution possible nmap
est un excellent outil (en particulier pour le port que vous voudrez peut-être faire ensuite), mais il reste un peu maladroit (et un peu lent) pour ce problème. Et ne m'appelle pas Shirley.J'utilise arp-scan
pour cela:
$ Sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1 ec:1a:59:61:07:b2 (Unknown)
192.168.2.50 90:59:af:3d:6d:bc (Unknown)
192.168.2.51 3c:97:0e:48:22:12 (Unknown)
192.168.2.52 00:18:31:87:8f:b0 Texas Instruments
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded
Vous pouvez utiliser arp-scan
.
Installez en utilisant cette commande:
Sudo apt-get install arp-scan
Pour répertorier toutes les adresses IP et les adresses MAC associées, utilisez:
Sudo arp-scan --interface=eth0 --localnet
La sortie ressemblera à ceci:
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36 (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e (Unknown)
192.168.1.110 00:15:17:5f:d2:80 Intel Corporate
192.168.1.111 00:ff:88:5f:fd:f0 (Unknown)
192.168.1.153 00:15:17:5f:d2:82 Intel Corporate
192.168.1.180 52:54:00:70:04:02 QEMU
192.168.1.199 52:54:00:fe:7f:78 QEMU
Vous pouvez essayer avahi-découvrir .
Installez-le avec cette commande (ou en cliquant sur le lien ci-dessus):
Sudo apt-get install avahi-discover
avahi-discover
à partir d’un terminal.Vous pouvez utiliser cette commande dans un terminal:
avahi-browse -a -t -d local
Il est installé par défaut.
Commencez par analyser le réseau pour savoir quels hôtes sont accessibles/en ligne à l'aide de nmap -sn 1.2.3.4/24
ou de fping -g 1.2.3.4/24
.
Interrogez ensuite l'adresse MAC correspondant à l'adresse IP en utilisant arping
name__. Pseudo-code à venir:
for i in $(cat list-of-reachable-hosts)
do
arping $i
done
Cheatery: consultez l'arp-cache de votre commutateur local; cela devrait vous donner un bon aperçu ...
Dans les cas où le protocole NetBIOS est pris en charge, je préfère utiliser
nbtscan 192.168.1.1-192.168.1.255
.
J'ai été intrigué par ce post. J'ai eu besoin de ça.
J'ai écrit un script Shell qui analyse la sortie arp
à l'aide d'instructions awk
et génère une sortie HTML. Si vous exécutez le script et redirigez la sortie vers un fichier HTML, il vous reste un fichier HTML indiquant l'adresse IP, l'adresse MAC complète et un lien vers la page de recherche IEEE OUI. Cela aide à déterminer le client par le biais du fabricant NIC.
printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"
Il est utile d’exécuter d’abord une analyse nmap
sur votre réseau local afin d’avoir des entrées dans la table ARP. Espérons que la mise en forme traduite. Vous pourriez améliorer ceci pour avoir le texte dans un format de tableau.
Après quelques travaux et recherches, j'ai découvert cette commande:
nmap -sP -PE -PA21,23,80,3389 192.168.1.*
nmap:
Outil d'exploration de réseau et scanner de sécurité/port
-sP
(ignorer l'analyse du port). Cette option indique à Nmap de ne pas effectuer d'analyse du port après la découverte de l'hôte et d'imprimer uniquement les hôtes disponibles ayant répondu à l'analyse. Ceci est souvent appelé "analyse du ping", mais vous pouvez également demander que les scripts de l'hôte traceroute et NSE soient exécutés. Il s'agit par défaut d'une étape plus intrusive que l'analyse de liste et peut souvent être utilisé aux mêmes fins. Il permet une reconnaissance légère d'un réseau cible sans attirer beaucoup d'attention. Pour les attaquants, il est plus utile de connaître le nombre d'hôtes actifs que la liste fournie par l'analyse de la liste de chaque adresse IP et nom d'hôte.
-PE; -PP; -PM (
ICMP Ping Types). Outre les types de découverte inhabituels des hôtes TCP, UDP et SCTP décrits précédemment, Nmap peut envoyer les paquets standard envoyés par le programme ping omniprésent. Nmap envoie un paquet ICMP de type 8 (demande d'écho) aux adresses IP cibles, en attendant un type 0 (réponse d'écho) des hôtes disponibles. Malheureusement pour les explorateurs de réseau, de nombreux hôtes et pare-feu les bloquent paquets, plutôt que de répondre comme l'exige la RFC 1122 [2]. Pour cette raison, les analyses ICMP uniquement sont rarement suffisamment fiables contre des cibles inconnues sur Internet. Mais pour les administrateurs système surveillant un réseau interne, ils peuvent constituer une approche pratique et efficace. Utilisez l'option -PE pour activer ce comportement de demande d'écho.
-A
(options d'analyse agressives). Cette option active des options avancées et agressives supplémentaires.
21,23,80,3389
Ports dans lesquels effectuer la recherche
192.168.1.*
Plage d'adresses IP. remplacer par le vôtre
Après m'être fatigué d'utiliser nmap et ARP combo, j'ai créé ce petit programme qui interroge toutes les adresses MAC d'une plage d'adresses IP donnée: https://github.com/drkblog/findmacs
vous pouvez utiliser arp
.
Cela vous montrera le MAC et l'adresse IP ..