LibreNet Scanner
Scanner réseau graphique libre, rapide et orienté équipements pour Linux.
Découverte, inventaire, services, identification et diagnostic dans une interface Qt pensée pour KDE Plasma.
> **LibreNet Scanner 1.0.0 est la version stable de référence.** Le moteur Standard privilégie la rapidité et la prédictibilité sur les petits réseaux, tout en pouvant accélérer les grands ensembles d'hôtes avec Naabu.
---
## ✨ Points forts
- **Découverte rapide du LAN** avec `arp-scan`, Nmap et la table de voisinage Linux.
- **Moteur Standard adaptatif** : Nmap sur les petits ensembles d'hôtes actifs, Naabu sur les ensembles importants lorsqu'il apporte un réel gain.
- **Scan approfondi** avec versions de services et estimation du système d'exploitation.
- **Mode Administrateur via Polkit** : la GUI reste non-root ; seul un helper strictement contrôlé reçoit les privilèges nécessaires.
- **Identification orientée équipements** : poste, serveur, hyperviseur, NAS, pare-feu, routeur, switch, point d'accès, imprimante…
- **Identification OS** avec pictogrammes Linux, BSD, Windows, Apple et Android.
- **Résultats progressifs et scan interruptible** avec terminaison propre des processus.
- **Historique local SQLite**, comparaison entre scans, favoris, groupes et notes.
- **Actions contextuelles** : Web, SSH, SMB, RDP, Ping, Traceroute, Wake-on-LAN, copie IP/MAC.
- **Interface compacte ou détaillée**, compatible Breeze clair/sombre sans thème graphique imposé.
## 🚀 Installation
### Paquet Debian 13
```bash
sudo apt install ./librenet-scanner_1.0.0_amd64.deb
```
Puis lance LibreNet Scanner depuis le menu KDE ou avec :
```bash
librenet-scanner
```
Le paquet cible **Debian 13 (Trixie) amd64** et installe les dépendances principales via APT.
### Exécution depuis les sources
```bash
./run-from-source.sh
```
Le projet nécessite Python 3.11+ et PySide6/Qt6.
## 🧭 Les trois modes de scan
| Mode | Objectif | Moteur principal |
|---|---|---|
| ⚡ **Rapide** | Trouver les machines présentes | ARP + découverte Nmap |
| 🔎 **Standard** | Trouver les machines et leurs ports usuels | Moteur adaptatif Nmap / Naabu |
| 🧬 **Approfondi** | Enrichir services, versions et OS | Socle Standard + Nmap `-sV` / OS |
Le bouton principal **Scanner** lance le mode Standard. Le menu attenant permet de choisir Rapide ou Approfondi.
### Standard : moteur adaptatif
LibreNet commence par identifier les **hôtes réellement actifs**, puis ne scanne les ports que sur ceux-ci.
```text
Cible réseau
│
├── poste local
├── arp-scan
└── découverte Nmap courte
│
▼
hôtes actifs
│
┌──────┴────────┐
│ │
< 32 hôtes ≥ 32 hôtes
│ │
Nmap borné Naabu par lots
│ │
└──────┬────────┘
▼
ports ouverts
```
Pour un `/24` avec seulement quelques machines actives, LibreNet **ne lance pas un scan de ports sur les 254 adresses** : les hôtes sont d'abord découverts, puis seuls ceux qui répondent sont analysés.
#### Garde-fous de performance
- `arp-scan` est borné à **8 secondes** ;
- découverte Nmap sans DNS (`-n`) et avec un retry maximum ;
- scan Standard Nmap limité aux hôtes actifs et aux ports usuels ;
- Naabu réservé aux ensembles d'au moins **32 hôtes actifs** ;
- Naabu exécuté par lots de **32 hôtes**, avec plafond de temps par lot ;
- repli Nmap limité aux hôtes déjà découverts si Naabu est indisponible ou trop lent ;
- aucun résultat incomplet n'est enregistré comme scan réussi lorsqu'une phase essentielle échoue.
## 🛡️ Mode Administrateur
Le mode **Admin** s'appuie sur Polkit. LibreNet Scanner ne lance jamais toute l'interface en root.
Le helper privilégié est installé ici :
```text
/usr/libexec/librenet-scanner-helper
```
La politique Polkit est installée ici :
```text
/usr/share/polkit-1/actions/org.librenet.scanner.policy
```
Le mode Admin permet notamment :
- `arp-scan` privilégié ;
- scans TCP SYN (`-sS`) ;
- détection OS lors des scans Approfondi et Détaillé.
La découverte Standard reste volontairement cohérente entre le mode utilisateur et le mode Admin afin d'éviter que l'activation des privilèges modifie artificiellement la liste d'hôtes détectés.
## 🛑 Annulation propre
Le bouton **Arrêter** ne se contente pas d'interrompre l'interface : LibreNet supervise le processus réseau en cours.
- en mode utilisateur, le groupe de processus est terminé proprement ;
- en mode Admin, l'UI envoie un ordre `STOP` au helper privilégié ;
- le helper applique une escalade `TERM → KILL` si nécessaire ;
- un scan interrompu n'est pas enregistré comme un résultat complet.
## 🖥️ Vue équipements
### Vue compacte
```text
pve01.local 192.168.10.10 Hyperviseur Proxmox
nas01.local 192.168.10.20 NAS
printer01.local 192.168.10.30 Imprimante
```
### Vue détaillée
```text
pve01.local 192.168.10.10 Hyperviseur Proxmox
SSH 22/tcp OpenSSH
NFS 2049/tcp
Proxmox VE 8006/tcp
```
Un double-clic sur un service compatible peut ouvrir directement HTTP/HTTPS, SSH, SMB ou RDP.
## 🧠 Identification et mémoire locale
LibreNet sépare volontairement :
- **les résultats visibles** ;
- **l'historique des scans** ;
- **les identifications mémorisées** ;
- **les métadonnées utilisateur** : favoris, groupes et notes.
Quand une MAC fiable est disponible, les métadonnées peuvent suivre l'équipement lors d'un changement d'adresse IP. La logique d'identité évite autant que possible les fusions dangereuses liées aux MAC virtuelles, clonées, partagées ou localement administrées.
Les données sont conservées localement dans :
```text
~/.local/share/librenet-scanner/history.sqlite3
```
## 🌐 Constructeurs et confidentialité
Par défaut, LibreNet s'appuie sur les bases OUI locales.
Une recherche constructeur en ligne peut être activée dans :
**Paramètres → Identification des constructeurs…**
Cette fonction est **désactivée par défaut**, car une recherche distante transmet la MAC complète au fournisseur choisi. Les résultats peuvent être mis en cache localement pendant 30 jours.
## ⚙️ Naabu optionnel
LibreNet Scanner fonctionne sans Naabu. L'installation du `.deb` **n'effectue aucun téléchargement réseau obligatoire**.
Naabu 2.6.1 peut être ajouté comme accélérateur pour les grands ensembles d'hôtes :
```bash
sudo /usr/libexec/librenet-scanner-install-naabu --ensure
```
Le binaire validé est placé dans :
```text
/usr/lib/librenet-scanner/bin/naabu
```
LibreNet n'utilise pas arbitrairement un autre `naabu` trouvé dans le `$PATH`. L'installateur vérifie la version et le SHA-256 de l'archive officielle avant installation.
## 🧰 Dépendances
### Obligatoires
- Python 3
- PySide6 / Qt6
- Nmap
- arp-scan
- iproute2
- iputils-ping
- xdg-utils
- pkexec / Polkit
### Recommandées ou optionnelles
- `polkit-kde-agent-1` sous KDE Plasma
- Konsole
- Remmina
- traceroute
- libcap2-bin
- Naabu 2.6.1 pour l'accélération des grands ensembles
## ⌨️ Raccourcis utiles
| Raccourci | Action |
|---|---|
| `F5` | Scan Standard |
| `Ctrl+F5` | Scan Rapide |
| `Shift+F5` | Scan Approfondi |
| `Ctrl+F` | Recherche |
## 🔐 Sécurité
- aucune commande utilisateur n'est exécutée via un shell ;
- les cibles sont validées avant exécution ;
- la taille des scans est limitée ;
- le helper privilégié n'accepte que des opérations prédéfinies ;
- les moteurs privilégiés sont lancés avec des profils contrôlés ;
- les scans sont conçus pour être interrompus proprement.
> Utilise LibreNet Scanner uniquement sur des réseaux que tu possèdes ou que tu es autorisé à analyser.
## ✅ Validation de la release stable
La base 1.0.0 est couverte par **191 tests automatisés** portant notamment sur :
- parsing Nmap / arp-scan / Naabu ;
- validation des cibles ;
- moteur adaptatif petit/grand réseau ;
- délais maximaux et annulation ;
- helper privilégié ;
- identité des équipements et systèmes ;
- historique et persistance ;
- non-régression de l'interface et du packaging.
Lancer la suite :
```bash
PYTHONPATH=src python3 -m unittest discover -s tests -v
```
## 📁 Arborescence
```text
librenet-scanner-1.0.0/
├── assets/ logo, badges et icônes
├── packaging/ paquet Debian, helper et Polkit
├── src/librenet_scanner/ application Python
├── tests/ suite automatisée
├── README.md
├── LICENSE
└── THIRD_PARTY_ASSETS.md
```
## 📜 Licence
LibreNet Scanner est distribué sous **GPL-3.0-or-later**.
Nmap, arp-scan, Naabu et les pictogrammes tiers conservent leurs licences respectives. Les détails sont documentés dans [`THIRD_PARTY_ASSETS.md`](THIRD_PARTY_ASSETS.md) et [`NAABU-LICENSE.txt`](NAABU-LICENSE.txt).
---

LibreNet Scanner 1.0.0 — Stable
Voir le réseau. Comprendre les équipements. Garder le contrôle.