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:
- Un identifiant unique généré à chaque fois que vous reconfigurez votre application (i.e. avec l'option "-r")
- Les addresses IP des noeuds trouvés sur les chemins demandés
- Les capacités de réponses de chacun de ses noeuds
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.
- Téléchargez et installer WinPcap (téléchargement .exe)
- Téléchargez et dézipper l'archive suivante cappath_0_3_5_win.zip
- Exécutez "run.exe" depuis ce répertoire
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:
- python version 2.5 ou plus
En général, il sera déjà installé (ou alors vous êtes assez geek pour savoir le mettre vous-même). Vous pouvez vérifier votre version avec la commande:
$ python --version
- scapy "latest" version. Cf. infos distribution par distribution ou encore téléchargement zip
- archive cappath cappath-0.3.5.tar.gz
- Les autres dépendances éventuelles sont libdnet (archive .tar.gz) et libpcap (archive.tar.gz), et le "wrapper" python de libpcap (lien vers pylibpcap). A noter que le wrapper python pour libdnet se trouve dans l'archive précédente, répetoire python.
- Pour installer une de ces archives, il faut suivre une les procédures suivantes:
./tar -xvzf
. En ce qui concerne les wrappers python, il faut plutôt utiliser# dézippe l'archive cd # se place dans l'archive ./configure # prépare le programme make # compile le programme sudo make install # installe le programme python ./setup.py build sudo python ./setup.py install
qui sont l'équivalent de la préparation, compilation et installation des programmes.
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):
- En lançant l'outil avec l'option '-r'
- En effaçant le contenu du fichier 'cappath.cfg' dans le répertoire 'config'
- En dézippant l'archive de nouveau
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 --helppour 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-guidans 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-guiPour 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:
- "Freeze" de l'interface graphique : pour l'instant, soit on fait des mesures, soit on rend la main à l'utilisateur, pendant le temps de la mesure, on ne peut donc pas "suivre en direct". Si j'ai du temps pour améliorer ça, ce sera fait.
- Firewalls : certains firewall vont bloquer l'application, il faudrait l'autoriser le temps de la mesure.
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
- LIP6 - NPA
- Email: "lucas" . "di-cioccio" arobase "npa" . "lip6" . "fr"
- Webpage: dicioccio.fr
- My mentor: Renata Teixeira
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.