Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
nmlinux — Unified network toolkit for Linux — Python 3 + PySide6 | Kitploit
Strumenti/GitHubGitHub/thongor77/nmlinux
Mappatura della ReteScansione PorteRaccolta InformazioniAnalisi DNS
GitHubthongor77/nmlinux

nmlinux

Unified network toolkit for Linux — Python 3 + PySide6

Vedi Repository
9215827 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# NMLinux · v1.7.14

[![Version](https://img.shields.io/badge/version-1.7.14-brightgreen.svg)](https://github.com/thongor77/nmlinux/releases/latest)
[![Python](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/)
[![License: GPL-2.0](https://img.shields.io/badge/license-GPL--2.0-green.svg)](LICENSE)
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS-orange.svg)](#installation)
[![Languages](https://img.shields.io/badge/languages-FR%20EN%20ES%20DE%20IT%20PT%20JA%20ZH-purple.svg)](#features)
[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.com/donate/?business=JFQGY7NU3ANCN&no_recurring=0&item_name=Every+donation%2C+no+matter+how+small%2C+helps+me+keep+this+project+alive.+Thank+you%21%0A&currency_code=EUR)
[![Bitcoin](https://img.shields.io/badge/Donate-Bitcoin-orange.svg)](#support-the-project)

**Un toolkit di rete unificato per Linux e macOS — ispeziona, connetti, diagnostica.**

NMLinux è un'unica GUI unificata che riunisce 29 moduli di rete in una sola finestra: monitoraggio delle interfacce, Wi-Fi, DNS, terminale SSH, visualizzatore del firewall, mappa della topologia, traceroute e altro ancora. Costruito da zero in Python e PySide6 (Qt 6), con 8 lingue dell'interfaccia e nessuna dipendenza esterna oltre agli strumenti di sistema standard.

> [!NOTE]
> **NMLinux non è correlato al demone di sistema Linux `/usr/bin/NetworkManager` (NetworkManager di Red Hat/GNOME).** NMLinux è un progetto autonomo costruito da zero in Python e PySide6.

> Costruito con [Claude Code](https://claude.ai/code) (Anthropic) e il contributo del suo autore.

---

## Processo di sviluppo

NMLinux è costruito con l'assistenza dell'IA — [Claude Code](https://claude.ai/code), nello specifico — e questo non è nascosto da nessuna parte in questo repo. Quasi ogni progetto software serio oggi utilizza l'IA da qualche parte nella sua pipeline, che lo dichiari o no. Quindi "l'IA è stata coinvolta" non è la domanda interessante. La domanda interessante è: c'è qualcosa che lo intercetta quando l'IA sbaglia qualcosa?

Ecco cosa lo fa, se preferisci verificare piuttosto che credermi sulla parola:

- **162 test** — `pytest tests/ -v`. Logica pura più una manciata di test reali sui widget Qt (menu, tabelle), senza fare mocking delle parti interessanti.
- **[`docs/Decisions-Techniques.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Decisions-Techniques.md)** — ogni scelta tecnica non ovvia, le alternative scartate e i bug (inclusi quelli introdotti dall'IA) che sono stati trovati e corretti, con il ragionamento messo per iscritto.
- **[`docs/Architecture.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Architecture.md)** e **[`docs/Carte-des-Modules.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Carte-des-Modules.md)** — la struttura effettiva del codice, mantenuta sincronizzata con ciò che viene distribuito.
- Un **controllo di coerenza i18n** eseguito prima di ogni rilascio per individuare chiavi di traduzione mancanti nelle 8 lingue supportate.

Niente di tutto ciò esiste perché l'IA non è affidabile. Esiste perché nulla dovrebbe essere distribuito senza un processo che lo verifichi — incluso il codice scritto a mano. Giudica l'output e come viene verificato, non lo strumento che ha aiutato a scriverlo.

Hai comunque trovato un bug? È utile, non imbarazzante — [apri una issue](https://github.com/thongor77/nmlinux/issues).

---

## Community

**Le [GitHub Discussions](https://github.com/thongor77/nmlinux/discussions) sono aperte** — condividi feedback, segnala idee, fai domande o semplicemente saluta. L'autore ha oltre 30 anni di esperienza in infrastrutture e operations, e ha costruito questo strumento perché un software buono, gratuito e semplice dovrebbe esistere anche per Linux.

---

## Screenshot

> Screenshot Linux dalla v1.2.7 — screenshot macOS dalla v1.3.5. L'app ora ha 29 moduli e 8 lingue dell'interfaccia (FR/EN/ES/DE/IT/PT/JA/ZH).

**Linux (KDE)**

| Dashboard | Topology |
|-----------|----------|
| ![Dashboard](https://assets.kitploit.com/production/public/readmes/7933/8c4d0041882b63913349c955a86e2f91ede403d8642162453eae1442292e850c.png) | ![Topology](https://assets.kitploit.com/production/public/readmes/7933/54c953b3974b33d8284c134aef468d1f7c4370be41cce2142ee4445e9f176ce6.png) |

| Traceroute | Wi-Fi |
|------------|-------|
| ![Traceroute](https://assets.kitploit.com/production/public/readmes/7933/48ba34b1dae2a9287ad85466204d728bfa71f2752231fb3e560c74c8ad2a5c63.png) | ![Wi-Fi](https://assets.kitploit.com/production/public/readmes/7933/d271c0c8a07ce0a7fcfe6a936b95ecc2f0a75696a4e11fb5cab78900ae682b98.png) |

**macOS**

| Dashboard | Traceroute |
|-----------|------------|
| ![macOS Dashboard](https://assets.kitploit.com/production/public/readmes/7933/2c47bede13ac773aaedd774b25e8a4c7113dc191778bb6434f8582b191acaaf1.png) | ![macOS Traceroute](https://assets.kitploit.com/production/public/readmes/7933/9fbe381fe228ef64ebe1c8354ec9fdced669d7f6d6d7555db1c9418394ec65d0.png) |

---

## Changelog

### v1.7.14 — 2026-09-30

- **AppImage — correzione del crash all'avvio, tentativo 2**: la correzione della v1.7.13 (rimozione delle librerie di sistema incluse nel bundle) non è stata sufficiente — l'interprete Python incorporato stesso (`libpython3.14.so.1.0`, compilato contro la glibc 2.44 della macchina di sviluppo Arch Linux) richiedeva ancora simboli glibc più recenti di quelli disponibili sulla macchina di test del catalogo AppImageHub (Ubuntu 22.04, glibc 2.35), quindi l'AppImage continuava a bloccarsi proprio all'avvio. `build-appimage.sh` ora compila il bundle PyInstaller all'interno di un container `ubuntu:22.04` (tramite `podman`) invece che sull'host, così ogni binario incorporato è linkato esattamente alla versione di glibc che l'AppImage deve supportare.

### v1.7.13 — 2026-09-30

- **AppImage — correzione del crash all'avvio (incompleta, vedi v1.7.14)**: `build-appimage.sh` includeva nel bundle librerie condivise (`libz.so.1`, `libstdc++.so.6`, `libX11.so.6`, `libfontconfig.so.1` e altre) direttamente dalla glibc molto recente della macchina di build Arch Linux. Su distribuzioni più vecchie l'AppImage si bloccava immediatamente all'avvio (`GLIBC_ABI_DT_RELR' not found`), rilevato dal test automatizzato del catalogo AppImageHub. Queste librerie ora vengono rimosse dal bundle, così l'AppImage utilizza le copie proprie del sistema host, che è l'approccio standard per le AppImage.

### v1.7.12 — 2026-08-12

- **Traceroute — correzione**: sotto Flatpak (v1.7.11, vedi sotto — ora rimossa), `traceroute` veniva sempre risolto sul `PATH` tramite lo shim dell'host anche quando l'host non aveva un vero binario `traceroute` installato, quindi il worker non ripiegava mai su `tracepath` e il trace terminava istantaneamente senza hop e senza errori mostrati. Ora ripiega su `tracepath` ogni volta che `traceroute` non produce alcun output analizzabile, indipendentemente dal *motivo* del fallimento.
- **Terminale SSH — correzione askpass**: quando `DISPLAY`/`WAYLAND_DISPLAY` sono impostati (qualsiasi sessione grafica) e ssh non ha un tty pulito, può tentare `$SSH_ASKPASS` per il prompt della password invece del terminale incorporato — fallendo silenziosamente l'autenticazione se nessun helper askpass è installato. `SSH_ASKPASS_REQUIRE=never` ora forza i prompt della password a passare sempre attraverso il terminale stesso.
- **Packaging Flatpak rimosso**: il manifest locale per KDE Linux distribuito nella v1.7.11 è discontinuato. Investigando il bug del prompt della password SSH di cui sopra è emerso un limite a livello di kernel: un processo inoltrato tramite `flatpak-spawn --host` non può mai diventare il proprietario del terminale di controllo del pty inoltrato (`TIOCSCTTY` rifiutato con `EPERM` — una sessione diversa e non correlata lo possiede già; questo è un confine di sicurezza intenzionale del kernel, non un bug). L'unico workaround funzionante (`script`, che alloca un nuovo pty) corregge il prompt della password ma rompe la propagazione del ridimensionamento del terminale in tempo reale per quella sessione — giudicato un compromesso peggiore rispetto al non distribuire affatto Flatpak. AUR e l'AppImage sono i percorsi di installazione Linux supportati d'ora in poi.

### v1.7.11 — 2026-08-03

- **Packaging Flatpak (KDE Linux)**: un manifest di build locale sotto `packaging/flatpak/` è destinato a KDE Linux e ad altre distribuzioni solo-Flatpak. Gli strumenti CLI dell'host a cui nmlinux delega (`nmcli`, `pkexec`, `mount.cifs`, `ssh`, `nmap`, …) sono collegati tramite shim `flatpak-spawn --host` sul `PATH` invece di sandboxare ciascuno individualmente; PySide6 proviene da `io.qt.PySide.BaseApp` di Flathub invece che dalla wheel PyPI. Non pubblicato su Flathub — un singolo bundle `.flatpak` viene compilato con `packaging/flatpak/build-bundle.sh` e allegato a ogni rilascio, allo stesso modo dell'AppImage. **Discontinuato nella v1.7.12 — vedi sopra.**

### v1.7.10 — 2026-08-03

- **Terminale SSH — correzione**: corretta una race condition per cui il PTY poteva partire con dimensioni errate (predefinite 24×80) se le dimensioni effettive del widget del terminale non erano ancora note al momento dell'avvio della sessione, scartando silenziosamente la richiesta di ridimensionamento. Questo disallineava le app remote a schermo intero (es. Claude Code CLI, htop, vim) rispetto alle dimensioni reali della finestra, causando testo obsoleto/residuo in fondo allo schermo che si puliva solo quando nuovo output scorreva oltre. Segnalato dall'utente; riprodotto con una sessione interattiva reale

### v1.7.9 — 2026-08-02

- **Terminale SSH — copia/incolla**: seleziona il testo con il mouse (clic e trascina, evidenziato), copia con `Ctrl+Shift+C` o dal menu del tasto destro; incolla con `Ctrl+Shift+V` (già esistente). Copiare era precedentemente impossibile — non esisteva alcuna selezione del testo
- **Terminale SSH — sessioni multiple simultanee**: la pagina SSH ora apre ogni connessione in una propria scheda invece di una singola sessione condivisa. Riconnettersi a una connessione salvata — anche due volte alla stessa — uccideva la sessione attiva senza aprirne una sostitutiva funzionante; ora ogni azione di connessione apre una nuova scheda indipendente

### v1.7.8 — 2026-07-14

- **Speed Test — nuova scheda LAN (iperf3)**: accanto al test di velocità internet esistente, una nuova scheda esegue test `iperf3` solo client contro una lista di server pubblici inclusa (26 paesi) o un server personalizzato salvato (es. un server interno dell'organizzazione). Supporta TCP/UDP, IPv4/IPv6/auto e direzione inversa (download), con jitter/perdita mostrati per i test UDP. Suggerito dalla [issue #6](https://github.com/thongor77/nmlinux/issues/6)
- **Nuova dipendenza opzionale**: `iperf3` — installala per abilitare la scheda LAN; altrimenti la scheda mostra un banner e rimane disabilitata

### v1.7.6 — 2026-07-05

- **Asset Inventory — aggiornamento con tasto destro**: fai clic destro su una o più righe già scansionate (multi-selezione supportata) e scegli "Refresh selected" per riscansionare solo quegli host sul posto, invece di rieseguire una scansione completa della rete
- **Asset Inventory — feedback di errore autenticazione SSH**: un login SSH rifiutato ora mostra "SSH auth failed" invece di fallire silenziosamente, senza perdere la baseline hostname/OS rilevata da Nmap — confermato contro un NAS Synology reale dove l'Auto Block di DSM rifiutava una password corretta dopo che altri set di credenziali configurati erano stati provati prima

### v1.7.5 — 2026-07-04

- **Ping Monitor — directory dei target salvati**: un nuovo pannello a sinistra permette di salvare i target di ping (nome, host, intervallo) in una lista persistente, così gli host monitorati sopravvivono a un riavvio dell'app invece di dover essere ridigitati. Un pulsante ★ su ogni riga attivamente monitorata salva quell'host nella directory in qualsiasi momento della sessione — senza bisogno di averlo pianificato in anticipo prima che l'app si chiuda inaspettatamente
- **Ping Monitor — "Start monitoring"**: seleziona un target salvato e avvia il monitoraggio con un clic, riutilizzando il suo intervallo salvato

### v1.7.4 — 2026-07-04

- **Asset Inventory — corretti risultati di scansione incoerenti**: il controllo di liveness inviava un singolo ping con timeout di 1 secondo senza retry, che poteva far cadere un dispositivo reale sotto il carico concorrente dello scanner stesso (fino a 40 host sondati contemporaneamente) o quando un host Wi-Fi era brevemente in sleep tra un beacon e l'altro — confermato dal vivo contro una sottorete reale che restituiva conteggi di dispositivi diversi in esecuzioni ripetute dello stesso range. Il controllo ora riprova il ping prima di ripiegare sulla sonda TCP delle porte
- **Asset Inventory — nuovo pulsante "Refresh empty"**: dopo una scansione, riscansiona solo gli IP che non hanno restituito dati invece dell'intero range; gli host appena trovati vengono uniti ai risultati esistenti

### v1.7.3 — 2026-07-03

- **SMB — monta condivisioni dal menu del tasto destro**: fai clic destro su una condivisione nella scheda SMB e scegli Mount/Unmount per montarla in un percorso locale stabile (`~/mnt/<host>_<share>`), utilizzabile dal terminale e da qualsiasi altra app — non una vista di navigazione transitoria. Solo per la sessione (nessuna persistenza fstab/systemd), credenziali riutilizzate dai campi utente/password esistenti. Linux usa `pkexec mount -t cifs` con un file di credenziali a permessi ristretti (mai esposto via `ps`); macOS usa `mount_smbfs` direttamente. Riprova automaticamente con un dialetto SMB più vecchio (`vers=2.0`) quando un server rifiuta la negoziazione predefinita (comune con unità NAS più vecchie) — entrambi i tentativi avvengono sotto un singolo prompt di autenticazione tramite un processo helper dedicato
- **Nuova dipendenza opzionale**: `cifs-utils` (Linux) per il mount SMB; integrato in macOS

### v1.7.2 — 2026-07-03

- **Installazione macOS — corretti due bug di bootstrap trovati su un Mac vergine**: `bootstrap_macos.sh` non forza più `NONINTERACTIVE=1` sull'installer di Homebrew, che si interrompeva immediatamente su qualsiasi account admin nuovo invece di chiedere la password sudo; il one-liner documentato ora scarica prima lo script invece di passarlo direttamente in pipe a `bash`, poiché i passaggi interattivi annidati (installer Xcode CLT, il prompt sudo di Homebrew stesso) potevano interferire con lo stream di input dello script esterno quando passato in pipe
- **Menu contestuale universale con tasto destro — aggiunto SMB**: `SmbNfsPage` era l'unica pagina target mancante dal sistema di tasto destro inter-modulo distribuito nella v1.7.0; facendo clic destro su un host e scegliendo SMB ora si precompila il campo host e si avvia immediatamente la scansione, in grassetto nel menu quando la porta 445 è rilevata aperta
- **i18n — tradotte le stringhe rimanenti della Dashboard**: l'etichetta della latenza del gateway, il titolo della card TLS Watchlist e la sua riga di stato erano ancora in francese hardcoded; ora tradotte in tutte le 8 lingue dell'interfaccia

### v1.7.1 — 2026-07-02

- **macOS 26 (Tahoe)** — correzioni SSID Wi-Fi: passaggio da `system_profiler` (restituisce `<redacted>` senza Servizi di Localizzazione) a **CoreWLAN** come fonte dati primaria; l'app ora richiede il permesso dei Servizi di Localizzazione al primo avvio; la pagina Wi-Fi mostra tutte le reti con i nomi reali una volta concesso
- **macOS** — Connection Manager: l'SSID connesso ora viene letto tramite CoreWLAN, con `system_profiler` per la modalità di sicurezza
- **macOS** — SMB: messaggio chiaro "authentication required" quando il NAS richiede credenziali; corretto il falso avviso smb.conf da smbclient di Homebrew
- **macOS** — Corretto un potenziale crash all'uscita dopo il primo dialogo di permesso dei Servizi di Localizzazione

### v1.7.0 — 2026-07-02

- **Menu contestuale universale con tasto destro** su ogni tabella che contiene IP o hostname — naviga direttamente tra i moduli senza copiare e incollare: fai clic destro su qualsiasi host scoperto e scegli Ping, Scan ports, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, View in Topology o Add to Inventory. Le voci di menu SSH/RDP/VNC appaiono in **grassetto** quando la porta corrispondente è rilevata aperta. Le etichette sono completamente tradotte in tutte le 8 lingue dell'interfaccia.
- **Pagine sorgente** (emettono azioni con tasto destro): IP Scanner, Nmap, Ping, Port Scanner, Traceroute, MTR, Topology (tasto destro sul nodo)
- **Pagine target** (ricevono l'host e precompilano): Whois (`set_target` + query automatica), DNS (`set_target` solo precompilazione), Ping (`set_target` + avvio automatico), Traceroute (`set_target` + avvio automatico), MTR (`set_target` + avvio automatico), Port Scanner (`set_target` + focus), SSH / RDP / VNC (`set_target` apre il modulo di nuova connessione precompilato), Topology (`load_hosts` inietta nodi dalla scansione IP Scanner/Nmap senza riscansionare — gateway rilevato automaticamente, archi disegnati, nodo di origine evidenziato in rosso), Asset Inventory (`prefill_hosts` avvia direttamente la scansione delle credenziali sugli host scoperti, saltando la fase di discovery ICMP)
- **Dashboard — grafico ping del gateway**: sparkline di latenza in tempo reale aggiornata ogni 2 secondi; codificata a colori (<20 ms verde / 20–100 ms arancione / >100 ms rosso / timeout rosso)
- **Dashboard — riepilogo TLS Watchlist**: la card di stato nella Dashboard riflette automaticamente lo stato della TLS Watchlist (OK / in scadenza / alert) senza ri-interrogare
- **Dashboard — ridimensionamento mappa geo**: la mappa mondiale ora si espande orizzontalmente quando la finestra viene ridimensionata

### v1.6.4 — 2026-06-28

- **macOS**: la barra dei menu ora mostra **NMLinux** invece di **Python** — causa principale: dopo `exec()` in Python, `NSBundle.mainBundle()` si risolve nel bundle `Python.framework` (CFBundleName = "Python") che Qt legge durante la costruzione di QApplication; corretto patchando `infoDictionary()` del bundle e rinominando le voci di menu native tramite AppKit prima che venga creato il menu dell'applicazione

### v1.6.3 — 2026-06-28

- **macOS**: primo tentativo di correggere la barra dei menu usando `NSProcessInfo.setProcessName_` tramite `pyobjc-framework-Cocoa` (superato dalla v1.6.4)

### v1.6.2 — 2026-06-28

- **macOS**: sostituito lo script launcher bash con uno stub C compilato in `install_macos_app.sh` così che macOS associ correttamente il bundle `.app` al processo in esecuzione; aggiunti `setprogname` e override di `sys.argv[0]` come fallback

### v1.6.1 — 2026-06-25

- **Terminale SSH — corretto l'echo remoto**: i tasti digitati nel terminale SSH incorporato venivano inviati alla shell remota ma non venivano mai rimandati indietro (la tastiera sembrava "morta" dopo il login). nmlinux forzava l'echo del PTY locale su off, e ssh propagava quel "no echo" al pty remoto tramite le sue modalità terminale (pty-req), così la shell remota smetteva di fare echo dell'input. Riprodotto su una VM Ubuntu 26.04 pulita (OpenSSH recente applica fedelmente queste modalità). Il terminale ora mantiene il PTY in modalità normale e lascia che ssh gestisca l'echo, come i veri emulatori di terminale.

### v1.6.0 — 2026-06-24

- **Asset Inventory — WinRM Windows (completo)**: rilevamento host tramite sonda TCP sulle porte quando ICMP è bloccato dal Windows Firewall; PowerShell ora usa il percorso assoluto completo + **EncodedCommand (base64)** per impedire a cmd.exe di interpretare le pipe `|`; catena di fallback completa senza diritti admin: OS tramite `ver`, CPU tramite registro, RAM tramite `systeminfo`, disco tramite `wmic` → `fsutil` (consapevole della locale EN virgola / FR spazio) → `dir /-C`
- **Asset Inventory — SSH multi-credenziale**: supportati più set di credenziali SSH; corretto il disco macOS (`/System/Volumes/Data`), fallback CPU Apple Silicon (`hw.model`), Synology (`/volume1`), Unraid (`/mnt/user`)
- **Correzioni di bug**: gli errori WinRM ora vengono mostrati in tabella invece del fallback silenzioso; il rilevamento host WinRM/SNMP non è più bloccato dalla presenza di credenziali SSH; corretto il timeout di pywinrm

### v1.5.3 — 2026-06-24

- **macOS .app — rilevamento strumenti Homebrew**: `sshpass`, `nmap` e `snmpget` installati tramite Homebrew ora vengono trovati e chiamati usando il loro percorso assoluto; i bundle `.app` su macOS non ereditano il PATH di Homebrew (`/opt/homebrew/bin`, `/usr/local/bin`), quindi gli strumenti precedentemente installati venivano silenziosamente ignorati
- **Percorso di aggiornamento macOS**: eseguire `git pull && bash packaging/install_macos_app.sh` dalla radice del repo è ora il metodo di aggiornamento documentato; lo script gestisce il proprio venv (`~/.local/share/nmlinux/venv`) e non richiede `pip` o `pipx` a livello di sistema

### v1.5.2 — 2026-06-24

- **Asset Inventory** — nuovo modulo (29°); scansiona un range CIDR e raccoglie OS, CPU, RAM, disco e uptime da ogni host tramite SSH, WinRM, SNMP o Nmap; supporta più set di credenziali per protocollo (prova ciascuno in ordine); politica di zero retention: le credenziali non vengono mai scritte su disco, cancellate dalla memoria dopo la scansione; esporta i risultati come JSON, CSV o Markdown; aggiunta mappa geo animata alla sezione IP Geolocation della Dashboard
- **Correzioni raccolta SSH**: corretto errore di quoting awk nel comando disco; `free -h` sostituito con `free` compatibile con BusyBox; il percorso di codice macOS ora usa `sw_vers` per il nome dell'OS, fallback `hw.model` per la CPU Apple Silicon, `/System/Volumes/Data` per il volume dati utente APFS; volumi Synology/Unraid (`/volume1`, `/mnt/user`) rilevati prima della root; corretto il pattern di falso successo `df | tail -1 || …` con guardie `test -d`; output di `lsb_release` ripulito dalle virgolette circostanti; supportati più set di credenziali SSH/WinRM (prova ciascuno in ordine per host)

### v1.5.0 — 2026-06-17

- **File Transfer Server** — nuovo modulo per avviare/fermare un server TFTP o HTTP leggero direttamente dall'app; caso d'uso classico: backup e ripristino di configurazioni di router, switch o stampanti; un server attivo alla volta (TFTP o HTTP), porta e directory root configurabili, IP locali mostrati come pulsanti copia-negli-appunti; HTTP include directory listing (navigabile da qualsiasi browser sulla LAN), GET (download) e POST/PUT (upload); TFTP supporta GET e PUT (bidirezionale), la porta 69 richiede root — l'app mostra un pulsante "Start as root (pkexec)" in caso di errore di permessi; tabella di log dei trasferimenti in tempo reale (timestamp, nome file, IP client, direzione ↑/↓, dimensione); protezione da path traversal; 8 lingue dell'interfaccia; nuova dipendenza: `tftpy`

### v1.4.3 — 2026-06-14- **Correzioni TLS Watchlist**: i certificati self-signed e non attendibili ora vengono mostrati correttamente come "⚠ Invalid / untrusted cert" (arancione) invece che in verde; la cattura delle eccezioni SSL è stata ampliata per coprire tutte le sottoclassi di `ssl.SSLError`; le voci ora mostrano "… (checking)" mentre il controllo in background è in esecuzione e "— (unreachable)" quando l'host non è raggiungibile

### v1.4.2 — 2026-06-14

- **TLS Watchlist** — lista persistente di hostname da monitorare per la scadenza dei certificati; aggiungi host con `+ Watch` (usa host/porta correnti) o manualmente nel pannello; il controllo in background parte automaticamente 2 secondi dopo l'avvio; la voce "TLS Inspector" nella barra laterale mostra un punto colorato: rosso se un certificato è scaduto, arancione se un certificato scade entro 30 giorni; pulsante di ricontrollo nel pannello; la lista mostra lo stato per ogni voce (✓ / ⚠ / EXPIRED) con codifica a colori

### v1.4.1 — 2026-06-14

- **macOS — IP Scanner**: corretti il MAC address, il vendor e la ricerca dell'interfaccia su macOS; `_arp_entry()` ora chiama `arp -n <ip>` su macOS e analizza il suo formato di output (`? (IP) at AA:BB:CC on en0`) invece di leggere `/proc/net/arp` (solo Linux); tutte e quattro le colonne dello scanner ora vengono popolate correttamente su macOS
- **Guida VNC**: aggiunta una nota in tutte le 8 lingue che chiarisce che Linux non ha un server VNC predefinito e che elenca le opzioni comuni da installare (x11vnc, tigervnc-server, wayvnc)

### v1.4.0 — 2026-06-14

- **macOS — IP Scanner**: sostituito `getent` (solo Linux) con `socket.gethostbyaddr()` di Python per la risoluzione DNS inversa multipiattaforma; la risoluzione dell'hostname ora funziona nativamente su macOS senza alcuno strumento aggiuntivo
- **macOS — SMB Browser**: passato da `smbclient` (richiede samba di Homebrew) a `smbutil view` (strumento integrato in macOS); l'elenco delle condivisioni SMB ora funziona su macOS senza alcuna installazione
- **macOS — NFS Browser**: `showmount` è integrato in macOS ma non supporta `--no-headers`; flag rimosso su macOS, riga di intestazione saltata nel parser; l'elenco degli export NFS ora funziona nativamente
- **macOS — RDP**: quando `xfreerdp` non viene trovato, esegue il fallback allo schema URL `open rdp://`; apre Microsoft Remote Desktop (App Store) se installato, con host, porta, username e dominio precompilati
- **macOS — VNC**: quando `vncviewer` non viene trovato, esegue il fallback allo schema URL `open vnc://`; apre Screen Sharing di macOS (integrato, nessuna installazione richiesta)

### v1.3.9 — 2026-06-13

- **SSH agent forwarding** — nuova casella di controllo "Agent forwarding" nel modulo di connessione SSH; aggiunge `-A` al comando `ssh`; consente di saltare tra server senza copiare la chiave privata (PC → A → B); richiede un agente SSH attivo (`SSH_AUTH_SOCK`); guida contestuale aggiornata in tutte le 8 lingue

### v1.3.8 — 2026-06-13

- **Command Palette (Ctrl+P)** — navigazione istantanea da tastiera verso uno qualsiasi dei 27 moduli; ricerca fuzzy su nome e parole chiave (es. "firewall", "tls", "ssh key", "scan"); frecce Su/Giù + Invio o singolo clic per navigare; si apre con Ctrl+P da qualsiasi punto dell'app
- **Export Manager** — esporta uno snapshot completo della rete (interfacce, route, resolver DNS) da File → Export Network Report… in JSON, Markdown, testo semplice o PDF (opzionale: `pip install reportlab`)
- **Pulsanti di esportazione a livello di modulo** — pulsanti Export aggiunti alle pagine Interfaces, DNS, Firewall, SSH Connections e Connection Manager; ogni pagina esporta i propri dati correnti nel formato scelto con aggiornamento in tempo reale dell'estensione del nome file quando cambia il filtro del formato

### v1.3.6 — 2026-06-12

- **Topology — icone dei dispositivi** — ogni nodo ora mostra un'icona SVG Lucide corrispondente al tipo di dispositivo (router/wifi, computer/laptop, stampante, NAS/server, smartphone, switch di rete, Raspberry Pi) invece di un cerchio generico; 5 nuove icone SVG incluse (`printer`, `server`, `smartphone`, `cpu`, `laptop`)
- **Topology — rilevamento mDNS** — il tipo di dispositivo viene rilevato tramite `avahi-browse` (opzionale, eseguito in parallelo alla scansione nmap); identifica stampanti (`_ipp._tcp`, `PDL Printer`), telefoni e TV Android (`_googlecast._tcp`, `_androidtvremote2._tcp`), Mac Apple (modello `am=Mac16,x` nel TXT AirPlay), dispositivi NAS (Synology riporta `model=Xserve`), desktop KDE Connect; esegue il fallback all'OUI del vendor MAC e alle euristiche sull'hostname quando avahi non è disponibile
- **Topology — pannello di dettaglio** mostra la classe di dispositivo rilevata (Printer, Smartphone, NAS…) invece dell'etichetta generica "Host"; i18n in tutte le 8 lingue
- **Traceroute — auto-zoom** — la mappa mondiale esegue automaticamente zoom e centratura sul bounding box degli hop geolocalizzati al termine di ogni route; si disabilita quando l'utente esegue pan o zoom manualmente; si ripristina al traceroute successivo; il clic destro reimposta la vista completa del mondo

### v1.3.5 — 2026-06-06

- **Compatibilità macOS** — tutti i 9 moduli di rete ora funzionano su macOS senza rompere il comportamento su Linux; ogni modulo rileva la piattaforma all'avvio (`_IS_MACOS`) e dirama verso i comandi nativi di macOS: `route -n get default`, `ifconfig`, `scutil --dns`, `networksetup`, `system_profiler SPAirPortDataType`, `pfctl`, `netstat -ib`; l'escalation dei privilegi usa `osascript` + `with administrator privileges` invece di `pkexec`; il font monospace usa `Menlo` invece di `Monospace`
- **Moduli con percorsi doppi Linux/macOS**: Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall (pf.conf + pfctl), Connection Manager, Hosts File, MTR
- **Moduli invariati** (strumenti identici su entrambe le piattaforme): DNS, Nmap Scan, SNMP, Whois

### v1.3.2 — 2026-06-06

- **i18n esteso a 8 lingue** — aggiunti Italiano, Português, 日本語 (giapponese) e 中文 (cinese semplificato); l'intera interfaccia (tutti i 27 moduli, ~720 chiavi di traduzione) è ora disponibile in FR / EN / ES / DE / IT / PT / JA / ZH; dopo aver cambiato la lingua nelle Impostazioni appare un prompt di riavvio
- **Guida contestuale in 8 lingue** — il pannello del badge `?` (descrizione, esempi d'uso e comandi CLI equivalenti) ora copre tutte le 8 lingue per ogni modulo; in precedenza JA e ZH ricadevano sull'inglese
- **Correzione di bug** — i tooltip di navigazione per SMB/NFS e Hosts File venivano mostrati in francese indipendentemente dalla lingua selezionata; aggiunte le chiavi mancanti `nav_hint_smb_nfs` e `nav_hint_hosts` in tutti i 7 blocchi linguistici non francesi

### v1.3.1 — 2026-06-05

- **SSH Key Manager** — elenca tutte le coppie di chiavi in `~/.ssh/` (file, tipo, bit, commento, fingerprint SHA256); genera chiavi Ed25519 o RSA 4096 con passphrase opzionale (rilevamento mancata corrispondenza, nome file automatico per tipo); copia la chiave pubblica negli appunti; distribuisci su un server remoto tramite `ssh-copy-id` in un terminale inline con supporto stdin per i prompt di password; elimina coppie di chiavi con conferma; crea automaticamente `~/.ssh/` se mancante; i18n: fr / en / es / de

### v1.3.0 — 2026-06-03

- **TLS / SSL Inspector** — ispeziona il certificato di qualsiasi server: CN del subject, SAN, issuer, date di validità (codificate a colori: verde / arancione < 30 giorni / rosso scaduto), numero seriale, protocollo TLS, cipher suite e catena di certificati (tramite `openssl s_client`); funziona per certificati validi, scaduti e self-signed; messaggi di errore chiari per host non raggiungibili
- **SMB / NFS Browser** — elenca condivisioni ed export da qualsiasi server; scheda SMB: `smbclient -L` con credenziali opzionali, mostra nome / tipo / commento della condivisione; scheda NFS: `showmount -e`, mostra il percorso di export e la lista di accesso; rileva strumenti mancanti con istruzioni di installazione specifiche per la distro
- **Hosts File Editor** — visualizza e modifica `/etc/hosts`; tabella con interruttore abilita/disabilita, aggiungi/modifica/elimina voci tramite finestra di dialogo; filtra per IP o hostname; salva tramite `pkexec cp` (finestra di autenticazione polkit)
- **install.sh** — nuovo script per Debian / Ubuntu / Linux Mint: crea un venv in `~/.local/share/nmlinux/venv`, installa le dipendenze di sistema tramite apt, crea il launcher e la voce `.desktop` (corregge l'errore PEP 668 `externally-managed-environment`)

### v1.2.9 — 2026-05-30

- **VNC** — nuovo modulo per la gestione dei profili di connessione VNC; gruppi/sottogruppi come SSH e RDP; avvia `vncviewer` (TigerVNC); compatibile con macOS ARD (autenticazione DH30 gestita nativamente da vncviewer); la password non viene mai memorizzata; rileva `vncviewer` mancante con istruzioni di installazione specifiche per la distro
- **About — Tools & services** — nuova sezione che elenca tutti gli strumenti e le API di terze parti da cui dipende l'app
- **Sidebar i18n** — tutti i 23 tooltip di navigazione ora tradotti in FR/EN/ES/DE (erano hardcoded in francese); etichette corrette: Topology, Connections, Subnet

### v1.2.8 — 2026-05-30

---

[Read more](https://github.com/thongor77/nmlinux)
Scarica lo strumento