sonnora@systems:~/projects/rscout$ cat README
Un escáner de red en Rust que va más allá de un barrido de ping. rScout correlaciona señales de varios protocolos a la vez para determinar qué hay realmente en tu red — incluyendo dispositivos que hacen todo lo posible por ocultarse.
// el problema
Los dispositivos modernos — especialmente los Android — aleatorizan su dirección MAC, lo que rompe la forma más simple de distinguir un dispositivo de otro a lo largo del tiempo. Cualquier señal única (un puerto abierto, un hostname, un prefijo MAC) es fácil de falsificar, omitir o malinterpretar por sí sola.
rScout trata la identificación de dispositivos como un problema de puntuación, no de búsqueda. Reúne varias señales independientes por dispositivo y las procesa mediante un marco de puntuación de candidatos, para que una señal débil o ausente en una fuente no arruine la identificación completa.
// fuentes de señal
Lee anuncios de servicios publicitados por dispositivos — a menudo la forma más rápida de detectar dispositivos domóticos y multimedia en el segmento.
Capta transmisiones locales de descubrimiento de servicios, una señal fuerte para hardware de Apple y muchos dispositivos IoT.
Compara el prefijo del fabricante con rangos de proveedores conocidos — útil, pero tratado como una pista en lugar de verdad absoluta dada la aleatorización de MAC.
Obtiene el nombre de host que un dispositivo anuncia al solicitar una dirección — a menudo la señal más legible de las cuatro.
// interfaz
La interfaz de terminal funciona con un motor de renderizado personalizado con paneles desplazables independientemente, impulsado por crossterm. Un panel rastrea el descubrimiento en vivo; el otro muestra el registro del clasificador.
// bajo el capó
Las señales crudas pasan por un pipeline de clasificador/enriquecedor antes de llegar a la interfaz — el enriquecimiento añade contexto (fabricante, tipo de servicio, rol probable), la clasificación lo convierte en una identidad de dispositivo con un nivel de confianza.
Una revisión completa del código encontró y corrigió ramas de clasificación muertas, discrepancias en tipos de servicio mDNS y errores tanto en el colector mDNS/Bonjour como en el enriquecedor SSDP — el tipo de trabajo de corrección que no aparece en una lista de funciones pero que determina si los resultados son confiables.
El búfer de pantalla alterna de la terminal tenía un error de corrupción bajo ciertas secuencias de redimensionamiento — localizado y corregido a nivel del motor de renderizado en lugar de parcheado en la capa de interfaz.
// conectar
Contáctanos para obtener acceso, implementación o extenderlo para un panorama de dispositivos específico.