Files
JNC-Scan-Windows/README.md
T
2026-05-11 08:07:02 +02:00

8.8 KiB

JNC-NetTools // Versión ADA - Documentación Técnica

Enlace publico de descarga: https://nube.kiracloud.es/s/Tk9M4yBxSxmLwK9

1. Introducción

JNC-NetTools es una suite integral de diagnóstico y gestión de redes diseñada para sistemas Linux. Proporciona una interfaz gráfica de usuario (GUI) para tareas de red avanzadas que normalmente requieren interacciones complejas en la línea de comandos.

Capacidades Clave

  • Gestión de Interfaces de Red (IP, Subred, Puerta de Enlace)
  • Bridging Avanzado (Trunks VLAN, Passthrough, Wi-Fi a Ethernet)
  • Escaneo de Redes y Puertos (Integración con Nmap)
  • Análisis de Tráfico y Sniffing de Paquetes (Integración con Scapy)
  • Diagnóstico de Red (Ping, Traceroute, DNS)
  • Generación Automatizada de Informes (HTML)

2. Requisitos del Sistema

Sistema Operativo

  • Linux (Probado en Linux Mint / Ubuntu / Debian)
  • Privilegios de Root: Requeridos para la mayoría de las operaciones (manipulación de interfaces, escaneo de sockets raw, sniffing)

Dependencias de Software

Herramientas del Sistema

Herramienta Descripción Obligatoria
iproute2 Comando ip Sí
nmap Mapeador de redes Sí
tcpdump Captura de paquetes Sí
dnsmasq Servidor DHCP Sí
hostapd Punto de acceso Wi-Fi Sí
iw Configuración inalámbrica Sí
ethtool Estadísticas de interfaz Opcional

Bibliotecas de Python

Biblioteca Uso Principal
PyQt6 Framework GUI
python-nmap Wrapper de Nmap
scapy Manipulación y sniffing de paquetes
psutil Monitoreo del sistema
pyroute2 Redes avanzadas en Linux (Netlink)
  • Python: 3.8 o superior

3. Instalación y Ejecución

Instalación

# 1. Clonar el repositorio
git clone https://github.com/inlutec/JNC-NetTools.git
cd JNC-NetTools

# 2. Instalar dependencias del sistema
sudo apt update
sudo apt install python3-pip nmap tcpdump dnsmasq hostapd iw

# 3. Configurar entorno virtual
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Si no existe requirements.txt, instalar manualmente:
# pip install PyQt6 python-nmap scapy psutil pyroute2

Ejecución

bash JNC-Scan_Launcher.sh

Nota: El launcher gestiona automáticamente la activación del entorno virtual y los privilegios de root (se solicitará la contraseña sudo).

Windows 10 / 11

La aplicación puede ejecutarse en Windows con las siguientes funcionalidades:

  • Lista de interfaces (psutil + netsh)
  • Detección de VLANs en un trunk (Scapy + Npcap)
  • Exploración de red y Escáner de puertos (Nmap)
  • Sniffer de tráfico (Scapy + Npcap)
  • Diagnóstico (ping, tracert, nslookup)
  • Monitor de red (tráfico por interfaz)
  • Comprobación VLAN35 e Informe HTML

No disponibles en Windows: Configuración IP desde la app, VLAN/Puente (bridges), Routing avanzado, firewall iptables.

Instalación en Windows (un solo instalador)

  1. Generar el ejecutable (en Windows, con Python instalado):

    pip install -r requirements-win.txt pyinstaller
    build_windows.bat
    

    Se genera dist\JNC-NetTools.exe.

  2. Crear el instalador completo (incluye Npcap y Nmap para no descargar nada aparte):

    • Instalar Inno Setup.
    • Copiar en installer\extras\:
    • Compilar installer\installer.iss con Inno Setup.
    • El instalador resultante instalará la app, Npcap y Nmap automáticamente.
  3. Requisitos: Ejecutar como Administrador para Sniffer y Detección VLAN (Npcap).

4. Arquitectura Técnica

La aplicación sigue una arquitectura modular que separa claramente la lógica del núcleo (backend) de la interfaz gráfica (frontend).

Estructura de Directorios

