p-dor / LiveboxMonitor

Interface graphique de contrôle d'une Livebox 4, 5, 6 ou 7
https://p-dor.github.io/LiveboxMonitor/
MIT License
298 stars 16 forks source link
livebox monitoring python sysbus traffic ui

Icone LiveboxMonitor

L'application LiveboxMonitor est une interface graphique dynamique pour :

AVERTISSEMENT : le programme a été conçu pour contrôler une Livebox 5 et a été adapté avec quelques tests pour les Livebox 4, 6 et 7, des tests supplémentaires avec une Livebox 4, 6 ou 7 seraient bienvenus. Les architectures étant totalement différentes, le logiciel n'est pas compatible avec la "Livebox Pro 4".

L'application est dynamique car elle réagit aux événements envoyés par la Livebox et les interprète.

Interface

Sections de cette documentation

  1. Installation
  2. Configuration minimale
  3. À propos de l'auteur
  4. Discussion
  5. Prise en main
  6. Profils
  7. Options de ligne de commande
  8. Accès à distance
  9. Configuration
  10. Linux
  11. Appareils - Liste des appareils connectés
  12. Stats/Infos Livebox - Statistiques de trafic et infos avancées de la Livebox
  13. Graphes - Courbes de trafic par interface et par appareil
  14. Infos Appareil - Informations détaillées pour chaque appareil connu
  15. Événements - Liste des événements reçus pour chaque appareil connu
  16. DHCP - Contrôle fin du serveur DHCP
  17. NAT/PAT - Règles de redirection de port et de protocole
  18. Téléphone - Liste des appels téléphoniques / liste des contacts
  19. Actions - Boutons d'actions et de contrôle
  20. Onglets répéteurs Wifi
  21. Gestion et personnalisation des icônes d'appareil

Installation

L'application est écrite en Python 3.9 et est basée sur PyQT 6 pour l'interface graphique et sur PyQtGraph pour les graphes statistiques.

Les autres dépendances sont requests, cryptography et python-dateutil.

Note : Le module LmSession est une adaptation du package sysbus pour les Livebox 5,6 & 7. Le support des événements a aussi été rajouté.

Téléchargement - version 1.4 (24/04/2024)

Des programmes autonomes construits avec PyInstaller sont disponibles pour les plateformes Windows & MacOS :

Nouveautés de la version 1.4 et historique des versions : ici ou ici.

PyPI - ici

Installation :

    pip install LiveboxMonitor

Mise à jour :

    pip install --upgrade LiveboxMonitor

Lancement :

    LiveboxMonitor

Utilisation directe via les sources

Installation :

    git clone https://github.com/p-dor/LiveboxMonitor.git  
    cd LiveboxMonitor  
    pip install -r requirements.txt

Lancement :

    cd src\LiveboxMonitor
    python3 lbm.py

Ou via un virtualenv.

Installation :

    git clone https://github.com/p-dor/LiveboxMonitor.git
    cd LiveboxMonitor
    virtualenv -p python3 .venv
    source .venv/bin/activate
    pip install -r requirements.txt

Lancement :

    cd src\LiveboxMonitor
    source .venv/bin/activate
    python3 lbm.py

Configuration minimale

Étant donné les dépendances documentées de Python 3.9, PyInstaller et de PyQt6 la configuration minimale requise pour faire tourner cette application est :

À propos de l'auteur

L'auteur de ce logiciel est un professionnel de l'informatique n'ayant aucun lien avec Orange. Ce logiciel n'est donc en rien un produit d'Orange.
Aucune documentation officielle des APIs de la Livebox n'étant disponible, l'élaboration a été effectuée à partir de techniques classiques de rétro-ingénierie (reverse engineering), et l'ensemble du projet sur le temps libre de l'auteur.

Discussion

Un fil de discussion est actif sur le forum lafibre.info. Il est possible d'y poster vos commentaires, résultats de tests ou de faire des demandes de fonctionnalités.

Prise en main

L'interface se veut intuitive mais il vaut mieux se reporter à la documentation pour comprendre certains comportements ou représentations. Les points importants à comprendre avant de commencer :

Profils

