Attention, ce programme est loin d’être fini, et les procédures d’installation n’ont pas pu être testées sur tous les systèmes.

Pourquoi ?
Principe
Installation
Guide
Download : WinFM.zip
Extensions
ToDo

Pouquoi ?

Il est souvent utile de connaître la quantité de données qui a transité par le réseau. Divers outils existent déjà, mais ne sont pas pratique lorsqu’on est sur un réseau local, et qu’on ne désire pas comptabiliser les échanges effectués sur le réseau local.

Des solutions existent sous linux, (voir IPFM), mais peu sous Windows. Un projet, ethereal a rendu ça possible aussi sans douleurs sous Windows.

Mais je n’ai pas trouvé que l’utilisation était pratique. Je voulais quelque chose qui puisse simplement afficher la quantité téléchargée depuis l’extérieur.J’ai donc écrit une petite application pour faciliter tout cela.

Principe

Le principe est très simple, et tiré du monde Unix : il s’agit d’utiliser :

  • tethereal : detecte les paquets réseau et les trie selon un filtre qu’on lui donne en paramètre. Ce programme est en mode console, sa sortie est ensuite redirigée à l’aide d’un tube pour la suite du script
  • un peu de grep/awk qui a pour mission de récuperer l’information qui nous intéresse, à savoir la somme des paquets reçus. La sortie de ce script est ensuite redirigée dans un tube nommé .pipewinfm pour pouvoir être lu dans l’application windows.
  • l’application Windows l’application Windows, qui a lancé ces scripts, va récupérer simplement les informations qui l’intéresse par l’intermédiaire du tube nommé, et le présenté dans la TrayBar

Pour trier les paquets, ce qui m’intéresse essentiellement est la taille des paquets arrivant sur mon ordinateur (dst host xxx.xxx.xxx.xxx) depuis des ordinateurs non situés sur le réseau local (and not src host xxx.xxx, pour le cas d’une classe B). J’utilise ensuite l’option -V pour que tethereal décode les paquets pour moi et me donne la taille, qui est récupérée ensuite avec un grep. Le awk ser a sommer tous les paquets.
Les outils sed et awk sont ceux de l’excellent port pour windows de l’environnemen unix : cygwin.

Installation

L’installation n’est pour l’instant pas des plus simples :

  1. Décompactez l’archive
  2. Installez le driver NDIS
  3. Installez le Packet.dll correspondant à votre système d’exploitation
  4. Copiez le répertoire contenant les programmes la ou vous voulez

Pour les trois premiers points, vous pouvez vous réferez à la documentation d’ethereal. Si vous arrivez à faire fonctionner ethereal, vous n’aurez aucune difficulté à faire fonctionner le programme.

Il reste maintenant une petite étape de configuration : vous devez mettre votre adresse IP (winipcfg ou ipconfig pour le connaître) dans le fichier script.bat à la place de src host xxx.xxx.xxx.xxx. N’oubliez pas non plus d’adapter le réseau que vous voulez surveiller (not dst host xxx.xxx).

Guide

Lancez le fichier WinFM.exe. Vous devriez voir apparaître dans la TrayBar (à gauche de l’heure) une petite icône qui vous était jusque là inconnue.

Fonctionnement global

  • Arrêtez vous quelques instants sur l’icône. Une bulle vous donnera la quantité consommée depuis le démarrage de l’application. Attention les deux premières valeurs ne sont pas significatives (c’est à dire, au moins deux paquets doivent avoir transité sur ce réseau).
  • Dans le menu contextuel, Settings vous permet de paramètrer un peu l’application. Vous pouvez definir deux niveaux d’alertes. Le premier niveau (niveau Jaune) consiste juste à afficher l’icône au fond jaune lorsque l’on double clique sur l’icône. Le deuxième niveau (Rouge), change l’icône même si vous ne double cliquez pas. Vous pouvez demander aussi d’additionner systématiquement (ou soustraire) une certaine valeur (pratique pour les reports de quantités téléchargées d’un reboot à l’autre)
  • Check dans le menu, ou un double clic sur l’icône affiche pendant quelques instants le niveau d’alerte, vert jaune ou rouge.

Download

Binaires : distribution complète WinFM.zip
Les sources ne sont pas encore disponible, car le code n’est vraiment pas présentable pour l’instant.

Extensions

Si vous avez bien suivi, en fait l’application n’est en rien spécifique à tethereal. Elle appelle uniquement le script.bat qui peut contenir tout à fait autre chose, pourvu que le script ait comme sortie une suite de nombres à afficher dans la TrayBar.

L’utilisation des tubes nommés (named pipes) est sans doute la façon la plus facile de récuperer le résultat d’une commande DOS dans un programme Windows.
Pour ce qui est de l’écriture : monprgmdos > .pipenameofthepipe.
Pour ce qui est de la lecture, l’adaptation du programme d’exemple de MSDN se fait sans douleurs.

To Do List

  • Faire le ménage dans le code
  • Bug : Pour l’instant les programmes lancés ne se terminent pas, malgré quelques TerminateProcess.
  • Bug : Information fausse tant que deux paquets ne sont pas arrivés.
  • Liste des adresses DNS lors de la communication
  • Support de deux canaux : upload/download (déjà réalisable en lançant deux instances du programme et en intervertissant src et dst dans script.bat)

Mais cela risque d’attendre un peu, sinon un certain chef de projet d’un certain projet C’Nedra va pas être content 🙂