Una herramienta de escaneo de red basada en Python que proporciona capacidades completas de escaneo de puertos con características de seguridad e integración con base de datos.
- Escaneo de puertos de red utilizando Nmap
- Manejo seguro de puertos con listas blancas
- Protección especial para puertos críticos (SSH, RDP, etc.)
- Almacenamiento en base de datos del historial de escaneos
- Interfaz de línea de comandos con salida detallada
- Validación de entrada y manejo de errores
- Soporte para múltiples formatos de salida (texto, JSON)
- Comparación entre escaneos para detectar cambios
- Configuración personalizable
- Python 3.8 o superior
- Nmap (debe estar instalado en el sistema)
- Paquetes de Python listados en
requirements.txt
-
Clona el repositorio:
git clone https://github.com/nocturne-cybersecurity/Anomalisis.git cd Anomalisis -
Crea un entorno virtual
python3 -m venv .venv source .venv/bin/activate #En windows .\.venv\Scripts\activate
-
Instala los paquetes de Python requeridos:
pip install -r requirements.txt
-
Haz el script ejecutable:
chmod +x code.py
-
Crea un enlace simbólico en tu directorio bin local:
ln -s $(pwd)/code.py ~/.local/bin/anomalisis
-
Asegúrate de que
~/.local/binesté en tu PATH. Si es necesario, añade esto a tu~/.bashrco~/.zshrc:export PATH="$HOME/.local/bin:$PATH" source ~/.bashrc # o ~/.zshrc
-
Haz el script ejecutable:
chmod +x ~/.local/bin/anomalisis
Una vez configurado, puedes ejecutar el escáner simplemente escribiendo:
anomalisisanomalisis [OBJETIVO] [OPCIONES]| Opción | Descripción | Ejemplo |
|---|---|---|
OBJETIVO |
Dirección IP o nombre de host a escanear (argumento posicional) | anomalisis 192.168.1.1 |
-p, --ports PUERTOS |
Puertos a escanear (rangos o separados por comas) | -p 22,80,443 o -p 1-1024 |
-o, --output FORMATO |
Formato de salida (texto/json) | -o json |
-v, --verbose |
Mostrar salida detallada | -v |
| Opción | Descripción | Ejemplo |
|---|---|---|
-d, --database |
Mostrar historial de todos los escaneos | anomalisis -d |
--show-scan ID |
Mostrar detalles de un escaneo específico | --show-scan 1 |
--db-path RUTA |
Especificar ruta personalizada para la base de datos | --db-path ruta/personalizada/bd.sqlite |
| Opción | Descripción | Ejemplo |
|---|---|---|
--compare ID1 ID2 |
Comparar dos escaneos por sus IDs | --compare 1 2 |
| Opción | Descripción | Ejemplo |
|---|---|---|
--version |
Mostrar versión y salir | --version |
-h, --help |
Mostrar mensaje de ayuda y salir | -h |
-
Escaneo básico:
anomalisis 192.168.1.1
-
Escanear puertos específicos con salida detallada:
anomalisis 192.168.1.1 -p 22,80,443 -v
-
Escanear un rango de puertos y guardar como JSON:
anomalisis 192.168.1.1 -p 1-1024 -o json
-
Listar todos los escaneos en la base de datos:
anomalisis -d
-
Mostrar detalles de un escaneo específico:
anomalisis --show-scan 1
-
Comparar dos escaneos:
anomalisis --compare 1 2
-
Usar una ubicación personalizada para la base de datos:
anomalisis --db-path /ruta/personalizada/escaneos.db -d
src/core/- Funcionalidad principal del escánerscanner.py- Clase principal del escánerdatabase.py- Operaciones con la base de datos
config/- Archivos de configuraciónsettings.py- Configuración de la aplicaciónsecurity.py- Configuraciones de seguridad
utils/- Funciones de utilidadnetwork.py- Utilidades de red
start.py- Punto de entrada principalrequirements.txt- Dependencias de PythonREADME.md- Este archivo de documentación
- El sistema incluye protección para puertos críticos
- Todas las entradas son validadas
- Las operaciones de base de datos usan consultas parametrizadas para prevenir inyección SQL
- Las operaciones sensibles requieren confirmación
- Se recomienda ejecutar el escáner con privilegios mínimos necesarios
- Los resultados pueden contener información sensible: asegúrate de manejarlos de forma segura
[Especifica tu licencia aquí]
Las contribuciones son bienvenidas. Por favor, crea un "pull request" con tus mejoras propuestas.
- Haz un "fork" del proyecto
- Crea una rama para tu característica (
git checkout -b caracteristica/nueva) - Haz commit de tus cambios (
git commit -am 'Añade nueva característica') - Haz push a la rama (
git push origin caracteristica/nueva) - Abre un "pull request"
Si encuentras algún problema o tienes sugerencias, por favor abre un "issue" en el repositorio.
Este proyecto está en desarrollo. Hecho por Nocturne
