Comment envoyer un paquet ARP à partir d'un programme C?
-
02-07-2019 - |
Question
Je travaille sur un système Linux embarqué en C, je cherche le code source équivalent à l'équivalent de SendARP sous Windows. Des pointeurs?
La solution
Consultez arping . La façon rapide et sale d’envoyer un arp serait de faire:
foo = system("/somepath/arping somehost");
Mais un coup d’œil dans la source d’arping devrait vous donner une meilleure solution.
Cependant, pour la solution complète, vous pouvez créer votre propre fichier et utiliser un socket brut ou libpcap pour l'envoyer.
btw. Si tout ce que vous essayez de faire est de forcer l'envoi d'un fichier arp (mais nécessairement de votre part), vous pouvez y parvenir en supprimant toute entrée arp que vous avez déjà pour votre hôte. Le prochain accès à cette adresse nécessitera l’envoi d’un arp.
par exemple. / usr / sbin / arp -d destination_host_ip
Autres conseils
Cela pourrait vous intéresser: http://cvs.linux-ha.org/viewcvs/viewcvs.cgi/linux-ha/resources/heartbeat/SendArp.in?rev=1.4
C’est une implémentation dans un script Bourne Shell.
Je n'ai jamais rien vu de particulier pour ARP, mais je pense que vous pouvez envoyer n'importe quel type de paquet à l'aide de libpcap et les RFC appropriées.