JNC-NetTools/
├── main.py                     # Punto de entrada principal
├── JNC-Scan_Launcher.sh        # Script de lanzamiento con sudo
├── requirements.txt            # Dependencias Python (si existe)
├── src/
│   ├── core/                   # Lógica Backend
│   │   ├── network_manager.py  # Gestión de interfaces, bridges, DHCP, Wi-Fi AP
│   │   ├── scanner.py          # Escáner de red y puertos (Nmap)
│   │   ├── sniffer.py          # Sniffer con Scapy
│   │   ├── vlan_scanner.py     # Detección pasiva de VLANs (tcpdump)
│   │   └── diagnostics.py      # Ping, traceroute, DNS lookup
│   ├── gui/                    # Frontend PyQt6
│   │   ├── main_window.py      # Ventana principal y pestañas
│   │   ├── styles.py           # Hojas de estilo QSS
│   │   └── widgets/            # Widgets por funcionalidad
│   │       ├── ip_config.py
│   │       ├── vlan_bridge.py
│   │       ├── scanner_view.py
│   │       ├── port_scanner.py
│   │       ├── sniffer_view.py
│   │       └── diagnostics_view.py
│   └── utils/
│       └── report_generator.py # Generación de informes HTML

5. Funcionalidades Detalladas e Implementación Técnica

A. Configuración IP

  • Uso de psutil + pyroute2 para lectura
  • Aplicación persistente mediante nmcli (NetworkManager)
  • Refresco en tiempo real de interfaces

B. VLAN y Bridging Avanzado

  • Creación de VLANs: ip link add link <dev> name <dev.id> type vlan id <id>
  • Bridges: ip link add name <br> type bridge
  • Servidor DHCP integrado con dnsmasq
  • AP Wi-Fi con hostapd + configuración dinámica
  • Soporte automático para modo 4addr (WDS) en interfaces Wi-Fi cliente
  • Escáner pasivo de VLANs mediante tcpdump -e + regex 802.1Q

C. Escáner de Red (Host Discovery)

  • Motor: Nmap
  • Prioriza escaneo ARP en redes locales
  • Soporte completo para detener escaneo en ejecución
  • Filtros en tiempo real (Up/Down)

D. Escáner de Puertos

  • Modos: TCP Connect (-sT), UDP (-sU), o ambos
  • Optimizado con --min-rate 1000 -T4
  • Oculta automáticamente puertos cerrados en rangos grandes (>500)
  • Ejecutado en QThread para mantener GUI receptiva

E. Sniffer de Paquetes

  • Motor: scapy.sniff
  • Soporte completo para filtros BPF
  • Decodificación de capas Ethernet/IP/TCP/UDP/ICMP
  • Detección automática de anomalías (RST, ICMP Unreachable, retransmisiones)
  • Vista separada de "Todo el tráfico" vs "Solo anomalías"

F. Diagnósticos

  • Wrappers con análisis de salida para: ping, traceroute, nslookup

G. Generación de Informes

  • Informe HTML completo con todos los resultados de la sesión
  • Estilizado y con timestamps

6. Guía para Desarrolladores

Añadir una nueva pestaña

  1. Crear widget en src/gui/widgets/nueva_herramienta.py
  2. Heredar de QWidget
  3. Importar en src/gui/main_window.py
  4. Añadir: self.tabs.addTab(NuevaHerramienta(), "Nueva Herramienta")

Modificar escaneos Nmap

  • Editar src/core/scanner.py → método scan()
  • Añadir flags como -O (detección SO) o -sV (versiones)

Personalizar el sniffer

  • Editar src/core/sniffer.py → función process_packet
  • Añadir detección de payloads específicos (HTTP, malware, etc.)

Cambiar estilos

  • Editar src/gui/styles.py (QSS)

7. Solución de Problemas Comunes

Problema Causa más común Solución
"Operation not supported" (Error 95) Wi-Fi no soporta modo 4addr/WDS Usar tarjeta compatible o modo "Wi-Fi AP" en lugar de puente cliente
iw: command not found Herramienta iw no instalada sudo apt install iw
Sin resultados en escaneos No ejecutado como root o firewall bloqueando Usar el launcher oficial / desactivar temporalmente ufw
UI se congela en sniffer Volumen de tráfico muy alto Aplicar filtro BPF estricto (ej. tcp port 80)