Português · English · Site e demo interativa
Descobre quem está ligado à tua rede local, identifica cada dispositivo e avisa-te quando aparece alguém novo.
Aplicação para Windows feita em C# / .NET 9, com interface em Avalonia. Analisa a tua LAN e mostra cada dispositivo com IP, MAC, fabricante, hostname, tipo, sistema operativo provável, serviços expostos e vulnerabilidades conhecidas. Guarda o histórico de quem entrou e saiu da rede.
Estado: em desenvolvimento ativo.
| Detalhes de um dispositivo | Conhecer os teus dispositivos | Segurança |
|---|---|---|
![]() |
![]() |
![]() |
Capturas do modo demonstração: rede fictícia, CVEs reais da NVD.
- Escura e translúcida (Acrylic/Mica no Windows 11), com barra lateral e quatro vistas: Dispositivos, Segurança, Histórico e Monitorizados.
- Lista de dispositivos com ícone e cor por tipo, selos (Router, Este PC, Novo), portas abertas e vulnerabilidades. Tem pesquisa por nome, IP, MAC ou fabricante.
- Filtros por cima da lista, com contagem: por tipo (computadores, telemóveis e tablets, TV, rede, impressoras, casa inteligente…) e por estado (com vulnerabilidades, monitorizados, novos, offline). Só aparecem os que existem na rede e combinam com a pesquisa.
- Painel de detalhes com a informação do dispositivo, os serviços e o estado da verificação de cada um, as vulnerabilidades (CVSS, exploração ativa, ligação à NVD) e a atividade.
- Opções de análise num painel próprio. As preferências ficam guardadas.
- Avisos discretos dentro da app, sem caixas de diálogo a interromper e sem roubar o foco.
- Português e inglês: segue o idioma do Windows ou escolhe-se nas opções. Muda na hora, sem reiniciar, e aplica-se também às notificações e aos relatórios.
- Deteção automática da rede local: interface, IP, máscara, gateway e intervalo da sub-rede. Ignora adaptadores virtuais (VPN, Hyper-V, VirtualBox…).
- Descoberta por ARP em toda a sub-rede: o Windows resolve todos os endereços em paralelo e o Nodar lê a tabela de vizinhos (
GetIpNetTable2). Uma rede /23 (510 endereços) demora cerca de 3 s, sem privilégios de administrador. - Não depende de ping: iPhones bloqueados, Macs com firewall, impressoras e muitos aparelhos IoT ignoram ping, mas respondem sempre a ARP.
- Redes até 1024 endereços são sempre varridas por inteiro; Sub-rede completa alarga o varrimento a redes maiores.
- Nome por DNS reverso (o nome que o router atribui) e por Bonjour/mDNS: Macs, iPhones, iPads, Apple TV, Chromecast e impressoras anunciam o nome ("MacBook Pro da Ana") e o modelo.
- SSDP/UPnP: Smart TVs, boxes, consolas e routers publicam o nome, o fabricante e o modelo (por exemplo, o modelo exato do router). NetBIOS: nome de PCs Windows e NAS.
- Fabricante pelo registo oficial do IEEE (cerca de 40 000 fabricantes), descarregado e guardado em cache. Dispositivos com endereço Wi-Fi privado (MAC aleatório) aparecem como tal e são identificados por Bonjour.
- Tipo de dispositivo pelo modelo, pelo fabricante e pelo hostname: router, computador, telemóvel, TV, impressora, consola, câmara, casa inteligente, servidor…
- Dispositivos atrás de um repetidor Wi-Fi que partilha o mesmo MAC continuam separados (identificados por MAC+IP).
- Marca o dispositivo que corresponde a este PC.
- Scan de portas às portas TCP mais comuns, incluindo as típicas de routers (TR-069, UPnP). O router também é analisado.
- Deteção de serviços por leitura de banners, incluindo HTTPS (TLS) e a versão do servidor DNS (
version.bind). As sondas nunca enviam credenciais nem tentativas de login. - Deteção de sistema operativo por fingerprint TCP/IP (TTL, window size, MSS, flag DF), com nível de confiança.
- Verificação de vulnerabilidades conhecidas com dados oficiais da NVD (NIST) e do catálogo CISA KEV. Ver Como funciona a verificação de vulnerabilidades.
- Certificados e TLS: nos serviços TLS (HTTPS, IMAPS…) lê o certificado e o protocolo, e assinala certificados expirados ou a expirar, chaves e assinaturas fracas, protocolos antigos que o servidor ainda aceita (SSL 3.0, TLS 1.0 e 1.1) e o mesmo certificado autoassinado de fábrica em vários dispositivos. Um certificado autoassinado, sozinho, não é assinalado: é o normal em routers e IoT.
- Portas abertas pelo router (UPnP): pergunta ao router, com consultas anónimas e só de leitura, que portas abriu para a internet, para que dispositivo e desde quando. Destaca o acesso remoto, a partilha de ficheiros, as bases de dados e as câmaras expostos, e avisa quando aparece uma porta nova (as temporárias de jogos e chamadas só avisam dentro da app). Pode ser desligado nas Opções.
- O que a internet vê: a pedido (botão na página Segurança), consulta o Shodan InternetDB para mostrar as portas abertas e os CVEs que a internet associa ao teu endereço público, e quais dessas portas o router abriu por UPnP. Nunca corre sozinha. Ver Privacidade e rede.
- Histórico persistente de cada dispositivo: quando foi visto pela primeira vez e quando entrou e saiu da rede. Os dispositivos são identificados pelo MAC, por isso uma mudança de IP por DHCP não cria um dispositivo "novo".
- Dispositivos novos: aviso quando aparece um dispositivo que nunca tinha sido visto. O primeiro scan conta como linha de base.
- Os teus dispositivos: no painel de cada dispositivo marcas É meu ou Não reconheço e podes dar-lhe um nome e uma nota. Há um convite para marcares todos como conhecidos de uma vez. A partir daí o Nodar avisa só dos desconhecidos que entram ou voltam à rede, e dos que marcaste como Não reconheço sempre que aparecem. Os conhecidos nunca geram este aviso. A lista ganha os filtros Por rever e Suspeitos, e a pesquisa encontra também o texto das notas. Quem usa endereço Wi-Fi privado (iPhone, Android) pode mudar de MAC por rede e voltar a aparecer por rever.
- MAC do router: guarda o MAC com que o router responde e avisa se mudar. Sozinha, a mudança é um sinal fraco (trocaste de router, ou estás noutra rede com o mesmo endereço, e podes aceitar o MAC). Se outro dispositivo da rede tiver exatamente esse MAC, o alerta é forte: é o rasto típico de ARP spoofing, alguém a fazer-se passar pelo router.
- Monitorizados: tocas na estrela de um dispositivo e recebes um aviso quando ele entra ou sai. Para evitar falsos alarmes com telemóveis em repouso, um dispositivo só é dado como saído depois de falhar dois scans seguidos.
- Atualização automática com intervalo configurável (1 a 15 minutos).
- Notificações do Windows (central de notificações) quando a janela não está à vista: dispositivo novo (vários agrupados numa só notificação), e entrada ou saída de um monitorizado. Clicar na notificação abre o Nodar.
- Segundo plano: fechar a janela deixa o Nodar na bandeja a vigiar a rede (menu do ícone: Abrir, Analisar agora, Sair). Opcionalmente, inicia com o Windows já minimizado.
- Uma só instância: abrir o Nodar outra vez traz a janela existente para a frente.
- Opção para mostrar ou esconder dispositivos offline.
- Exportação da lista de dispositivos para CSV.
- Relatório de auditoria em HTML, JSON ou Markdown.
O código destas partes já existe em Nodar.Core, mas ainda não está ligado à interface nem ao scan:
- Scanner de portas avançado (modos SYN / FIN / XMAS / NULL / ACK)
- Traceroute com análise de rota
- Perfis de velocidade do scan (de Paranoid a Insane)
- Windows 10 ou 11 (x64)
- Para compilar: .NET 9 SDK
- Recomendado: executar como Administrador. Sem permissões elevadas, a descoberta ARP e algumas análises dão resultados incompletos (a app avisa quando é o caso).
Descarrega o .exe da página de Releases. É um ficheiro único que não precisa de .NET instalado. Executa-o, de preferência como Administrador.
git clone <url-do-repositório>
cd <pasta-do-repositório>
dotnet run --project src/Nodar.AppTambém podes usar o run.bat.
build.batGera um executável único e self-contained em dist/Nodar.exe. O Abrir Nodar.bat abre-o e, se ainda não existir, gera-o primeiro.
dist\Nodar.exe --demoMostra uma rede fictícia com serviços desatualizados, para veres a interface com vulnerabilidades sem precisares de uma rede vulnerável. Os dispositivos são inventados, mas os serviços são verificados na NVD real, por isso os CVEs são verdadeiros para essas versões. Usa uma pasta temporária e não mexe no teu histórico.
Para regenerar os screenshots do README (renderizados fora do ecrã, sem mostrar nada do teu ambiente de trabalho):
dotnet run --project tools/Screenshots -- docs/screenshots --demo --lang pt
dotnet run --project tools/Screenshots -- docs/screenshots/en --demo --lang endotnet testAtiva Analisar portas, Serviços e Vulnerabilidades. Para cada serviço com banner, o Nodar faz isto:
- Identifica o produto e a versão a partir do banner. Por exemplo,
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10dá OpenSSH 8.9p1, pacote Ubuntu. A versão nunca é adivinhada: sem versão no banner, o serviço fica marcado como versão desconhecida. - Descarrega da NVD os CVEs desse produto e compara localmente as regras de versão afetada (intervalos e versões exatas). A comparação percebe formatos reais como
8.2p1,1.3.5eou1.0rc1. - Marca os CVEs com exploração ativa confirmada, com base no catálogo CISA KEV, incluindo os que foram usados em ransomware.
Cada serviço mostra o estado da verificação: verificado, verificado com cache antiga, versão desconhecida, produto não suportado ou NVD inacessível. Um serviço que não foi verificado nunca aparece como "sem vulnerabilidades".
Produtos suportados: OpenSSH, Dropbear, Apache HTTP Server, nginx, Microsoft IIS, lighttpd, Jetty, vsftpd, ProFTPD, FileZilla Server, Exim, MySQL, MariaDB, Redis, e também os comuns em routers: dnsmasq (incluindo Pi-hole), Unbound, ISC BIND, MiniUPnPd e libupnp (a pilha UPnP de muitos routers, lida no anúncio SSDP).
Importante: os resultados são potenciais.
- Uma correspondência por versão não prova que a falha existe. Configuração, módulos ativos e plataforma podem mudar o resultado.
- Distribuições como Ubuntu, Debian e RHEL aplicam correções sem mudar o número de versão ("backports"). O Nodar avisa quando deteta um pacote de distribuição. Nesses casos, confirma no próprio sistema.
- Para a NVD só é enviado o identificador do produto (ex.:
cpe:2.3:a:openbsd:openssh). Não são enviados IPs, MACs, hostnames nem as versões detetadas. A comparação de versões é feita no teu PC. - O catálogo KEV é descarregado inteiro, sem nenhum dado teu.
- Para identificar fabricantes, o Nodar descarrega o registo público do IEEE (
standards-oui.ieee.org) uma vez por mês. Nenhum dado teu é enviado. - As perguntas ARP, Bonjour/mDNS, SSDP e NetBIOS ficam só na tua rede local. O descritor UPnP só é lido do próprio dispositivo que o anunciou, por HTTP na rede local, com limites de tamanho e tempo e sem processar DTD (proteção contra XXE).
- A inspeção de TLS fica na rede local: um handshake sem validar a cadeia e sem enviar dados, mais três
ClientHello(SSL 3.0, TLS 1.0 e 1.1) só para ver se o servidor responde, sem troca de chaves. Faz parte da opção Serviços e versões. - A leitura UPnP do router (portas abertas e endereço externo) é uma consulta anónima e só de leitura ao próprio router, na rede local: só se fala com o IP do router, nunca se altera nada e não há credenciais. Pode ser desligada nas Opções.
- "O que a internet vê" só corre quando carregas no botão, e é a única função que envia algo para fora do PC: o teu endereço público, ao Shodan InternetDB (gratuito, sem conta). O endereço vem do próprio router; se ele não o disser, pergunta-se também a
api.ipify.org. Se o endereço do router não for público (CGNAT ou duplo NAT), não se consulta nada. Os dados do Shodan são da última vez que ele passou pelo teu endereço e podem ter dias. - Os nomes, as notas e o estado de cada dispositivo (É meu, Não reconheço) ficam só em
%LOCALAPPDATA%\Nodar\known-devices.json, no teu PC. Nunca são enviados para fora, nem entram nos relatórios exportados, e não fazem parte do repositório. - Os dados ficam em cache em
%LOCALAPPDATA%\Nodar\cache\: a NVD durante 3 dias e o KEV durante 1. Sem internet, é usada a cache existente e a app avisa.
Sem chave, a NVD limita a 5 pedidos por 30 segundos, e a primeira consulta de cada produto demora alguns segundos. Com uma chave gratuita, o limite passa para 50. Para a definir, usa uma destas opções:
- variável de ambiente
NVD_API_KEY; ou - ficheiro
%LOCALAPPDATA%\Nodar\settings.jsoncom{ "nvdApiKey": "a-tua-chave" }.
src/Nodar.App/ # Interface (Avalonia, MVVM)
├── Views/MainWindow.axaml # Janela principal e as quatro vistas
├── ViewModels/ # Estado e comandos da interface
│ ├── MainViewModel.cs # Scan, lista de dispositivos, filtros e navegação
│ ├── SettingsViewModel.cs # Preferências (opções de scan, segundo plano, idioma)
│ ├── Security/History/WatchlistViewModel.cs # Vistas Segurança, Histórico e Monitorizados
│ ├── DeviceReviewViewModel.cs # É meu / não reconheço, nome e nota de cada dispositivo
│ ├── ExposureViewModel.cs # Portas abertas pelo router, MAC do router, o que a internet vê
│ └── ToastHost.cs # Avisos dentro da app
├── Localization/TExtension.cs # Extensão {l:T chave} para textos traduzidos
├── Styles/ # Tema (cores, sombras), estilos dos controlos e ícones
└── Services/ # Bandeja e notificações, instância única, arranque com o Windows, demonstração
src/Nodar.Core/ # Lógica, sem interface gráfica
├── Models/NetworkModels.cs # Modelos (dispositivo, rede, histórico, scan)
├── Localization/ # Traduções: pt.json, en.json (mesmas chaves, verificado nos testes)
├── Monitoring/DeviceTracker.cs # Histórico, dispositivos novos e monitorizados
├── Monitoring/KnownDevices.cs # Conhecidos, suspeitos, nomes e notas (só neste PC)
├── Monitoring/GatewayGuard.cs # MAC do router: deteta mudanças e ARP spoofing
├── Monitoring/PortMappingTracker.cs # Portas abertas pelo router: o que é novo e desde quando
├── Settings/AppSettings.cs # Preferências
└── Services/
├── NetworkDiscoveryService.cs # Orquestração do scan (em paralelo)
├── NeighborDiscovery.cs # Descoberta ARP (tabela de vizinhos do Windows)
├── MdnsProbe.cs # Bonjour/mDNS: nome e modelo
├── SsdpProbe.cs # SSDP/UPnP: nome, fabricante, modelo, pilha UPnP
├── TlsInspector.cs / TlsAnalyzer.cs # Certificado, protocolo e protocolos antigos; problemas daí
├── UpnpGatewayClient.cs # Portas que o router abriu (UPnP IGD, só leitura)
├── InternetExposureService.cs # O que a internet vê do endereço público (Shodan InternetDB)
├── ExposureAdvice.cs # Serviços sensíveis e quando uma porta merece notificação
├── NetBiosProbe.cs # Nome NetBIOS (PCs Windows, NAS)
├── DeviceIdentification.cs # Modelo → família e tipo (Mac14,7 → Mac)
├── OuiRegistry.cs # Registo de fabricantes do IEEE
├── VendorService.cs # Fabricante e tipo de dispositivo
├── OSFingerprintService.cs # Fingerprint de sistema operativo
├── OSFingerprintDatabase.cs # Assinaturas de SO
├── ServiceDetectionService.cs # Leitura de banners (TCP e TLS, com timeouts)
├── DnsVersionProbe.cs # Versão do servidor DNS (version.bind)
├── Vulnerabilities/
│ ├── BannerParser.cs # Produto e versão a partir do banner
│ ├── ProductCatalog.cs # Produtos suportados e identificadores CPE
│ ├── VersionComparer.cs # Comparação de versões (8.2p1, 1.3.5e, 1.0rc1…)
│ ├── CpeMatcher.cs # Regras de versão afetada da NVD
│ ├── NvdParser.cs / NvdClient.cs # NVD CVE API 2.0
│ ├── KevClient.cs # Catálogo CISA KEV
│ ├── VulnerabilityCache.cs # Cache local
│ └── VulnerabilityService.cs # Orquestração e estado de cada verificação
├── AuditReportService.cs # Relatórios HTML / JSON / Markdown
├── ExportService.cs # Exportação CSV
├── AdvancedPortScanner.cs # (em desenvolvimento)
├── TracerouteService.cs # (em desenvolvimento)
└── TimingTemplates.cs # (em desenvolvimento)
tests/Nodar.Tests/ # Testes (xUnit), com respostas reais da NVD como fixtures
tests/Nodar.App.Tests/ # Testes da interface (Avalonia headless, dados isolados)
tools/IconGenerator/ # Gera o ícone da app
tools/Screenshots/ # Gera os screenshots do README (headless, modo demonstração)
docs/screenshots/ # Screenshots do README
website/ # Site de apresentação com demo interativa (Angular), ver website/README.md
Os dados locais (histórico, lista de monitorização, dispositivos conhecidos com os nomes e notas que escreveste, MAC do router, portas abertas conhecidas, preferências e cache de vulnerabilidades) ficam em %LOCALAPPDATA%\Nodar\.
- Só analisa a rede local onde o PC está ligado.
- Dispositivos em repouso profundo ou desligados do Wi-Fi podem falhar um scan. Para não gerar alarmes falsos, só são dados como "saídos" depois de falharem dois scans seguidos.
- iPhones e Androids podem trocar o endereço Wi-Fi privado (por exemplo, com "endereço rotativo" no iOS 18). Quando isso acontece, aparecem como um dispositivo novo.
- A deteção de SO é heurística e pode falhar, sobretudo com dispositivos IoT.
- A verificação de vulnerabilidades depende do banner. Muitos dispositivos (routers, câmaras, IoT) não anunciam versão. Uma correspondência por versão não confirma que o dispositivo está vulnerável. Não substitui uma auditoria de segurança a sério.
- A deteção de protocolos TLS antigos só diz o que o servidor aceita: se não aparecer nada, não prova que os recusa (um servidor que não responde a tempo conta como "não aceita"). Só se inspecionam as portas 443, 8443, 993 e 995.
- As descrições dos CVEs vêm da NVD, em inglês.
- Os avisos dependem da atualização automática: com ela desligada, o Nodar na bandeja não volta a analisar a rede sozinho.
- Base de vulnerabilidades com dados oficiais (NVD / CISA KEV) em vez de uma lista estática
- Ler banners HTTPS/TLS e incluir o gateway na análise
- Identificar o modelo do router por UPnP/SSDP
- Versão do firmware do router (páginas de administração, TR-069)
- Ligar à interface o scanner avançado, o traceroute e os perfis de timing
- Interface moderna (Avalonia) e lógica separada em
Nodar.Core - Notificações do Windows e monitorização em segundo plano (bandeja do sistema)
- Portas abertas pelo router (UPnP), alerta de MAC do router e "o que a internet vê" (Shodan)
- Nomes, notas e "dispositivos de confiança" (conhecidos, suspeitos, por rever)
- Identificação por Bonjour/mDNS e registo de fabricantes do IEEE
- Identificação por SSDP/UPnP e NetBIOS
- Ícone da aplicação
- Screenshots no README
- Interface, notificações e relatórios em português e inglês
- Mais testes da interface (já há testes headless da troca de idioma; o Core tem quase 300)
Esta ferramenta é para redes que são tuas ou que tens autorização explícita para analisar. Fazer scan de portas e vulnerabilidades em redes de terceiros sem permissão pode ser ilegal no teu país. O autor não se responsabiliza pelo uso indevido.
- Este produto usa dados da API da NVD (NIST), mas não é endossado nem certificado pela NVD.
- O catálogo de vulnerabilidades exploradas é da CISA (KEV).
- Os fabricantes vêm do registo público do IEEE.
- Os resultados de "O que a internet vê" vêm do Shodan InternetDB, e o endereço público pode ser obtido em
api.ipify.org.
MIT © 2026 Malog




