Existe-t-il un moyen de ping ARP sous Windows?


26

Sur Linux et d'autres systèmes, il existe un utilitaire appelé arping qui peut être utilisé pour envoyer des requêtes ARP ("pings") et afficher les réponses, un peu comme l'utilitaire "ping" mais en utilisant ARP au lieu d'ICMP.

Existe-t-il un moyen de faire de même sous Windows? (J'utilise Windows 7)

Réponses:


15

Arping pour Windows existe réellement.

http://freshmeat.net/projects/arping/

Correction: c'est pour Linux, MAC OSX, etc ... mais peut être installé sur windows via cygwin.


Pour être clair, tout ce qui se trouve sur le réseau de nos jours doit répondre à ARP, donc à peu près tout ce qui "supporte" le ping ARP. Qu'ils aient ou non un bon utilitaire emballé avec un arc pour le faire est la question.
Qix

14

Si vous effacez le cache arp de Windows (arp -d) et essayez ensuite d'envoyer une requête ping à l'adresse IP, il émettra une diffusion arp.

Découvrez-le avec Wireshark.


Ce comportement est-il garanti?
Pacerier

2
@Pacerier: Oui, car ICMP (ping) est construit au-dessus de la couche IP. La couche IP a besoin de l'adresse matérielle pour une adresse IP donnée afin de savoir à qui envoyer son paquet. Si le cache ARP est vide, la couche IP n'aura d'autre choix que d'émettre une demande ARP avant de pouvoir envoyer le paquet.
Cameron

1
Ce comportement n'est PAS garanti. Cela ne se produira que si l'adresse IP est accessible selon les règles de sous-réseau; sinon, il utilisera l'adresse IP de la passerelle par défaut pour émettre une demande ARP.
Peter Crabtree

6

La commande ARP de WinXP sert uniquement à afficher les données. Essayez Nmap, c'est gratuit et assez facile pour ce type de scan. Nmap est disponible sur insecure.org.


4
C'est probablement le plus proche que je puisse obtenir de l'utilitaire d'arping (en utilisant nmap -PR -sP <hôte>). Félicitations, vous avez gagné.
Etienne Dechamps

1
@ e-t172 Avec les nouvelles versions de nmap, la commande nmap -PR -sn <host>est préférée. -sPest obsolète. De plus, cela n'a fonctionné pour moi que lorsque je l'ai exécuté en tant que root.
Nic

5

Une manière intégrée de le faire dans Windows:

cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,0,2) do @ping -n1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "

Wow, c'est hardcore - je l'aime! Et ça fonctionne presque ici. En fait, je devais ajouter un espace entre les deux -net 1c'est ainsi devenu:... @ping -n 1 ...
saulius2

Cette boucle fonctionne pour toujours. Je pense que ce que vous vouliez c'est cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,1,2) do @ping -n 1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "exécuter deux fois et donc ramasser les adresses MAC en double.
parsley72

3

Il ne s'agit pas exactement d'un "ping" ARP mais l'exécution de "arp inet_addr (adresse IP)" à partir d'une invite de commande enverra une seule requête ARP à l'hôte spécifié dans (adresse IP). Vous pouvez ensuite exécuter "arp -a" pour voir le résultat.


Ça ne marche pas. Je reçois mon message mais rien ne s'est passé. Un renifleur n'a montré aucune demande ARP. Même résultat si l'adresse IP n'est pas déjà dans la table ARP.
Etienne Dechamps

Bon, vous n'obtenez pas de résultat. La commande envoie une seule requête ARP à l'adresse IP, dont vous pouvez ensuite voir le résultat en émettant la commande arp -a. J'ai dit que ce n'était pas exactement un ping arp, mais qu'il n'envoyait qu'une seule demande d'arp.
joeqwerty

Non, ce n'est pas le cas. Comme je l'ai dit, un renifleur de réseau ne montre aucune requête ARP en cours de sortie, et aucune entrée n'est ajoutée à arp -a.
Etienne Dechamps

C'est étrange. Cela fonctionne exactement comme je l'ai décrit sur Windows 7 mais pas sur Windows XP. Désolé.
joeqwerty

1
Ne fonctionne pas non plus pour moi sur Win7, désolé.
Cameron


3

Essayez "arp-ping.exe"

J'ai pensé ajouter cet outil qui s'exécute directement à partir de l'invite de commande:

Options de ligne de commande arp-ping.exe

Usage: arp-ping.exe [options] target
        -s ip : specify source ip
        -n X  : ping X times
        -t    : ping until stopped with CTRL-C
        -x    : exit immediately after successful ping
        -i X  : ping every X seconds
        -d    : do an 'arp -d *' between pings (requires Administrator)
                (-d prevents cached ARP responses on Windows XP.)
        -c    : include date and time on each line
        -m X  : ignore failures that take less than X milliseconds
        -.      : print a dot (.) for every ignored failure
        -l    : print debug log
        -v    : print version and exit

Vers les options de ligne de commande Linux "arping"

Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
-f : quit on first reply
-q : be quiet
-b : keep broadcasting, don't go unicast
-D : duplicate address detection mode
-U : Unsolicited ARP mode, update your neighbours
-A : ARP answer mode, update your neighbours
-V : print version and exit
-c count : how many packets to send
-w timeout : how long to wait for a reply
-I device : which ethernet device to use (eth0)
-s source : source ip address
destination : ask for what ip address

1

Comment obtenir une table ARP avec une API d'assistance IP http://www.codeguru.com/cpp/in/internet/internetprotocolip/article.php/c6153

GetIpNetTable: récupère les informations de la table de résolution d'adresse.

SetIpNetEntry: ajoute une entrée à la table ARP.

DeleteIpNetEntry: supprime l'entrée de la table ARP.

CreateIpNetEntry: crée une entrée dans la table ARP.

FlushIpNetTable: supprime toutes les entrées ARP pour l'interface spécifiée de la table ARP

SendARP: envoie une demande ARP pour obtenir l'adresse physique qui correspond à l'adresse IP de destination spécifiée.


0

Malheureusement, il n'y a pas d'outil intégré pour le faire dans Windows, il existe des outils tiers qui le feront, comme Netscan , mais ce n'est pas gratuit



0

Hardping est un programme décent qui le fait.

Il y a la version complète qui coûte de l'argent qui est plus un programme de balayage de ping, mais j'utilise juste la version freeware. Celui gratuit ne fait que 1 ip à la fois, mais c'est tout ce dont j'avais besoin.

Vous l'utiliseriez comme c:> hardping 192.168.1.1 et il répondrait avec le mac ou non.

Je pense qu'ils l'ont retiré de leur site, mais vous pouvez toujours le trouver en recherchant "freeware hardping" sur Google


-1
arp -a your.ip.here.jo

ex: arp -a 192.168.0.1


Cette commande ne recherchera que le cache d'arp actuel, pas un nouvel arp "Who has 192.168.0.1?" demande
Chriz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.