Projet Cappath

Introduction

Je suis Lucas, étudiant en dernière année de l'ENSIMAG, et plus particulièrement dans la filière CSE. J'effectue mon projet de fin d'études dans le Laboratoire informatique de Paris 6. Dans ce cadre, je dois récolter des données en provenances des utilisateurs finaux, et par conséquence j'ai besoin de l'aide de volontaires.

Mode opératoire

Objectif

J'ai besoin de découvrir les méthodes que l'on peut utiliser pour évaluer la performances des premiers noeuds du réseau. Pour ce faire, j'ai développé un outil qui permet de tracer les sauts que font vos paquets IP sur internet. Ensuite, pour chacun des relais trouvés, j'essaye de découvrir le types de paquets auquel ils sont suceptibles de répondre.

Données mesurées

Par rapport à un traceroute classique, je ne fais pas grand chose. En gros, pour chaque saut IP découvert, j'effectue un suite de mesures en leur envoyant quelques paquets IP: des paquets ICMP "echo" et "timestamp", des paquets UDP et TCP sur le port "echo", à l'avenir on pourrait imaginer bien d'autres techniques. Le but étant de savoir quelles méthodes on peut utiliser pour avoir des réponses de la part des routeurs internes du réseau, évaluer la charge que cela implique d'implémenter une technique de la littérature scientifique.

Collecte des données

Pour ce qui est important: il n'y a aucune donnée nominative d'envoyée. Un rapport de mesures contient:

Lorsque vous fermez l'application, celle-ci établit une connection FTP sur un serveur pour y déposer son fichier de rapport de mesures.

Résultats

A venir ...

Cappath, l'outil

Téléchargement et installation

MS Windows

A ce jour, vous aurez besoin d'installer une librairie avant de pouvoir utiliser cappath.

Malheureusement, avec Windows Vista, le logiciel ne marche pas.

GNU Linux

Etant donné qu'il y a beaucoup de distributions Linux différentes, je vais me contenter de lister les dépendances nécessaires.

A noter qu'avec certaines distributions (Debian, Ubuntu etc.) certains de ces packages sont disponibles via les outils de gestions de paquets (apt-get par exemple).

Mais en gros, vous aurez besoin de:

Une fois ceci installé vous pourrez télécharger et exécuter cappath depuis la ligne de commande le dossier où vous l'aurez téléchargé (voir fichier README).

MacOS

Pour MacOS, c'est un peu comme pour Linux, mais j'embarque une version de 'scapy' dans le code directement. Vous n'aurez donc "qu'a" installer libdnet, libpcap et leurs wrappers python si vous ne les avez pas déjà. Les étapes sont à peu près les mêmes que pour Linux, veuillez donc vous y reporter.

Code source

Conformément à la licence GPL de scapy, librairie principale du logiciel, ce logiciel est également sous licence GNU GPL. C'est à dire que vous pouvez le modifier et le redistribuer à votre guise selon les mêmes conditions:

Utilisation

Important

L'outil est à utiliser une fois, mais vous pouvez le lancer plusieurs fois si vous le voulez.

Une passe peu durer quelques minutes si l'outil a trouvé beaucoup de noeuds IP. Pendant qu'il tourne, vous pouvez faire un usage normal de votre ordinateur, ou aller prendre un goûter.

Si vous voulez m'aider en faisant des mesures depuis plusieurs endroits, veuillez à reconfigurer l'application (pour l'identifiant unique et le fournisseur d'accès):

Mode ligne de commande

Je présume que ce mode-ci sera plutôt utile aux utilisateurs de Linux qu'aux utilisateurs de Windows. L'interface en ligne de commande manque sérieusement de développement, et permet un peu moins de contrôle que la version graphique à ce jour. En gros, elle effectuera toujours tous les tests possibles. Faîtes :

$ ./run.py --help
pour avoir une liste des options de la ligne de commande.

Pour executer correctement cappath, vous allez avoir besoin des privilèges utilisateurs (scapy en a besoin pour forger les paquets de données). En général il faut utiliser la commande :

$ sudo ./run.py --no-gui
dans le dossier où vous avez dézippé l'archive. Autrement, il faudra préalablement vous connecter en mode super-utilisateur avec :
$ su root
# ./run.py --no-gui
Pour lancer le mode graphique, vous aurez deviné qu'il suffit de ne pas mettre l'option --no-gui.

Mode interface graphique

L'interface graphique utilise la librairie TK et son "binding" python. En règle générale, ces deux librairies sont déjà installées (sous Linux) ou embarquées dans l'application (pour Windows). Et vous n'aurez donc pas à les installer.

Au premier lancement, une fenêtre vous invite à sélectionner votre fournisseur d'accès. Cela nous permet d'avoir plus d'informations sur la coopération ou non des fournisseurs ainsi que leur politique de configuration du réseau (s'ils laissent passer les sondes de mesures, y répondent et avec quelles limitations).

Une fois sélectionné, vous pouvez choisir un ou plusieurs hôtes vers lequel vous voulez découvrir les routes (ce sera une liste de noms de domaines ou d'adresses IP séparés par des espaces). En dessous une liste des méthodes à utiliser pour tracer la route (laissez tout coché pour nous envoyer le plus d'informations). Le bouton "Run" entâme la mesure, le bouton "Quit" ferme l'application et envoie le rapport de mesures.

Une fois les mesures terminées le panneau de texte sur la droite présente le rapport des mesures effectuées tel qu'il sera envoyé au serveur de collecte. La liste de droite références les adresses IP découvertes sur les routes. Vous pouvez sélectionner ces adresses pour avoir des détails sur les réponses qu'elles envoient aux diverses techniques de mesure. Pour le moment, on a pas accès aux résultats "par route" tracées.

Problèmes connus:

Captures d'écran

Ecran de configuration du fournisseur d'accès avec Linux :

Et ici la fenêtre de fonctionnement avec windows :

Futur de l'outil

A priori, cet outil n'est pas déstiné à vivre longtemps. Cela dit, s'il s'avère attiser la curiosité des gens, et si des personnes sont prêtes à l'améliorer, j'aimerai rajouter des timestamps précises et pourquoi pas une visualisation "graphique" des différentes routes.

Liens et références

Contacts

Remerciements

Bien entendu, il m'aurait été impossible de développer un tel outil qui fonctionne à la fois sous windows et linux si j'avais dû tout coder moi-même. C'est pourquoi je remercie les contributeurs des outils suivants:

Divers

Si vous êtes afficionados de traceroutes et autres outils de ce genre, je conseille (mais peut-être que vous les connaissez déjà):

Si vous êtes intéressés par des développements plus poussés sur cet outil, ou si vous avez des suggestions ou remarques à faire, n'hésitez pas à m'en faire part. Vous pouvez tout à fait contribuer à cet outil.