arp-scan - manuel de référence, options, exemples de commandes


NOM

arp-scan - Envoyer des requêtes ARP aux hôtes cibles et afficher les réponses

SYNOPSIS

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).

DESCRIPTION

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 :

Linux with POSIX.1e capabilities support using libcap:

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.

BSD and macOS:

Vous avez besoin d'un accès en lecture/écriture à /dev/bpf*

Any operating system:

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.

OPTIONS

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 :

<s>

Chaîne de caractères.

<i>

Entier décimal, ou hexadécimal s'il est précédé de 0x, par ex. 2048 ou 0x800.

<f>

Nombre décimal à virgule flottante.

<m>

Adresse MAC, par ex. 01:23:45:67:89:ab ou 01-23-45-67-89-ab (insensible à la casse)

<a>

Adresse IPv4, par ex. 10.0.0.1

<h>

Données binaires codées en hexadécimal. Pas de 0x en tête. (insensible à la casse).

<x>

Autre chose - voir la description de l'option.

Options générales

--help or -h

Affichez ce message d'utilisation et quittez.

--verbose or -v

Affichez des messages de progression détaillés. Peut être utilisé plus d'une fois pour augmenter la verbosité. Max=3.

--version or -V

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.

--interface=<s> or -I <s>

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).

Sélection de l'hôte

--file=<s> or -f <s>

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.

--localnet or -l

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.

Fichiers de mappage MAC/fournisseur

--ouifile=<s> or -O <s>

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é.

--macfile=<s> or -m <s>

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é.

Contrôle du format de sortie

--quiet or -q

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é.

--plain or -x

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.

--ignoredups or -g

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.

--rtt or -D

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.

--format=<s> or -F <s>

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}'

Randomisation de la liste d'hôtes

--random or -R

Randomisez la liste des hôtes cibles.

--randomseed=<i>

Amorcer le générateur de nombres pseudo-aléatoires. Utile si vous souhaitez une commande --aléatoire reproductible.

Synchronisation de sortie et nouvelle tentative

--retry=<i> or -r <i>

Définissez le nombre total de tentatives par hôte sur <i>, par défaut=2.

--backoff=<f> or -b <f>

Définissez le facteur d'interruption sur <f>, par défaut=1,50. Multiplie le délai d'attente par <f> pour chaque passage.

--timeout=<i> or -t <i>

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.

--interval=<x> or -i <x>

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é.

--bandwidth=<x> or -B <x>

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.

Résolution DNS

--numeric or -N

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.

--resolve or -d

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.

Paquet ARP de sortie

--arpsha=<m> or -u <m>

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.

--arptha=<m> or -w <m>

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.

--arphrd=<i> or -H <i>

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).

--arppro=<i> or -p <i>

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).

--arphln=<i> or -a <i>

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.

--arppln=<i> or -P <i>

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.

--arpop=<i> or -o <i>

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).

--arpspa=<a> or -s <a>

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.

En-tête Ethernet de sortie

--srcaddr=<m> or -S <m>

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.

--destaddr=<m> or -T <m>

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.

--prototype=<i> or -y <i>

Définit le type de protocole Ethernet, default=0x0806. Cela définit le champ du type de protocole dans l'en-tête Ethernet.

--llc or -L

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.

--vlan=<i> or -Q <i>

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.

Options diverses

--limit=<i> or -M <i>

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.

--pcapsavefile=<s> or -W <s>

É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.

--snap=<i> or -n <i>

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.

--retry-send=<i> or -Y <i>

Définir le nombre de tentatives d'envoi, par défaut=20.

--retry-send-interval=<i> or -E <i>

Définir l'intervalle entre les tentatives d'envoi. L'intervalle est en millisecondes ou microsecondes si "u" est ajouté. par défaut=5.

--padding=<h> or -A <h>

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 .

ETAT DE SORTIE

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.

DES DOSSIERS

/usr/share/arp-scan/ieee-oui.txt

Liste des mappages IEEE OUI (Organisationally Unique Identifier) vers les fournisseurs.

/etc/arp-scan/mac-vendor.txt

Liste des autres mappages Ethernet MAC vers fournisseur, y compris les ajouts locaux.

EXEMPLES

Numérisation simple

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 responded

Formatage de sortie

Analysez 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

Sortie CSV

--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"

VOIR ÉGALEMENT

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.