Carte des Modules

August 2, 2026 · View on GitHub

Chaque module = une page (pages/*.py) + son entrée dans _TOOLS (window.py).

Légende

  • Backend : outil système ou bibliothèque Python utilisé
  • Worker : présence d'un QThread dédié
  • Persistence : fichier JSON utilisateur
  • Export : capacité d'export CSV/TXT
  • Root : nécessite des privilèges élevés (pkexec ou sudo)

1 · Dashboard (pages/dashboard.py — 359 lignes)

ChampValeur
Backendip route, ip addr, ip -j addr, resolvectl status, curl ifconfig.me, ip-api.com
WorkerOui (_DashWorker)
Persistence
Export

Affiche : hostname, IPv4/IPv6 locale, masque réseau, passerelle, DNS résolveurs, IP publique, géolocalisation approximative.


2 · Connections (pages/connection_manager.py — 524 lignes)

ChampValeur
Backendnmcli connection show, nmcli connection up/down/delete, nm-connection-editor
WorkerOui (_ListWorker, _DetailWorker, _ActionWorker)
Persistence— (NetworkManager gère la sienne)
Export

Filtre par type (Wi-Fi/Ethernet/VPN/WireGuard/Autre). Auto-refresh 5s (suspendu pendant une action).


3 · Interfaces (pages/interfaces.py — 246 lignes)

ChampValeur
Backendip -j addr, nmcli device status
WorkerOui
Persistence
Export

Colonnes : Interface / Type / État / MAC / IPv4 / IPv6. Panneau détail (masque réseau) au clic.


4 · Wi-Fi (pages/wifi.py — 266 lignes)

ChampValeur
Backendnmcli dev wifi list
WorkerOui
Persistence
Export

Signal affiché en barres ▂▄▆█. Réseau connecté en premier.


5 · Subnet (pages/subnet.py — 152 lignes)

ChampValeur
Backendipaddress (stdlib)
WorkerNon (calcul synchrone)
Persistence
Export

Calcul CIDR → réseau, masque dotted, wildcard, broadcast, plage hôtes, total. IPv4 et IPv6.


6 · DNS (pages/dns.py — 234 lignes)

ChampValeur
Backenddig
WorkerOui
Persistence
Export

Types : A, AAAA, MX, TXT, NS, CNAME, PTR, SOA, ANY. Reverse lookup automatique depuis une IP. Serveur DNS configurable.


7 · Ping (pages/ping.py — 529 lignes)

ChampValeur
Backendping (ICMP)
WorkerOui (un worker par hôte)
Persistence~/.local/share/nmlinux/ping_targets.json (v1.7.5)
Export

Multi-hôtes simultanés. Intervalle 1–30s. Statistiques RTT min/avg/max, perte %. Répertoire de cibles sauvegardées (PingTarget + _PingTargetStore) : sauvegarder une ligne active depuis le monitoring, relancer depuis le répertoire.


8 · IP Scanner (pages/ip_scanner.py — 445 lignes)

ChampValeur
Backendping -c 1 -W 1, ARP cache, getent hosts, avahi-resolve, nmblookup, OUI DB interne
WorkerOui, 50 threads
Persistence
ExportCSV + TXT

Plage CIDR ou manuelle. Colonnes : IP / Hostname / MAC / Constructeur / Interface / État. Base OUI 39 000 entrées.


9 · Port Scanner (pages/port_scanner.py — 377 lignes)

ChampValeur
Backendsocket.connect_ex() (TCP connect, sans root)
WorkerOui, 200 threads
Persistence
ExportCSV + TXT

Plages de ports, presets (Web, Mail, SSH…). Service identifié par port. Tri par port.


10 · Nmap (pages/nmap_scan.py — 325 lignes)

ChampValeur
Backendnmap (XML output parsé)
WorkerOui
Persistence
ExportCSV + TXT
RootOui pour -sS, -O, -A

7 modes : découverte (-sn), TCP (-sT), SYN (-sS), services (-sV), OS (-O), complet (-A), NSE. Résultats XML parsés en tableau structuré.


11 · Whois (pages/whois.py — 103 lignes)

ChampValeur
Backendwhois subprocess
WorkerOui
Persistence
Export

Affichage brut monospace. Reverse lookup automatique depuis une IP.


12 · TLS Inspector (pages/tls.py — 501 lignes)

ChampValeur
Backendopenssl s_client (subprocess)
WorkerOui
Persistence
Export

Affiche : CN, SANs, issuer, validité (vert/orange <30j/rouge expiré), serial, protocole, cipher, chaîne complète. Fonctionne avec certificats auto-signés et expirés.


13 · SMB / NFS (pages/smb_nfs.py — 430 lignes)

ChampValeur
Backendsmbclient -L (SMB), showmount -e (NFS), mount.cifs/mount -t nfs (core/smb_mount.py)
WorkerOui
Persistence
Export
RootOui (pkexec pour monter/démonter, v1.7.3)

Deux onglets. SMB : identifiants optionnels (utilisateur + mot de passe). NFS : export path + access list. Clic droit sur une ligne SMB → monter/démonter (core/smb_mount.py) : session pkexec mount.cifs, retry automatique avec un dialecte SMB plus ancien sur ENOTSUPP, authentification pkexec unique. Dépendance optionnelle cifs-utils.


14 · Hosts File (pages/hosts.py — 319 lignes)

ChampValeur
BackendLecture directe /etc/hosts, écriture via pkexec cp
WorkerNon
Persistence/etc/hosts (système)
Export
RootOui (pkexec pour l'écriture)

Table avec toggle enable/disable, add/edit/delete via dialog. Filtre par IP ou hostname.


15 · SNMP (pages/snmp.py — 253 lignes)

ChampValeur
Backendsnmpwalk, snmpget (net-snmp)
WorkerOui
Persistence
Export

v1/v2c. 10 presets OID (system, uptime, interfaces, CPU, mémoire…). Colonnes OID / Type / Valeur.


16 · SNTP / NTP (pages/sntp.py — 254 lignes)

ChampValeur
BackendClient UDP pur Python (RFC 4330, socket)
WorkerOui
Persistence
Export

Pas de dépendance système. 1 à 5 requêtes moyennées. Affiche : offset, délai roundtrip, stratum, référence.


17 · SSH (pages/ssh.py — 760 lignes)

ChampValeur
Backendssh via PTY (ptyprocess), pyte VT100
WorkerSshWorker(QThread) dans core/terminal.py, un par session
Persistence~/.local/share/nmlinux/ssh_connections.json (v2)
Export

Carnet d'adresses hiérarchique (groupes/sous-groupes). Auth clé ou mot de passe. Scrollback 2000 lignes. Toutes séquences VT100/xterm.

Sessions multiples en onglets (QTabWidget, _SshSessionTab) — chaque connexion (même vers le même hôte) ouvre un nouvel onglet avec son propre SshWorker/TerminalView, sans jamais remplacer une session existante. Voir DT-16.

Sélection de texte à la souris dans le terminal + copier (Ctrl+Maj+C) / coller (Ctrl+Maj+V) / menu contextuel clic droit.


18 · SSH Keys (pages/ssh_keys.py — 527 lignes)

ChampValeur
Backendssh-keygen (list, generate), ssh-copy-id
WorkerOui
Persistence~/.ssh/ (détection des paires complètes)
Export

Scan ~/.ssh/ (paires complètes uniquement). Génération Ed25519 / RSA 4096, passphrase optionnelle. Copie clé publique. Déploiement ssh-copy-id dans terminal inline.


19 · Remote Desktop (pages/rdp.py — 568 lignes)

ChampValeur
Backendxfreerdp3 (Arch) ou xfreerdp (Debian/Ubuntu)
WorkerNon (Popen externe)
Persistence~/.local/share/nmlinux/rdp_connections.json (v2)
Export

Groupes/sous-groupes. Champs : host, port (3389), username, domain, résolution, fullscreen. Mot de passe jamais stocké.


20 · VNC (pages/vnc.py — 514 lignes)

ChampValeur
Backendvncviewer (TigerVNC)
WorkerNon (Popen externe)
Persistence~/.local/share/nmlinux/vnc_connections.json (v2)
Export

Groupes/sous-groupes. Port par défaut 5900. Format connexion : host::port. Compatible macOS ARD (DH30 géré nativement par vncviewer).


21 · Traceroute (pages/traceroute.py — 671 lignes)

ChampValeur
Backendtraceroute ou tracepath -b (auto-détection), ip-api.com (géoloc)
WorkerTracerouteWorker, GeolocWorker (un par hop public)
Persistence
ExportCSV + TXT

Carte monde interactive (Natural Earth 110m, assets/world.geojson). Projection équirectangulaire. Zoom molette, pan clic-glisser. Géoloc live par hop (IPs privées RFC-1918 skippées).


22 · MTR (pages/mtr.py — 455 lignes)

ChampValeur
Backendmtr --report --report-cycles N
WorkerOui
Persistence
ExportCSV + TXT

Tableau Hop / Host / Loss% / Sent / Last / Avg / Best / Worst / Jitter. Coloration loss% (vert<1% / jaune<10% / orange<25% / rouge≥25%). Parser texte regex (mtr 0.96 ignore --json en mode --report).


23 · Firewall (pages/firewall.py — 524 lignes)

ChampValeur
BackendLecture fichiers config (sans root) + pkexec nft list ruleset
WorkerOui
Persistence
Export
RootOui (pkexec pour le ruleset live)

Sources : /etc/nftables.conf, /etc/iptables/iptables.rules, /etc/iptables/ip6tables.rules. Colonnes : Table / Chain / Rule / Port / Action / Comment. Coloration : accept=vert / drop=rouge / reject=orange / jump·log=bleu.


24 · Speed Test (pages/speedtest.py — 1065 lignes)

ChampValeur
BackendOnglet Internet : curl + speed.cloudflare.com, ping 1.1.1.1. Onglet LAN : iperf3 -c ... -J (client uniquement)
WorkerOui (SpeedTestWorker + Iperf3Worker, un QThread par onglet)
Persistence~/.local/share/nmlinux/speedtest_history.json (5 derniers, onglet Internet) · ~/.local/share/nmlinux/iperf3_servers.json (serveurs LAN personnalisés)
Export

Onglet Internet : Download 25 MB, Upload ~10 MB, Ping. Graphique line chart DL/UL horodaté.

Onglet LAN (iperf3) : mesure de débit contre un serveur iperf3 choisi dans une liste publique bundlée par pays (assets/iperf3_public_servers.json, 26 pays) ou un serveur personnalisé sauvegardé. Options TCP/UDP, IPv4/IPv6/auto, sens (reverse = download), durée (5/10/20/30s). Cartes Envoyé/Reçu (+ Gigue/Perte en UDP). Client uniquement — pas de mode serveur (voir DT-15).


25 · Bandwidth (pages/bandwidth.py — 373 lignes)

ChampValeur
Backend/proc/net/dev (lecture 1 Hz)
WorkerNon (QTimer dans le thread principal, < 1ms)
Persistence
Export

Graphique glissant 60 secondes. Courbes download (bleu) / upload (orange). Sélection d'interface. Stats : vitesse live, total session, pics. Start/Stop explicite.


26 · Wake on LAN (pages/wol.py — 339 lignes)

ChampValeur
Backendsocket UDP (Magic Packet natif Python, port 9)
WorkerNon
Persistence~/.local/share/nmlinux/wol_hosts.json
Export

Magic Packet : 6× 0xFF + 16× adresse MAC. Broadcast configurable. Carnet d'hôtes (nom, MAC, broadcast).


27 · File Transfer (pages/file_transfer.py — 336 lignes)

ChampValeur
BackendServeur TFTP (core/tftp_helper.py via QProcess) ou serveur HTTP GET/POST (core/http_server.py, HTTPServer stdlib dans un QThread)
WorkerOui (_HttpThread), QProcess pour le mode TFTP
Persistence
Export
RootOptionnel (port TFTP 69 privilégié → lancement en root via pkexec)

Sert des fichiers pour l'échange de configuration avec des équipements réseau. Deux protocoles au choix (radio buttons), port configurable, racine de fichiers sélectionnable. Journal des transferts (horodatage, direction, fichier, client, taille, statut).


28 · Topology (pages/topology.py — 609 lignes)

ChampValeur
Backendnmap -sn -oX - (XML), ip route, ip -j addr
Worker_TopoWorker
Persistence
Export

QGraphicsScene + QGraphicsView. Nœuds déplaçables (ItemIsMovable). Icônes dessinées : routeur (rect + antennes) / moniteur (écran + pied) / tour PC (rect + power). 1 ou 2 couronnes concentriques (seuil : 12 nœuds). Tooltip : hostname + IP + MAC + fabricant. FullViewportUpdate obligatoire (DashLine artifacts sinon). Source pour les liens inter-modules (clic droit sur nœud → Ping / Port Scanner / SSH / RDP / VNC, v1.7.0).


29 · Asset Inventory (pages/asset_inventory.py — 518 lignes, core/asset_collectors.py — 543 lignes)

ChampValeur
BackendDétection passive nmap -O -sV ; collecte active SSH (ptyprocess/sshpass), WinRM (pywinrm, optionnel), SNMP (snmpget)
WorkerAssetScanWorker
Persistence— (zéro persistance : tout en RAM, effacé à la fermeture)
ExportJSON / CSV / Markdown (à la demande explicite)

Inspiré de LanSweeper mais sans base de données ni agents. Scan CIDR → par hôte, collecte selon la méthode disponible (sans credentials ou avec, appliqués par protocole ou par hôte). Tableau : IP / Hostname / Plateforme / OS / CPU / RAM / Disques / Uptime / Méthode. Clic droit sur une sélection de lignes → "Actualiser la sélection" (rescan ciblé, dédoublonnage par IP, v1.7.6). Échec d'authentification SSH affiché explicitement (SSH auth failed) au lieu d'un fallback silencieux vers les données Nmap seules (v1.7.6), sans écraser la méthode/OS déjà détectés. Credentials jamais stockés, jamais logués, effacés (del) après usage.


Pages hors _TOOLS

PageFichierDescription
Settingspages/settings.pySélection langue + bannière redémarrage
Aboutpages/about.pyCrédits + version + outils tiers
Helppages/help_page.pyPanneau aide contextuelle (badge ?)