Le programme supporte de pouvoir gérer plusieurs Livebox à l'aide de profils différents. Chaque profil doit avoir un nom unique. Par défaut un profil principal est créé automatiquement, mais il est possible d'en créer d'autres soit au démarrage du programme dans la fenêtre de sélection de profils soit dans les préférences du programme.
Si plusieurs profils sont configurés le nom du profil en cours est affiché dans le titre de la fenêtre principale entre crochets.
Plusieurs informations sont associées à chaque profil, telle que l'URL de la Livebox, son mot de passe, etc. Le programme associe aussi automatiquement l'adresse physique (MAC) de la Livebox sur laquelle la connexion s'est effectuée.

Que se passe-t-il au lancement du programme ?

Le dialogue de sélection de profils vous prévient si vous tentez d'utiliser un profil pour une Livebox différente de celle avec lequel il est normalement associé. Si vous validez le dialogue, le profil sera mis à jour pour être associé à cette nouvelle Livebox. Le dialogue de sélection de profils vous permet aussi de créer un nouveau profil si aucun dans la liste ne convient.

Options de ligne de commande

Accès à distance

Il est possible d'utiliser le programme à distance si l'accès à distance de la Livebox est activé. Dans la configuration de la Livebox, cliquez sur la tuile "Mon accès à distance". Activez l'accès, configurez un nom, un mot de passe, et un numéro de port personnalisé. Vous pouvez aussi en profiter pour activer un DynDNS pour éviter de changer l'URL à chaque fois que votre IP internet change.

Votre URL de connexion devient alors quelque chose comme ceci : https://monIP:monPort/
Ou alors si vous avez configuré un DynDNS : https://monNomDeDomaine.com:monPort/
Évidement configurez aussi le nom et le mot de passe de connexion en fonction.

Configuration

Répertoire de configuration

Le programme créé automatiquement dans son répertoire de configuration deux fichiers au format JSON :

Le fichier Config.txt

Ce fichier est géré automatiquement par l'application et il ne devrait pas être nécessaire de l'éditer. Les réglages principaux se font via le bouton Préférences... de l'onglet Actions.
À savoir :

Le fichier MacAddrTable.txt

Ce fichier est géré automatiquement par l'application et il ne devrait pas être nécessaire de l'éditer. Les clefs correspondent aux adresses MAC des appareils et les valeurs au nom attribué. Tout appareil détecté dont l'adresse MAC n'est pas répertoriée sera affiché comme 'INCONNU' en rouge. Cette fonctionnalité est surtout utile pour détecter les nouveaux appareils ou des tentatives d'intrusions.

Pourquoi utiliser une base de noms locale alors que la Livebox stocke aussi des noms ?

Linux

En cas d'utilisation d'un virtualenv, si des erreurs de plugin Qt apparaissent, rajoutez ces commandes pour l'installation :

    apt install qt6-base-dev
    apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

En cas d'erreurs avec Wayland, il est possible de changer le moteur de rendu de Qt avec la variable d’environnement QT_QPA_PLATFORM.
Par exemple : QT_QPA_PLATFORM=xcb python3 lbm.py permet d'utiliser X Window directement (qui éventuellement sera rendu avec Xwayland mais cela fonctionne).

Une autre méthode consiste à supprimer la variable d’environnement WAYLAND_DISPLAY uniquement pour l’exécution du programme et pas de façon globale, pour ce faire : env -u WAYLAND_DISPLAY python3 lbm.py.

Appareils - Liste des appareils connectés

Liste

La liste des appareils affiche les colonnes suivantes :

Les statistiques d'octets envoyés ou reçus par seconde sont calculées grâce aux statistiques envoyées par la Livebox sous forme d'événement toutes les 30 secondes par appareil. Cette résolution étant peu significative le programme utilise une autre interface disponible pour les appareils Wifi uniquement pour obtenir des statistiques toutes les trois secondes (option pour les activer/désactiver dans les préférences, ainsi que la fréquence). Ces dernières sont affichées en bleu.
Si une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par la Livebox. Les statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie la Livebox (il ne s'agit pas d'un défaut du programme).
Note : le trafic TV standard de la box TV UHD n'est pas comptabilisé dans les statistiques pour cet appareil. Par contre celui de services VOD tel que Netflix est bien comptabilisé.

