6 avr. 2008

Effectuer des requêtes RARP sous Linux

Pour mémoire, le protocole RARP, définit par la RFC 903 permet à une machine de connaitre l'adresse IP d'une machine (par exemple elle même) à partir de son adresse matérielle (ou adresse MAC).

Si des requêtes ARP peuvent être forgées à partir de l'outil ARPING, il n'existait pas à ma connaissance d'outil similaire pour les systèmes Gnu/Linux.
C'est chose faite avec RARPING, le logiciel est écrit en C, sans dépendance particulière (système Gnu/Linux, un compilateur C digne de ce nom et c'est tout...). Le projet est hébergé sur Google Code, vous pouvez récupérer le code soit par svn :

svn co http://rarping.googlecode.com/svn/trunk/ rarping-read-only

Soit via votre browser à la homepage du projet : http://code.google.com/p/rarping

J'ai plusieurs idées pour améliorer rarping. Il devrait donc encore évoluer de façon importante. Notamment quant à la possibilité pour l'utilisateur de définir le timeout, et l'usurpation d'adresses IP et MAC dans les requêtes. D'autres petites choses comme un meilleur contrôle des sorties (niveau de verbosité, logs...)

Les commentaires sont de type Doxygen et relativement abondants.
Ils suffisent je pense à comprendre le fonctionnement du programme.

L'utilisation requiert la CAP_NET_RAW (cf. man capabilities) pour être utilisé du fait qu'il ouvre une socket de types SOCK_RAW (envoi de données brutes sur le réseau), donc sur la majorité des machines, il faudra être root.
La ligne de commande est relativement simple et classique :


root@debianne:# ./rarping -h
RARPING (null) on (null)
Usage : ./rarping [-h] [-c count] [-I interface] request_MAC_address
-h : print this screen and exit
-V : print version and exit
-c count : send [count] request(s) and exit
-I interface : network device to use
request_MAC_address : hardware address we request associated IP address
For example : ./rarping -I eth0 00:03:13:37:be:ef


root@debianne:# ./rarping -c 1 -I eth0 00:16:32:2e:15:b6
RARPING 00:16:32:2e:15:b6 on wlan0
Reply received from 192.168.1.14 (00:11:d9:6a:51:c4) : 00:16:32:2e:15:b6 has 192.168.1.13
Sent 1 request(s)
Received 1 response(s)



Si vous trouvez des bugs, avez des idées pour améliorer le programme, des questions ou n'importe quoi qui concerne de près ou de loin rarping n'hésitez pas à m'en faire part!

1 commentaire:

Anonyme a dit…

Bon travail,
Je cherchais un tel outil (pour ne pas en coder un from scratch moi même :-)) depuis longtemps.