Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
nmlinux — Toolkit de rede unificado para Linux — Python 3 + PySide6 | Kitploit
Ferramentas/GitHubGitHub/thongor77/nmlinux
Mapeamento de RedeEscaneamento de PortasColeta de InformaçõesAnálise de DNS
GitHubthongor77/nmlinux

nmlinux

Toolkit de rede unificado para Linux — Python 3 + PySide6

Ver Repositório
92158há 27 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
# 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)

**Um kit de ferramentas de rede unificado para Linux e macOS — inspecione, conecte, diagnostique.**

NMLinux é uma GUI única e unificada que reúne 29 módulos de rede em uma só janela: monitoramento de interfaces, Wi-Fi, DNS, terminal SSH, visualizador de firewall, mapa de topologia, traceroute e muito mais. Construído do zero em Python e PySide6 (Qt 6), com 8 idiomas de interface e sem dependências externas além das ferramentas padrão do sistema.

> [!NOTE]
> **O NMLinux não tem relação com o daemon do sistema Linux `/usr/bin/NetworkManager` (NetworkManager da Red Hat/GNOME).** O NMLinux é um projeto independente construído do zero em Python e PySide6.

> Construído com [Claude Code](https://claude.ai/code) (Anthropic) e a contribuição de seu autor.

---

## Processo de desenvolvimento

O NMLinux é construído com assistência de IA — [Claude Code](https://claude.ai/code), especificamente — e isso não está escondido em nenhum lugar deste repositório. Quase todo projeto de software sério hoje usa IA em algum ponto do seu pipeline, quer admita ou não. Então "a IA esteve envolvida" não é a pergunta interessante. A pergunta interessante é: existe algo que a detecte quando a IA erra?

Aqui está o que existe, caso você prefira verificar em vez de acreditar na minha palavra:

- **162 testes** — `pytest tests/ -v`. Lógica pura mais alguns testes reais de widgets Qt (menus, tabelas), sem simular as partes interessantes.
- **[`docs/Decisions-Techniques.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Decisions-Techniques.md)** — cada decisão técnica não óbvia, as alternativas que foram rejeitadas e os bugs (incluindo os introduzidos por IA) que foram encontrados e corrigidos, com o raciocínio documentado.
- **[`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)** — a estrutura real do código, mantida em sincronia com o que é distribuído.
- Uma **verificação de consistência de i18n** executada antes de cada lançamento para detectar chaves de tradução ausentes nos 8 idiomas suportados.

Nada disso existe porque a IA não é confiável. Existe porque nada deveria ser lançado sem um processo que o verifique — incluindo código escrito à mão. Julgue o resultado e como ele é verificado, não a ferramenta que ajudou a escrevê-lo.

Encontrou um bug mesmo assim? Isso é útil, não vergonhoso — [abra uma issue](https://github.com/thongor77/nmlinux/issues).

---

## Comunidade

**[As GitHub Discussions](https://github.com/thongor77/nmlinux/discussions) estão abertas** — compartilhe feedback, reporte ideias, faça perguntas ou apenas diga olá. O autor tem mais de 30 anos em infraestrutura e operações, e construiu esta ferramenta porque software bom, gratuito e simples também deveria existir para Linux.

---

## Capturas de tela

> Capturas de tela do Linux da v1.2.7 — capturas de tela do macOS da v1.3.5. O aplicativo agora tem 29 módulos e 8 idiomas de interface (FR/EN/ES/DE/IT/PT/JA/ZH).

**Linux (KDE)**

| Dashboard | Topologia |
|-----------|----------|
| ![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 — correção do travamento na inicialização, tentativa 2**: a correção da v1.7.13 (remover bibliotecas de sistema empacotadas) não foi suficiente — o próprio interpretador Python embutido (`libpython3.14.so.1.0`, compilado contra a glibc 2.44 da máquina de desenvolvimento Arch Linux) ainda exigia símbolos da glibc mais recentes do que os disponíveis na máquina de teste do catálogo AppImageHub (Ubuntu 22.04, glibc 2.35), então o AppImage continuava travando logo na inicialização. O `build-appimage.sh` agora compila o pacote PyInstaller dentro de um contêiner `ubuntu:22.04` (via `podman`) em vez de no host, para que cada binário embutido seja vinculado exatamente à versão da glibc que o AppImage precisa suportar.

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

- **AppImage — correção do travamento na inicialização (incompleta, veja v1.7.14)**: o `build-appimage.sh` estava empacotando bibliotecas compartilhadas (`libz.so.1`, `libstdc++.so.6`, `libX11.so.6`, `libfontconfig.so.1` e outras) diretamente da glibc muito recente da máquina de compilação Arch Linux. Em distribuições mais antigas, o AppImage travava imediatamente na inicialização (`GLIBC_ABI_DT_RELR' not found`), detectado pelo teste automatizado do catálogo AppImageHub. Essas bibliotecas agora são removidas do pacote para que o AppImage use as cópias do próprio sistema hospedeiro, que é a abordagem padrão para AppImages.

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

- **Traceroute — correção**: sob Flatpak (v1.7.11, veja abaixo — agora removido), o `traceroute` sempre era resolvido no `PATH` via o shim do host mesmo quando o host não tinha um binário `traceroute` real instalado, então o worker nunca recorria ao `tracepath` e o trace terminava instantaneamente sem hops e sem erro exibido. Agora ele recorre ao `tracepath` sempre que o `traceroute` não produz nenhuma saída analisável, independentemente do *motivo* da falha.
- **Terminal SSH — correção do askpass**: quando `DISPLAY`/`WAYLAND_DISPLAY` estão definidos (qualquer sessão gráfica) e o ssh não tem um tty limpo, ele pode tentar `$SSH_ASKPASS` para o prompt de senha em vez do terminal embutido — falhando silenciosamente na autenticação se nenhum helper askpass estiver instalado. `SSH_ASKPASS_REQUIRE=never` agora força os prompts de senha a sempre passarem pelo próprio terminal.
- **Empacotamento Flatpak removido**: o manifesto local do KDE Linux distribuído na v1.7.11 foi descontinuado. Investigar o bug do prompt de senha do SSH acima revelou uma limitação em nível de kernel: um processo retransmitido via `flatpak-spawn --host` nunca pode se tornar o proprietário do terminal de controle do pty encaminhado (`TIOCSCTTY` recusado com `EPERM` — uma sessão diferente e não relacionada já o possui; esta é uma fronteira de segurança intencional do kernel, não um bug). A única solução alternativa funcional (`script`, alocando um novo pty) corrige o prompt de senha mas quebra a propagação de redimensionamento do terminal ao vivo para essa sessão — julgado um trade-off pior do que não distribuir o Flatpak de forma alguma. AUR e o AppImage são os caminhos de instalação Linux suportados daqui em diante.

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

- **Empacotamento Flatpak (KDE Linux)**: um manifesto de compilação local em `packaging/flatpak/` tem como alvo o KDE Linux e outras distribuições somente Flatpak. As ferramentas CLI do host para as quais o nmlinux chama (`nmcli`, `pkexec`, `mount.cifs`, `ssh`, `nmap`, …) são intermediadas via shims `flatpak-spawn --host` no `PATH` em vez de isolar cada uma individualmente; o PySide6 vem do `io.qt.PySide.BaseApp` do Flathub em vez do wheel do PyPI. Não publicado no Flathub — um único pacote `.flatpak` é compilado com `packaging/flatpak/build-bundle.sh` e anexado a cada lançamento, da mesma forma que o AppImage já é. **Descontinuado na v1.7.12 — veja acima.**

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

- **Terminal SSH — correção**: corrigida uma condição de corrida em que o PTY podia iniciar com o tamanho errado (padrão 24×80) se o tamanho real do widget do terminal ainda não fosse conhecido quando a sessão era iniciada, descartando silenciosamente a solicitação de redimensionamento. Isso dessincronizava aplicativos remotos em tela cheia (por exemplo, Claude Code CLI, htop, vim) do tamanho real da janela, causando texto obsoleto/residual na parte inferior da tela que só era limpo conforme nova saída rolava por cima. Reportado pelo usuário; reproduzido com uma sessão interativa real

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

- **Terminal SSH — copiar/colar**: selecione texto com o mouse (clique e arraste, destacado), copie com `Ctrl+Shift+C` ou o menu de clique direito; cole com `Ctrl+Shift+V` (já existente). Copiar era anteriormente impossível — não existia seleção de texto alguma
- **Terminal SSH — múltiplas sessões simultâneas**: a página SSH agora abre cada conexão em sua própria aba em vez de uma única sessão compartilhada. Reconectar a uma conexão salva — mesmo a mesma duas vezes — costumava matar a sessão ativa sem abrir uma substituta funcional; agora cada ação de conexão abre uma nova aba independente

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

- **Speed Test — nova aba LAN (iperf3)**: junto com o teste de velocidade de internet existente, uma nova aba executa testes `iperf3` somente cliente contra uma lista de servidores públicos incluída (26 países) ou um servidor personalizado salvo (por exemplo, um servidor interno da organização). Suporta TCP/UDP, IPv4/IPv6/auto e direção reversa (download), com jitter/perda exibidos para testes UDP. Sugerido pela [issue #6](https://github.com/thongor77/nmlinux/issues/6)
- **Nova dependência opcional**: `iperf3` — instale para habilitar a aba LAN; a aba mostra um banner e permanece desabilitada caso contrário

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

- **Inventário de Ativos — atualização por clique direito**: clique com o botão direito em uma ou mais linhas já escaneadas (seleção múltipla suportada) e escolha "Atualizar selecionados" para reescanear apenas esses hosts no local, em vez de executar novamente um escaneamento completo da rede
- **Inventário de Ativos — feedback de falha de autenticação SSH**: um login SSH rejeitado agora mostra "Falha na autenticação SSH" em vez de falhar silenciosamente, sem perder a linha de base de hostname/SO detectada pelo Nmap — confirmado contra um NAS Synology real onde o Auto Block do DSM rejeitou uma senha correta após outros conjuntos de credenciais configurados serem tentados primeiro

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

- **Monitor de Ping — diretório de alvos salvos**: um novo painel à esquerda permite salvar alvos de ping (nome, host, intervalo) em uma lista persistente, para que os hosts sendo monitorados sobrevivam a uma reinicialização do aplicativo em vez de terem que ser redigitados. Um botão ★ em cada linha ativamente monitorada salva esse host no diretório a qualquer momento durante a sessão — sem necessidade de ter planejado com antecedência antes que o aplicativo feche inesperadamente
- **Monitor de Ping — "Iniciar monitoramento"**: selecione um alvo salvo e comece a monitorá-lo com um clique, reutilizando seu intervalo salvo

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

- **Inventário de Ativos — corrigidos resultados de escaneamento inconsistentes**: a verificação de atividade enviava um único ping com timeout de 1 segundo sem retentativa, o que podia descartar um dispositivo real sob a própria carga concorrente do scanner (até 40 hosts sondados ao mesmo tempo) ou quando um host Wi-Fi estava brevemente adormecido entre beacons — confirmado ao vivo contra uma sub-rede real que retornava contagens de dispositivos diferentes em execuções repetidas do mesmo intervalo. A verificação agora tenta o ping novamente antes de recorrer à sondagem de porta TCP
- **Inventário de Ativos — novo botão "Atualizar vazios"**: após um escaneamento, reescaneia apenas os IPs que não retornaram dados em vez de todo o intervalo novamente; hosts recém-encontrados são mesclados aos resultados existentes

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

- **SMB — montar compartilhamentos pelo menu de clique direito**: clique com o botão direito em um compartilhamento na aba SMB e escolha Montar/Desmontar para montá-lo em um caminho local estável (`~/mnt/<host>_<share>`), utilizável a partir do terminal e de qualquer outro aplicativo — não uma visualização de navegação transitória. Somente sessão (sem persistência em fstab/systemd), credenciais reutilizadas dos campos de usuário/senha existentes. O Linux usa `pkexec mount -t cifs` com um arquivo de credenciais de permissão restrita (nunca exposto via `ps`); o macOS usa `mount_smbfs` diretamente. Tenta novamente automaticamente com um dialeto SMB mais antigo (`vers=2.0`) quando um servidor rejeita a negociação padrão (comum com unidades NAS mais antigas) — ambas as tentativas acontecem sob um único prompt de autenticação via um processo auxiliar dedicado
- **Nova dependência opcional**: `cifs-utils` (Linux) para montagem SMB; integrado ao macOS

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

- **Instalação no macOS — corrigidos dois bugs de bootstrap encontrados em um Mac limpo**: o `bootstrap_macos.sh` não força mais `NONINTERACTIVE=1` no instalador do Homebrew, o que abortava imediatamente em qualquer conta de administrador nova em vez de solicitar a senha do sudo; o one-liner documentado agora baixa o script primeiro em vez de canalizá-lo diretamente para o `bash`, já que etapas interativas aninhadas (instalador do Xcode CLT, o próprio prompt de sudo do Homebrew) podiam interferir no próprio fluxo de entrada do script externo quando canalizado
- **Menu universal de clique direito — SMB adicionado**: o `SmbNfsPage` era a única página de destino ausente do sistema de clique direito entre módulos distribuído na v1.7.0; clicar com o botão direito em um host e escolher SMB agora preenche o campo de host e inicia o escaneamento imediatamente, em negrito no menu quando a porta 445 é detectada aberta
- **i18n — strings restantes do Dashboard traduzidas**: o rótulo de latência do gateway, o título do cartão TLS Watchlist e sua linha de status ainda estavam em francês fixo; agora traduzidos nos 8 idiomas de interface

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

- **macOS 26 (Tahoe)** — correções de SSID Wi-Fi: mudou de `system_profiler` (retorna `<redacted>` sem Serviços de Localização) para **CoreWLAN** como fonte de dados primária; o aplicativo agora solicita permissão de Serviços de Localização na primeira inicialização; a página Wi-Fi mostra todas as redes com nomes reais uma vez concedida
- **macOS** — Gerenciador de Conexões: SSID conectado agora lido via CoreWLAN, com `system_profiler` para o modo de segurança
- **macOS** — SMB: mensagem clara de "autenticação necessária" quando o NAS exige credenciais; corrigido aviso espúrio de smb.conf do smbclient do Homebrew
- **macOS** — Corrigido possível travamento ao sair após o primeiro diálogo de permissão dos Serviços de Localização

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

- **Menu de contexto universal de clique direito** em todas as tabelas que contêm IPs ou hostnames — navegue diretamente entre módulos sem copiar e colar: clique com o botão direito em qualquer host descoberto e escolha Ping, Escanear portas, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, Ver na Topologia ou Adicionar ao Inventário. Os itens de menu SSH/RDP/VNC aparecem em **negrito** quando a porta correspondente é detectada aberta. Os rótulos são totalmente traduzidos nos 8 idiomas de interface.
- **Páginas de origem** (emitem ações de clique direito): IP Scanner, Nmap, Ping, Port Scanner, Traceroute, MTR, Topologia (clique direito no nó)
- **Páginas de destino** (recebem host e pré-preenchem): Whois (`set_target` + consulta automática), DNS (apenas pré-preenchimento `set_target`), Ping (`set_target` + início automático), Traceroute (`set_target` + início automático), MTR (`set_target` + início automático), Port Scanner (`set_target` + foco), SSH / RDP / VNC (`set_target` abre formulário de nova conexão pré-preenchido), Topologia (`load_hosts` injeta nós do escaneamento do IP Scanner/Nmap sem reescanear — gateway detectado automaticamente, arestas desenhadas, nó de origem destacado em vermelho), Inventário de Ativos (`prefill_hosts` inicia o escaneamento de credenciais diretamente nos hosts descobertos, pula a fase de descoberta ICMP)
- **Dashboard — gráfico de ping do gateway**: sparkline de latência ao vivo atualizado a cada 2 segundos; codificado por cores (<20 ms verde / 20–100 ms laranja / >100 ms vermelho / timeout vermelho)
- **Dashboard — resumo do TLS Watchlist**: cartão de status no Dashboard reflete automaticamente o estado do TLS Watchlist (OK / expirando / alerta) sem reconsultar
- **Dashboard — redimensionamento do mapa geográfico**: o mapa-múndi agora se expande horizontalmente quando a janela é redimensionada

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

- **macOS**: a barra de menus agora mostra **NMLinux** em vez de **Python** — causa raiz: após `exec()` para Python, `NSBundle.mainBundle()` resolve para o bundle `Python.framework` (CFBundleName = "Python") que o Qt lê durante a construção do QApplication; corrigido ao aplicar patch no `infoDictionary()` do bundle e renomear itens de menu nativos via AppKit antes que o menu do aplicativo seja criado

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

- **macOS**: primeira tentativa de corrigir a barra de menus usando `NSProcessInfo.setProcessName_` via `pyobjc-framework-Cocoa` (substituída pela v1.6.4)

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

- **macOS**: substituído o script lançador bash por um stub em C compilado em `install_macos_app.sh` para que o macOS associe corretamente o bundle `.app` ao processo em execução; adicionados `setprogname` e substituição de `sys.argv[0]` como alternativas

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

- **Terminal SSH — corrigido eco remoto**: as teclas digitadas no terminal SSH embutido eram enviadas ao shell remoto mas nunca ecoadas de volta (o teclado parecia "morto" após o login). O nmlinux forçava o eco do PTY local desligado, e o ssh propagava esse "sem eco" para o pty remoto através de seus modos de terminal (pty-req), então o shell remoto parava de ecoar a entrada. Reproduzido em uma VM Ubuntu 26.04 limpa (OpenSSH recente aplica esses modos fielmente). O terminal agora mantém o PTY em modo normal e deixa o ssh gerenciar o eco, correspondendo a emuladores de terminal reais.

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

- **Inventário de Ativos — WinRM Windows (completo)**: detecção de host via sondagem de porta TCP quando o ICMP é bloqueado pelo Firewall do Windows; o PowerShell agora usa caminho absoluto completo + **EncodedCommand (base64)** para impedir que o cmd.exe interprete pipes `|`; cadeia de fallback completa sem direitos de administrador: SO via `ver`, CPU via registro, RAM via `systeminfo`, disco via `wmic` → `fsutil` (ciente de localidade EN vírgula / FR espaço) → `dir /-C`
- **Inventário de Ativos — SSH com múltiplas credenciais**: múltiplos conjuntos de credenciais SSH suportados; disco do macOS corrigido (`/System/Volumes/Data`), fallback de CPU Apple Silicon (`hw.model`), Synology (`/volume1`), Unraid (`/mnt/user`)
- **Correções de bugs**: erros do WinRM agora exibidos na tabela em vez de fallback silencioso; detecção de host WinRM/SNMP não é mais bloqueada pela presença de credenciais SSH; timeout do pywinrm corrigido

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

- **macOS .app — detecção de ferramentas Homebrew**: `sshpass`, `nmap` e `snmpget` instalados via Homebrew agora são encontrados e chamados usando seu caminho absoluto; bundles `.app` no macOS não herdam o PATH do Homebrew (`/opt/homebrew/bin`, `/usr/local/bin`), então ferramentas instaladas anteriormente eram silenciosamente ignoradas
- **Caminho de atualização do macOS**: executar `git pull && bash packaging/install_macos_app.sh` a partir da raiz do repositório agora é o método de atualização documentado; o script gerencia seu próprio venv (`~/.local/share/nmlinux/venv`) e não requer `pip` ou `pipx` em nível de sistema

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

- **Inventário de Ativos** — novo módulo (29º); escaneia um intervalo CIDR e coleta SO, CPU, RAM, disco e uptime de cada host via SSH, WinRM, SNMP ou Nmap; suporta múltiplos conjuntos de credenciais por protocolo (tenta cada um em ordem); política de retenção zero: credenciais nunca gravadas em disco, limpas da memória após o escaneamento; exporta resultados como JSON, CSV ou Markdown; mapa geográfico animado adicionado à seção de Geolocalização de IP do Dashboard
- **Correções de coleta SSH**: erro de aspas do awk no comando de disco corrigido; `free -h` substituído por `free` compatível com BusyBox; o caminho de código do macOS agora usa `sw_vers` para o nome do SO, fallback `hw.model` para CPU Apple Silicon, `/System/Volumes/Data` para o volume de dados do usuário APFS; volumes Synology/Unraid (`/volume1`, `/mnt/user`) detectados antes da raiz; padrão de falso sucesso `df | tail -1 || …` corrigido com guardas `test -d`; saída do `lsb_release` sem aspas ao redor; múltiplos conjuntos de credenciais SSH/WinRM suportados (tenta cada um em ordem por host)

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

- **Servidor de Transferência de Arquivos** — novo módulo para iniciar/parar um servidor TFTP ou HTTP leve diretamente do aplicativo; caso de uso clássico: backup e restauração de configurações de roteador, switch ou impressora; um servidor ativo por vez (TFTP ou HTTP), porta e diretório raiz configuráveis, IPs locais exibidos como botões de copiar para a área de transferência; HTTP inclui listagem de diretório (navegue de qualquer navegador na LAN), GET (download) e POST/PUT (upload); TFTP suporta GET e PUT (bidirecional), a porta 69 requer root — o aplicativo mostra um botão "Iniciar como root (pkexec)" em caso de erro de permissão; tabela de log de transferências ao vivo (timestamp, nome do arquivo, IP do cliente, direção ↑/↓, tamanho); proteção contra travessia de porta; 8 idiomas de interface; nova dependência: `tftpy`

### v1.4.3 — 2026-06-14- **Correções da TLS Watchlist**: certificados autoassinados e não confiáveis agora são exibidos corretamente como "⚠ Invalid / untrusted cert" (laranja) em vez de verde; a captura de exceções SSL foi ampliada para cobrir todas as subclasses de `ssl.SSLError`; as entradas agora mostram "… (checking)" enquanto a verificação em segundo plano é executada e "— (unreachable)" quando o host não pode ser alcançado

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

- **TLS Watchlist** — lista persistente de hostnames para monitorar a expiração de certificados; adicione hosts com `+ Watch` (usa o host/porta atual) ou manualmente no painel; a verificação em segundo plano é executada automaticamente 2 segundos após a inicialização; a entrada "TLS Inspector" na barra lateral mostra um ponto colorido: vermelho se algum certificado estiver expirado, laranja se algum certificado expirar em até 30 dias; botão de reverificação no painel; a lista mostra o status por entrada (✓ / ⚠ / EXPIRED) com codificação por cores

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

- **macOS — IP Scanner**: corrigida a consulta de endereço MAC, fabricante e interface no macOS; `_arp_entry()` agora chama `arp -n <ip>` no macOS e analisa seu formato de saída (`? (IP) at AA:BB:CC on en0`) em vez de ler `/proc/net/arp` (exclusivo do Linux); todas as quatro colunas do scanner agora são preenchidas corretamente no macOS
- **Ajuda do VNC**: adicionada uma nota em todos os 8 idiomas esclarecendo que o Linux não possui servidor VNC por padrão e listando opções comuns para instalar (x11vnc, tigervnc-server, wayvnc)

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

- **macOS — IP Scanner**: substituído `getent` (exclusivo do Linux) por `socket.gethostbyaddr()` do Python para resolução reversa de DNS multiplataforma; a consulta de hostname agora funciona nativamente no macOS sem nenhuma ferramenta extra
- **macOS — SMB Browser**: alterado de `smbclient` (requer samba do Homebrew) para `smbutil view` (ferramenta nativa do macOS); a listagem de compartilhamentos SMB agora funciona no macOS sem nenhuma instalação
- **macOS — NFS Browser**: `showmount` é nativo no macOS, mas não suporta `--no-headers`; flag removida no macOS, linha de cabeçalho ignorada no parser; a listagem de exportações NFS agora funciona nativamente
- **macOS — RDP**: quando `xfreerdp` não é encontrado, recorre ao esquema de URL `open rdp://`; abre o Microsoft Remote Desktop (App Store) se instalado, com host, porta, usuário e domínio pré-preenchidos
- **macOS — VNC**: quando `vncviewer` não é encontrado, recorre ao esquema de URL `open vnc://`; abre o Compartilhamento de Tela do macOS (nativo, sem necessidade de instalação)

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

- **Encaminhamento de agente SSH** — nova caixa de seleção "Agent forwarding" no formulário de conexão SSH; adiciona `-A` ao comando `ssh`; permite saltar entre servidores sem copiar sua chave privada (PC → A → B); requer um agente SSH ativo (`SSH_AUTH_SOCK`); ajuda contextual atualizada em todos os 8 idiomas

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

- **Command Palette (Ctrl+P)** — navegação instantânea por teclado para qualquer um dos 27 módulos; busca difusa por nome e palavras-chave (ex.: "firewall", "tls", "ssh key", "scan"); setas para Cima/Baixo + Enter ou um único clique para navegar; abre com Ctrl+P de qualquer lugar do aplicativo
- **Export Manager** — exporta um snapshot completo da rede (interfaces, rotas, resolvedores DNS) em File → Export Network Report… em JSON, Markdown, texto simples ou PDF (opcional: `pip install reportlab`)
- **Botões de exportação em nível de módulo** — botões Export adicionados às páginas Interfaces, DNS, Firewall, SSH Connections e Connection Manager; cada página exporta seus dados atuais no formato escolhido com atualização ao vivo da extensão do nome do arquivo quando o filtro de formato muda

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

- **Topologia — ícones de dispositivos** — cada nó agora exibe um ícone SVG do Lucide correspondente ao seu tipo de dispositivo (roteador/wifi, computador/notebook, impressora, NAS/servidor, smartphone, switch de rede, Raspberry Pi) em vez de um círculo genérico; 5 novos ícones SVG incluídos (`printer`, `server`, `smartphone`, `cpu`, `laptop`)
- **Topologia — detecção mDNS** — o tipo de dispositivo é detectado via `avahi-browse` (opcional, executa em paralelo com a varredura nmap); identifica impressoras (`_ipp._tcp`, `PDL Printer`), telefones e TVs Android (`_googlecast._tcp`, `_androidtvremote2._tcp`), Macs Apple (modelo `am=Mac16,x` no TXT do AirPlay), dispositivos NAS (Synology reporta `model=Xserve`), desktops com KDE Connect; recorre ao OUI do fabricante do MAC e heurísticas de hostname quando o avahi não está disponível
- **Topologia — painel de detalhes** mostra a classe de dispositivo detectada (Printer, Smartphone, NAS…) em vez do rótulo genérico "Host"; i18n em todos os 8 idiomas
- **Traceroute — zoom automático** — o mapa-múndi automaticamente dá zoom e centraliza na caixa delimitadora dos hops geolocalizados ao final de cada rota; desativa quando o usuário faz pan ou zoom manualmente; restaura no próximo traceroute; clique com o botão direito redefine para a visão completa do mundo

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

- **Compatibilidade com macOS** — todos os 9 módulos de rede agora funcionam no macOS sem quebrar o comportamento no Linux; cada módulo detecta a plataforma na inicialização (`_IS_MACOS`) e ramifica para comandos nativos do macOS: `route -n get default`, `ifconfig`, `scutil --dns`, `networksetup`, `system_profiler SPAirPortDataType`, `pfctl`, `netstat -ib`; a escalação de privilégios usa `osascript` + `with administrator privileges` em vez de `pkexec`; a fonte monoespaçada usa `Menlo` em vez de `Monospace`
- **Módulos com caminhos duplos Linux/macOS**: Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall (pf.conf + pfctl), Connection Manager, Hosts File, MTR
- **Módulos inalterados** (ferramentas idênticas em ambas as plataformas): DNS, Nmap Scan, SNMP, Whois

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

- **i18n estendido para 8 idiomas** — adicionados Italiano, Português, 日本語 (Japonês) e 中文 (Chinês Simplificado); a interface completa (todos os 27 módulos, ~720 chaves de tradução) agora está disponível em FR / EN / ES / DE / IT / PT / JA / ZH; um aviso de reinicialização aparece após alterar o idioma em Settings
- **Ajuda contextual em 8 idiomas** — o painel do selo `?` (descrição, exemplos de uso e comandos CLI equivalentes) agora cobre todos os 8 idiomas para cada módulo; anteriormente JA e ZH recorriam ao inglês
- **Correção de bug** — as dicas de navegação para SMB/NFS e Hosts File estavam sendo exibidas em francês independentemente do idioma selecionado; chaves ausentes `nav_hint_smb_nfs` e `nav_hint_hosts` adicionadas a todos os 7 blocos de idiomas não franceses

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

- **SSH Key Manager** — lista todos os pares de chaves em `~/.ssh/` (arquivo, tipo, bits, comentário, impressão digital SHA256); gera chaves Ed25519 ou RSA 4096 com passphrase opcional (detecção de incompatibilidade, nome de arquivo automático por tipo); copia a chave pública para a área de transferência; implanta em um servidor remoto via `ssh-copy-id` em um terminal inline com suporte a stdin para prompts de senha; exclui pares de chaves com confirmação; cria automaticamente `~/.ssh/` se ausente; i18n: fr / en / es / de

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

- **TLS / SSL Inspector** — inspeciona o certificado de qualquer servidor: CN do assunto, SANs, emissor, datas de validade (codificadas por cores: verde / laranja < 30 dias / vermelho expirado), número de série, protocolo TLS, conjunto de cifras e cadeia de certificados (via `openssl s_client`); funciona para certificados válidos, expirados e autoassinados; mensagens de erro amigáveis para hosts inacessíveis
- **SMB / NFS Browser** — lista compartilhamentos e exportações de qualquer servidor; aba SMB: `smbclient -L` com credenciais opcionais, mostra nome / tipo / comentário do compartilhamento; aba NFS: `showmount -e`, mostra o caminho de exportação e a lista de acesso; detecta ferramentas ausentes com instruções de instalação específicas da distribuição
- **Hosts File Editor** — visualiza e edita `/etc/hosts`; tabela com alternância de ativar/desativar, adicionar/editar/excluir entradas via diálogo; filtra por IP ou hostname; salva via `pkexec cp` (diálogo de autenticação polkit)
- **install.sh** — novo script para Debian / Ubuntu / Linux Mint: cria um venv em `~/.local/share/nmlinux/venv`, instala dependências do sistema via apt, cria launcher e entrada `.desktop` (corrige o erro PEP 668 `externally-managed-environment`)

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

- **VNC** — novo módulo para gerenciar perfis de conexão VNC; grupos/subgrupos como SSH e RDP; inicia `vncviewer` (TigerVNC); compatível com macOS ARD (autenticação DH30 tratada nativamente pelo vncviewer); senha nunca armazenada; detecta `vncviewer` ausente com instruções de instalação específicas da distribuição

---

[Read more](https://github.com/thongor77/nmlinux)
Baixar ferramenta