sonnora@systems:~/projects/rscout$ cat README
rScout — todo dispositivo na rede, identificado.
Um scanner de rede em Rust que vai além de um ping sweep. O rScout correlaciona sinais de vários protocolos ao mesmo tempo para descobrir o que realmente está na sua rede — incluindo dispositivos que fazem questão de se esconder.
// o problema
A maioria dos scanners diz que um IP respondeu. Isso não é a mesma coisa que saber o que está lá.
Dispositivos modernos — especialmente celulares Android — randomizam seu endereço MAC, o que quebra a forma mais simples de distinguir um dispositivo de outro ao longo do tempo. Qualquer sinal isolado (uma porta aberta, um hostname, um prefixo MAC) é fácil de falsificar, perder ou interpretar errado sozinho.
O rScout trata a identificação de dispositivos como um problema de pontuação, não de consulta. Ele coleta vários sinais independentes por dispositivo e os processa através de um framework de pontuação de candidatos, para que um sinal fraco ou ausente em uma fonte não invalide toda a identificação.
// fontes de sinal
Quatro protocolos, validação cruzada
SSDP / UPnP
Lê anúncios de serviço divulgados por dispositivos — geralmente a forma mais rápida de identificar dispositivos domésticos inteligentes e de mídia no segmento.
mDNS / Bonjour
Captura transmissões locais de descoberta de serviços, um sinal forte para hardware Apple e muitos dispositivos IoT.
Consulta MAC OUI
Compara o prefixo do fabricante com faixas de fornecedores conhecidas — útil, mas tratado como uma dica, não como verdade absoluta, devido à randomização de MAC.
Hostname DHCP
Obtém o hostname que um dispositivo anuncia ao solicitar um endereço — geralmente o sinal mais legível dos quatro.
// interface
Uma TUI com painéis divididos, não uma parede de logs
A interface de terminal roda em um mecanismo de renderização personalizado com painéis de rolagem independente, acionados via crossterm. Um painel acompanha a descoberta ao vivo; o outro mantém o registro de execução do classificador.
// por baixo dos panos
Construído do jeito difícil, de propósito
Sinais brutos passam por um pipeline de classificação/enriquecimento antes de qualquer coisa chegar à interface — o enriquecimento adiciona contexto (fabricante, tipo de serviço, função provável), a classificação transforma isso em uma identidade de dispositivo com nível de confiança.
Uma passagem completa pelo código identificou e corrigiu ramos de classificação mortos, incompatibilidades de tipo de serviço mDNS, e bugs tanto no coletor mDNS/Bonjour quanto no enriquecedor SSDP — o tipo de trabalho de correção que não aparece em uma lista de funcionalidades, mas decide se os resultados podem ser confiáveis.
O buffer de terminal de tela alternativa tinha um bug de corrupção sob certas sequências de redimensionamento — localizado e corrigido no nível do mecanismo de renderização em vez de contornado na camada de interface.
// conecte-se
Curioso como o rScout pode se encaixar na sua rede?
Entre em contato sobre acesso, implantação, ou extensão para um cenário específico de dispositivos.