arp-scan - Envoyer des requêtes ARP aux hôtes cibles et afficher les réponses
arp-scan [options] [hosts...]
Target hosts must be specified on the command line unless the --file or --localnet option is used.
Targets can be IPv4 addresses or hostnames. You can also use CIDR notation (10.0.0.0/24) (network and broadcast included), ranges (10.0.0.1-10.0.0.10), and network:mask (10.0.0.0:255.255.255.0).
arp-scan envoie des paquets de requête ARP aux hôtes spécifiés et affiche toutes les réponses reçues. L'interface réseau peut être spécifiée avec l'option --interface. Si aucune interface n'est spécifiée, arp-scan sélectionnera l'interface configurée avec le numéro le plus bas (hors bouclage).
arp-scan utilise des sockets bruts, ce qui nécessite des privilèges sur certains systèmes :
arp-scan est conscient des capacités. Il nécessite CAP_NET_RAW dans l'ensemble autorisé et n'active cette capacité que pour les fonctions requises. utilisez setcap cap_net_raw+p /path/to/arp-scan pour ajouter CAP_NET_RAW à l'ensemble autorisé de l'exécutable arp-scan. La prise en charge des capacités rend également la racine SUID beaucoup plus sûre car arp-scan supprimera toutes les fonctionnalités sauf CAP_NET_RAW et ne fonctionnera pas avec les privilèges root complets.
Vous avez besoin d'un accès en lecture/écriture à /dev/bpf*
L'exécution en tant que root ou SUID root fonctionnera sur n'importe quel système d'exploitation, mais d'autres méthodes sont préférables dans la mesure du possible.
ARP ne fonctionne que sur le réseau local et ne peut pas être routé. Bien que le protocole ARP utilise des adresses IPv4, ce n'est pas un protocole IP et arp-scan peut être utilisé sur des interfaces sans adresse IPv4.
Une requête ARP est envoyée pour chaque cible. Si un hôte ne répond pas, la demande sera renvoyée une fois de plus. Le nombre de tentatives peut être modifié avec l'option --retry. La réduction du nombre de tentatives réduira le temps d'analyse au risque de manquer certains résultats en raison de la perte de paquets.
Vous pouvez spécifier la bande passante que arp-scan utilisera avec l'option --bandwidth. La valeur par défaut est de 256 000 bits par seconde. L'augmentation de la bande passante réduira le temps de balayage, mais définir une bande passante trop élevée peut entraîner un débit de paquets de diffusion élevé. Une autre façon de spécifier le débit de paquets consiste à utiliser l'option --interval.
La durée d'une analyse en un seul passage (c'est-à-dire avec --retry=1) est :
temps=n fois i + t + o
Où n est le nombre d'hôtes, i est l'intervalle (donné avec --interval ou calculé à partir de --bandwidth), t est le délai d'attente (spécifié avec --timeout) et o est le temps nécessaire pour charger la liste cible et lire les fichiers de mappage MAC/fournisseur. La surcharge est normalement négligeable (généralement autour de 100 ms) mais peut être encore réduite par l'option --quiet. Pour les petites listes d'hôtes, la valeur du délai d'attente dominera, mais pour les grandes listes, l'intervalle de paquets est la valeur la plus importante.
Toute partie de la requête ARP peut être modifiée à l'aide des options --arpXXX comme indiqué dans le tableau ci-dessous :
TABLEAU
L'option la plus courante est --arpspa, qui définit l'adresse IPv4 source dans la requête ARP, permettant à la requête ARP d'utiliser une adresse source différente de l'adresse de l'interface. Cela permet l'utilisation de arp-scan sur des interfaces sans adresse IPv4. Remarque : Si vous définissez ar$spa sur l'adresse IP de la cible, certains systèmes d'exploitation signalent un conflit d'adresses lorsqu'ils reçoivent une requête ARP pour leur propre adresse.
Vous pouvez également modifier les valeurs dans l'en-tête de trame Ethernet comme indiqué ci-dessous :
TABLEAU
L'option --destaddr qui définit l'adresse Ethernet de destination est la seule couramment utilisée.
Par défaut, les réponses ARP sont affichées au format suivant :
| <IPv4 Address> | <MAC Address> | <Vendor Details> |
Où Adresse IPv4 est l'adresse IP de la cible qui répond, Adresse MAC est son adresse de couche de liaison et Détails du fournisseur sont les détails du fournisseur décodés à partir de l'adresse matérielle. Les champs de sortie sont séparés par un seul caractère de tabulation. Vous pouvez modifier le format de sortie avec l'option --format.
Les réponses sont affichées dans l'ordre de leur réception, qui peut être différent de l'ordre dans lequel les demandes ont été envoyées, car certains hôtes peuvent répondre plus rapidement que d'autres.
Le décodage fournisseur utilise les fichiers ieee-oui.txt et mac-vendor.txt. ieee-oui.txt est généré à partir de l'IEEE MA-L (OUI), MA-M, MA-S (OUI36) et les registres IAB. mac-vendor.txt contient des mappages MAC vers fournisseur supplémentaires et peut être utilisé pour ajouter des mappages personnalisés. get-oui peut être utilisé pour mettre à jour ieee-oui.txt avec les dernières données des registres IEEE.
Tous les hôtes IPv4 doivent répondre aux paquets de requête ARP, y compris les hôtes avec filtrage de paquets tels que les pare-feu. Cela fait de arp-scan un outil utile pour découvrir tous les hôtes IPv4 actifs sur le réseau local.
Lorsqu'une option prend une valeur, cette valeur est spécifiée sous la forme d'une lettre entre crochets. La lettre indique le type de données attendues :
Chaîne de caractères.
Entier décimal, ou hexadécimal s'il est précédé de 0x, par ex. 2048 ou 0x800.
Nombre décimal à virgule flottante.
Adresse MAC, par ex. 01:23:45:67:89:ab ou 01-23-45-67-89-ab (insensible à la casse)
Adresse IPv4, par ex. 10.0.0.1
Données binaires codées en hexadécimal. Pas de 0x en tête. (insensible à la casse).
Autre chose - voir la description de l'option.
Affichez ce message d'utilisation et quittez.
Affichez des messages de progression détaillés. Peut être utilisé plus d'une fois pour augmenter la verbosité. Max=3.
Afficher la version du programme et quitter. Affiche la version, les détails de la licence, la version de libpcap et si la prise en charge de la capacité POSIX.1e est incluse.
Utilisez l'interface réseau <s>. Si cette option n'est pas spécifiée, arp-scan recherchera dans la liste des interfaces système l'interface configurée avec le numéro le plus bas (à l'exclusion du bouclage).
Lire les noms d'hôte ou les adresses à partir du fichier spécifié. Un modèle de nom ou d'adresse par ligne. Utilisez "-" pour stdin.
Générez des adresses à partir de la configuration de l'interface. Génère une liste à partir de l'adresse de l'interface et du masque de réseau (réseau et diffusion inclus). Vous ne pouvez pas utiliser l'option --file ou donner des cibles sur la ligne de commande. Utilisez --interface pour spécifier l'interface.
Utilisez le fichier de mappage de fournisseur de registre IEEE <s>. La valeur par défaut est ieee-oui.txt dans le répertoire courant. Si cela n'est pas trouvé, /usr/share/arp-scan/ieee-oui.txt est utilisé.
Utilisez le fichier de mappage de fournisseur personnalisé <s>. La valeur par défaut est mac-vendor.txt dans le répertoire courant. Si cela n'est pas trouvé, /etc/arp-scan/mac-vendor.txt est utilisé.
Afficher une sortie minimale pour chaque hôte répondant. Seules l'adresse IP et l'adresse MAC sont affichées. Réduit l'utilisation de la mémoire d'environ 5 Mo car les fichiers de mappage du fournisseur ne sont pas utilisés. Seuls les champs $ {ip} et $ {mac} sont disponibles pour l'option --format si - -quiet est spécifié.
Supprimer le texte d'en-tête et de pied de page. Affichez uniquement les détails de l'hôte qui répond. Utile si la sortie sera analysée par un script.
Ne pas afficher les paquets en double. Par défaut, les paquets en double sont signalés par (DUP : n) où n est le nombre de fois que cet hôte a répondu.
Calculez et affichez le temps d'aller-retour du paquet. Le temps est affiché en millisecondes et en fractions de microsecondes. Rend le champ $ {rtt} disponible pour --format.
Spécifiez la chaîne de format de sortie. Le format est une chaîne qui sera sortie pour chaque hôte répondant. Les détails de l'hôte peuvent être inclus en insérant des références aux champs à l'aide de la syntaxe "$ {field[;width]}". Les champs sont affichés alignés à droite sauf si la largeur est négative, auquel cas l'alignement à gauche sera utilisé. Les noms de champ insensibles à la casse suivants sont reconnus :
| IP | Host IPv4 address in dotted quad format |
| Name | Host name if --resolve option given |
| MAC | Host MAC address xx:xx:xx:xx:xx:xx |
| HdrMAC | Ethernet source addr if different |
| Vendor | Vendor details string |
| Padding | Padding after ARP packet in hex if nonzero |
| Framing | Framing type if not Ethernet_II |
| VLAN | 802.1Q VLAN ID if present |
| Proto | ARP protocol if not 0x0800 |
| DUP | Packet number for duplicate packets (>1) |
| RTT | Round trip time if --rtt option given |
Seuls les champs $ {ip} et $ {mac} sont disponibles si l'option --quiet est spécifiée.
Tous les caractères qui ne sont pas des champs sont sortis textuellement. "\" introduit les échappements :
| \n | newline |
| \r | carriage return |
| \t | tab |
| \ | suppress special meaning for following character |
Vous devez placer l'argument --format entre 'guillemets simples' pour protéger les caractères spéciaux du shell.
Exemple : --format='$ {ip}\t$ {mac}\t$ {fournisseur}'
Randomisez la liste des hôtes cibles.
Amorcer le générateur de nombres pseudo-aléatoires. Utile si vous souhaitez une commande --aléatoire reproductible.
Définissez le nombre total de tentatives par hôte sur <i>, par défaut=2.
Définissez le facteur d'interruption sur <f>, par défaut=1,50. Multiplie le délai d'attente par <f> pour chaque passage.
Définissez le délai d'expiration initial par hôte sur <i> ms, par défaut=500. Ce délai est pour le premier paquet envoyé à chaque hôte. les délais d'expiration ultérieurs sont multipliés par le facteur d'interruption qui est défini avec --backoff.
Définissez l'intervalle de paquets minimal sur <x>. Cela contrôle l'utilisation de la bande passante sortante en limitant le débit des paquets. Si vous souhaitez utiliser jusqu'à une bande passante donnée, il est plus facile d'utiliser l'option --bandwidth à la place. L'intervalle est en millisecondes, ou en microsecondes si "u" est ajouté.
Définissez la bande passante sortante sur <x>, default=256000. La valeur est en bits par seconde. Ajoutez K pour les kilobits ou M pour les mégabits (multiples décimaux). Vous ne pouvez pas spécifier à la fois --interval et --bandwidth.
Les cibles doivent être des adresses IP, pas des noms d'hôte. Peut réduire le temps de démarrage pour les grandes listes de cibles.
Résolvez les adresses de réponse en noms d'hôte. Le format de sortie par défaut affichera le nom d'hôte au lieu de l'adresse IPv4. Cette option rend le champ $ {name} disponible pour l'option --format.
Définissez l'adresse Ethernet source ARP. Définit le champ ar$sha 48 bits mais ne modifie pas l'adresse matérielle dans l'en-tête de trame, voir --srcaddr pour savoir comment modifier cette adresse. La valeur par défaut est l'adresse Ethernet de l'interface sortante.
Définissez l'adresse Ethernet cible ARP. Définit le champ ar$tha 48 bits. La valeur par défaut est zéro, car ce champ n'est pas utilisé pour les paquets de requête ARP.
Définissez le type de matériel ARP, default=1. Définit le champ ar$hrd 16 bits. La valeur par défaut est 1 (ARPHRD_ETHER). De nombreux systèmes d'exploitation répondent également à 6 (ARPHRD_IEEE802).
Définissez le type de protocole ARP, par défaut=0x0800. Définit le champ ar$pro 16 bits. La plupart des systèmes d'exploitation ne répondent qu'à 0x0800 (IPv4).
Définissez la longueur de l'adresse matérielle, default=6. Définit le champ ar$hln de 8 bits. Les longueurs des champs ar$sha et ar$tha ne sont pas modifiées par cette option ; cela ne change que le champ ar$hln.
Définissez la longueur de l'adresse de protocole, par défaut=4. Définit le champ ar$pln de 8 bits. Les longueurs des champs ar$spa et ar$tpa ne sont pas modifiées par cette option ; cela ne change que le champ ar$pln.
Spécifiez l'opération ARP, default=1. Définit le champ ar$op 16 bits. La plupart des systèmes d'exploitation ne répondent qu'à la valeur 1 (ARPOP_REQUEST).
Définissez l'adresse IPv4 source. L'adresse doit être au format quadruple pointé, ou la chaîne "dest" qui définit l'adresse source sur l'adresse de l'hôte cible. La valeur par défaut est l'adresse de l'interface sortante. Définit le champ ar$spa 32 bits. Certains systèmes d'exploitation ne répondent que si l'adresse source se trouve dans le réseau de l'interface de réception. Définir ar$spa sur l'adresse IP de destination peut amener certains systèmes d'exploitation à signaler un conflit d'adresses.
Définissez l'adresse MAC Ethernet source. La valeur par défaut est l'adresse MAC de l'interface. Cela définit l'adresse dans l'en-tête Ethernet. Cela ne change pas l'adresse dans le paquet ARP : utilisez --arpsha pour changer cette adresse.
Définissez l'adresse MAC de destination. Définit l'adresse de destination dans l'en-tête Ethernet. La valeur par défaut est ff:ff:ff:ff:ff:ff (diffusion) Les hôtes répondent également si la demande est envoyée à leur adresse de monodiffusion ou à une adresse de multidiffusion sur laquelle ils écoutent.
Définit le type de protocole Ethernet, default=0x0806. Cela définit le champ du type de protocole dans l'en-tête Ethernet.
Utilisez l'encapsulation RFC 1042 LLC/SNAP pour les réseaux 802.2. arp-scan décodera et affichera les réponses ARP aux formats Ethernet-II et IEEE 802.2, quelle que soit cette option.
Utilisez le balisage 802.1Q avec l'ID VLAN <i>. L'ID doit être compris entre 0 et 4095. arp-scan décodera et affichera les réponses ARP au format 802.1Q, quelle que soit cette option.
Quittez après que le nombre spécifié d'hôtes ait répondu. arp-scan se terminera avec le statut 1 si le nombre d'hôtes répondants est inférieur à la limite. Peut être utilisé dans des scripts pour vérifier si moins d'hôtes répondent sans avoir à analyser la sortie.
Écrivez les paquets reçus dans le fichier de sauvegarde pcap <s>. Les réponses ARP seront écrites dans le fichier spécifié, décodées et affichées.
Définissez la longueur d'accrochage pcap sur <i>. Par défaut=64. Spécifie la longueur de capture de trame, y compris l'en-tête Ethernet. La valeur par défaut est normalement suffisante.
Définir le nombre de tentatives d'envoi, par défaut=20.
Définir l'intervalle entre les tentatives d'envoi. L'intervalle est en millisecondes ou microsecondes si "u" est ajouté. par défaut=5.
Spécifiez le remplissage après les données de paquet. Définissez le remplissage après la demande ARP sur la valeur hexadécimale
arp-scan se terminera avec 0 en cas de réussite ou > 0 si une erreur a été rencontrée.
Si l'option --limit est spécifiée, arp-scan se terminera également avec un code de sortie différent de zéro si le nombre d'hôtes répondants est inférieur à la limite spécifiée.
Liste des mappages IEEE OUI (Organisationally Unique Identifier) vers les fournisseurs.
Liste des autres mappages Ethernet MAC vers fournisseur, y compris les ajouts locaux.
Analysez le réseau par défaut à l'aide de la configuration de l'interface IPv4 pour générer la liste des hôtes à analyser.
$ arp-scan --localnet
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
10.0.0.14 a4:1f:72:7f:25:bb Dell Inc.
10.0.0.22 10:60:4b:73:43:de Hewlett Packard
10.0.0.74 00:0c:29:90:07:e9 VMware, Inc.
10.0.0.75 00:0c:29:66:9e:c2 VMware, Inc.
10.0.0.76 00:0c:29:d0:e1:ea VMware, Inc.
10.0.0.82 9c:b6:54:bb:f3:ec Hewlett Packard
10.0.0.84 00:21:9b:fd:b9:b3 Dell Inc.
10.0.0.85 00:02:b3:eb:5a:f8 Intel Corporation
10.0.0.91 00:9c:02:a5:7b:29 Hewlett Packard
10.0.0.92 d4:ae:52:d0:07:6f Dell Inc.
10.0.0.93 d4:ae:52:d0:04:9b Dell Inc.
10.0.0.96 9c:b6:54:bb:f5:35 Hewlett Packard
10.0.0.97 00:0c:29:0e:95:20 VMware, Inc.
10.0.0.104 50:65:f3:f0:70:a4 Hewlett Packard
15 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 1.532 seconds (167.10 hosts/sec). 14 respondedAnalysez tous les hôtes dans 10.0.0.0/24 en utilisant l'interface eth0. Calculez le temps d'aller-retour et affichez-le dans des colonnes alignées à l'aide d'un format personnalisé.
$ arp-scan -I eth0 --rtt --format='|${ip;-15}|${mac}|${rtt;8}|' 10.0.0.0/24
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
|10.0.0.14 |a4:1f:72:7f:25:bb| 0.280|
|10.0.0.22 |10:60:4b:73:43:de| 0.293|
|10.0.0.74 |00:0c:29:90:07:e9| 0.380|
|10.0.0.75 |00:0c:29:66:9e:c2| 0.311|
|10.0.0.76 |00:0c:29:d0:e1:ea| 0.326|
|10.0.0.82 |9c:b6:54:bb:f3:ec| 0.216|
|10.0.0.84 |00:21:9b:fd:b9:b3| 0.244|
|10.0.0.85 |00:02:b3:eb:5a:f8| 0.244|
|10.0.0.91 |00:9c:02:a5:7b:29| 0.209|
|10.0.0.92 |d4:ae:52:d0:07:6f| 0.289|
|10.0.0.93 |d4:ae:52:d0:04:9b| 0.278|
|10.0.0.96 |9c:b6:54:bb:f5:35| 0.255|
|10.0.0.97 |00:0c:29:0e:95:20| 0.288|
|10.0.0.104 |50:65:f3:f0:70:a4| 0.263|
14 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 2.032 seconds (125.98 hosts/sec). 14 responded--plain supprime la sortie superflue.
$ arp-scan -I eth0 --plain --format='${ip},${mac},"${vendor}"' 10.0.0.0/24
10.0.0.14,a4:1f:72:7f:25:bb,"Dell Inc."
10.0.0.22,10:60:4b:73:43:de,"Hewlett Packard"
10.0.0.74,00:0c:29:90:07:e9,"VMware, Inc."
10.0.0.75,00:0c:29:66:9e:c2,"VMware, Inc."
10.0.0.76,00:0c:29:d0:e1:ea,"VMware, Inc."
10.0.0.82,9c:b6:54:bb:f3:ec,"Hewlett Packard"
10.0.0.84,00:21:9b:fd:b9:b3,"Dell Inc."
10.0.0.85,00:02:b3:eb:5a:f8,"Intel Corporation"
10.0.0.91,00:9c:02:a5:7b:29,"Hewlett Packard"
10.0.0.92,d4:ae:52:d0:07:6f,"Dell Inc."
10.0.0.93,d4:ae:52:d0:04:9b,"Dell Inc."
10.0.0.96,9c:b6:54:bb:f5:35,"Hewlett Packard"
10.0.0.97,00:0c:29:0e:95:20,"VMware, Inc."
10.0.0.104,50:65:f3:f0:70:a4,"Hewlett Packard"get-oui(1)
arp-fingerprint(1)
http://www.royhills.co.uk/wiki/ The arp-scan wiki page.
https://github.com/royhills/arp-scan The arp-scan homepage.