Boutons

L'onglet Appareils propose les boutons suivants :

Stats/Infos Livebox - Statistiques de trafic et infos avancées de la Livebox

Interface

Les statistiques de trafic par interface sont affichées sous forme de liste en haut à gauche. Et toutes les informations sont accessibles par les boutons, chaque bouton remplissant la liste d'attributs sur la droite. Il est aussi possible d'exporter l'ensemble des informations dans un fichier.

Statistiques

Liste permettant de surveiller l'état du trafic :

Si une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par la Livebox. Les statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie la Livebox (il ne s'agit pas d'un défaut du programme). Note : le trafic TV standard de la box TV UHD n'est pas comptabilisé dans ces statistiques. Par contre celui de services VOD tel que Netflix est bien comptabilisé.

Boutons

L'onglet Stats/Infos Livebox propose les boutons suivants :

Graphes - Courbes de trafic par interface et par appareil

Interface

Affiche les graphiques des données reçues et transmises pour chaque interface / appareil sélectionné à partir de données stockées par la Livebox elle-même. Les volumes sont en méga-octets entre deux échantillons, en principe toutes les 30 secondes (l'échantillonnage et sa fréquence sont contrôlés par la Livebox). Les graphes se mettent à jour automatiquement à la réception de nouveaux échantillons sous forme d'événements.
Il est possible de naviguer et de zoomer dans les graphiques à la souris, puis de revenir à la vue normale en cliquant dans le coin en bas à gauche. Un clic droit sur un graphe permet d'accéder à d'autres fonctionnalités telles que l'exportation en différents formats. Toute la documentation est accessible ici.

Sélection des interfaces et des appareils

Il faut commencer par sélectionner les interfaces et/ou les appareils dont on veut obtenir les graphiques, pour cela deux boutons sont disponibles :

Options des graphiques

Des options sont disponibles pour paramétrer les graphiques :

Génération des graphiques

Le bouton Appliquer permet de charger toutes les informations relatives aux interfaces et appareils sélectionnés, de dessiner les graphiques correspondants en tenant compte des options ci-dessus, et de sauvegarder la configuration. Celle-ci sera automatiquement rechargée au prochain lancement du programme.

Le bouton Export... permet d'exporter au format CSV (avec le point-virgule comme séparateur) les dernières données chargées par le bouton Appliquer ainsi que celles reçues entre temps via des événements.

Infos Appareil - Informations détaillées pour chaque appareil connu

Interface

La liste des appareils connus, sur la gauche, affiche les colonnes suivantes :

Lorsqu'un appareil est sélectionné dans cette liste ses informations détaillées s'affichent dans la liste de droite. Attributs notables :

Boutons

L'onglet Infos Appareil propose les boutons suivants :

Événements - Liste des événements reçus pour chaque appareil connu

Interface

La liste des appareils connus, sur la gauche, affiche les colonnes suivantes :

Lorsqu'un appareil est sélectionné dans cette liste tous les événements reçus depuis le lancement du programme pour cet appareil s'affichent dans la liste de droite. La plupart de ces événements ont été interprétés par le programme pour mettre à jour l'interface dynamiquement, et cette liste permet d'avoir un historique. La taille de cet historique par appareil est limitée aux 100 dernières entrées (cette limite peut être ajustée facilement en modifiant la variable MAX_EVENT_BUFFER_PER_DEVICE du module LmEventsTab.py).

La liste des événements est composée des colonnes :

Un double clic sur un événement ou un clic sur le bouton Afficher Événement permet d'afficher un dialogue contenant les informations complètes :

Notifications automatiques

DHCP - Contrôle fin du serveur DHCP

Interface

Baux statiques

La liste des baux statiques configurés est affichée sur la gauche. Les deux domaines de réseau sont gérés :

La liste affiche les colonnes suivantes :

Boutons

Les boutons suivants sont proposés pour gérer la liste des baux :

Informations DHCP détaillées

La liste sur la droite affiche de nombreux détails sur le serveur DHCP:

Boutons

Les boutons suivants sont proposés pour gérer la liste des baux :

NAT/PAT - Règles de redirection de port et de protocole

Interface

Cet onglet permet de gérer de façon fine les règles de redirection de port et de protocole IPv4, IPv6 et UPnP de la Livebox. De par cette gestion fine il peut arriver que certaines règles, bien que correctement stockées et interprétées par la Livebox, ne s'affichent pas dans l'interface Web de la Livebox. Ceci est normal et ne représente pas vraiment de problème.

Redirections de port

La liste des règles de redirection de port, en haut, affiche les colonnes suivantes :

Un double clic sur une règle permet de facilement l'éditer.

Boutons

Les boutons suivants sont proposés pour gérer la liste des règles :

Redirections de protocole

La liste des règles de redirection de protocole, en bas, affiche les colonnes suivantes :

Un double clic sur une règle permet de facilement l'éditer.

Boutons

Les boutons suivants sont proposés pour gérer la liste des règles :

Téléphone - Liste des appels téléphoniques / liste des contacts

Interface

Appels téléphoniques

La liste des appels téléphoniques, sur la gauche, affiche les colonnes suivantes :

Un double clic sur un appel permet de facilement créer ou éditer le contact correspondant.

Boutons

Les boutons suivants sont proposés pour gérer la liste des appels :

Contacts

La liste des contacts, sur la droite, affiche les colonnes suivantes :

Un double clic sur un contact permet de facilement l'éditer.
Attention : la Livebox supporte un maximum de 255 contacts.

Boutons

Les boutons suivants sont proposés pour gérer la liste des contacts :

Actions - Boutons d'actions et de contrôle

Interface

Cet onglet permet une liste d'actions par catégorie.

Les actions concernant le Wifi :

Les actions concernant les Redémarrages :

Les actions concernant le Réseau :

Les actions concernant les Réglages :

Les actions techniques de Débogage :

Autres actions :

Onglets répéteurs Wifi

Interface

Le programme créé dynamiquement un onglet par répéteur connecté. Si le répéteur a un nom local, celui-ci est utilisé dans l'onglet, sinon le nom par défaut est de type "RW #" suivit du numéro de répéteur dans l'ordre de détection. Les répéteurs font aussi parti des appareils connus, ils sont donc visibles dans l'onglet Appareils et leur nom peut être changé via le bouton Assigner Nom... de l'onglet Infos Appareil.

Une icône dans le nom de l'onglet permet de connaître l'état de la connexion avec le répéteur :

Les statistiques de trafic par interface sont affichées sous forme de liste en haut à gauche. Et toutes les informations détaillées sont accessibles via la barre de boutons en bas, chaque bouton remplissant la liste d'attributs sur la droite. Il est aussi possible d'exporter l'ensemble des informations dans un fichier. Enfin, une série d'actions est possible via les boutons sur la gauche.

Statistiques

Liste permettant de surveiller l'état du trafic géré par le répéteur :

Si une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par le répéteur. Les statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie le répéteur (il ne s'agit pas d'un défaut du programme).

Actions - Boutons d'actions et de contrôle

Les actions concernant le Wifi :

L'état global du Wifi peut être consulté via le bouton État Global Wifi... de l'onglet Actions.

Les actions concernant les Redémarrages :

Les actions diverses :

Boutons

Les onglets de répéteur Wifi proposent les boutons suivants :

Gestion et personnalisation des icônes d'appareil

Toutes les icônes d'appareil sont initialement stockées par la Livebox et le programme va les chercher une à une, ce qui peut provoquer une certaine latence (par exemple lorsque l'on clique une première fois sur le bouton Assigner Type... pour changer le type d'un appareil). Pour éviter cette latence, le programme stocke dans un cache local toutes les icônes téléchargées de la Livebox pour pouvoir les retrouver plus rapidement au prochain lancement. Ce cache est contenu dans un répertoire appelé lbcache_ suivie de la version du firmware de la Livebox (ce qui fait que plusieurs caches peuvent être maintenu si vous accédez à plusieurs Livebox de versions différentes). Ce répertoire est créé automatiquement dans le répertoire de configuration du programme.

Il est aussi possible de modifier ces icônes, et aussi de créer de nouveaux types d'appareils avec leur propre icône. Une page d'explication dédiée à ces possibilités est disponible ici.