
Una GUI alojada localmente para la suite de auditoría inalámbrica aircrack-ng.
Una interfaz web local para el conjunto de herramientas inalámbricas aircrack-ng.
Capturas · Inicio rápido · Características · Hoja de ruta · Contribuir
[!WARNING] Úsalo solo en redes de tu propiedad o para las que tengas permiso por escrito para hacer pruebas. Escanear, desautenticar o capturar tráfico de redes que no controlas es ilegal en la mayoría de los lugares. Consulta Uso legal y responsable.
AirmonGUI pone airmon-ng, airodump-ng, aireplay-ng y aircrack-ng detrás de una aplicación web que se ejecuta en tu propia máquina. Activas el modo monitor, escaneas redes, capturas un handshake WPA y lo descifras haciendo clic en formularios etiquetados en lugar de recordar flags.
No reimplementa ninguna de las herramientas. El backend invoca los binarios reales y analiza su salida, así que lo que ves es lo que la suite hizo realmente. La interfaz se vincula a 127.0.0.1 y la API nunca sale de tu máquina.
La suite aircrack-ng es excelente, pero el flujo de trabajo se reparte en cuatro comandos separados y muchos flags que tienes que mantener en la cabeza: poner la tarjeta en modo monitor, saltar entre canales para encontrar un objetivo, fijarte en un BSSID, lanzar el deauth en el canal correcto, esperar al handshake de cuatro vías y luego pasar la captura a una lista de palabras. Si te equivocas de canal, el deauth no llega a ninguna parte. Si olvidas --bssid, tu captura se llena de ruido.
Quería toda esa secuencia como un conjunto de pantallas que te guíen, te muestren lo que hay en el aire y mantengan el estado correcto entre pasos. Eso es lo que es. Funciona bien para aprender cómo se comportan realmente los ataques, para trabajo de laboratorio y para acelerar una evaluación autorizada.
Una ejecución avanza de arriba abajo por la barra lateral. Estas son las pantallas.
Las redes, BSSID y clientes de las capturas de pantalla siguientes son datos de demostración sintéticos, no una captura real.
Elige una interfaz, revisa su driver, chipset y PHY, y activa el modo monitor. Libera solo esa interfaz cuando termines.

Inicia un trabajo de airodump-ng y observa cómo se van completando los puntos de acceso y los clientes a medida que se encuentran. Filtra la tabla y envía cualquier red directamente a un flujo de deauth o handshake.

El análisis de señal puntúa cada punto de acceso para que los fuertes, con seguridad débil y clientes activos suban a la parte superior. También muestra qué tan ocupado está cada canal y qué seguridad usan las redes circundantes. Tus propios dispositivos se marcan para que no apuntes nada hacia ti por error.

Esta pantalla fija airodump-ng al BSSID y canal del objetivo, ejecuta el motor de deauth automático para desconectar a los clientes y que se reconecten, y se pone en verde en el instante en que se captura un handshake de cuatro vías.

Apunta aircrack-ng a la captura y a una lista de palabras. El registro se transmite mientras se ejecuta y, si la contraseña está en tu lista, aparece en la parte superior.

Deauth independiente con fijación de canal, historial de ejecución y salida de eventos analizada:

Gestión de archivos de captura:

Historial de comandos de la sesión:

Necesitas Linux, root, un adaptador inalámbrico compatible con modo monitor y la suite aircrack-ng en tu $PATH. Consulta Requisitos para la lista completa.
# 0. Install the suite (Debian, Ubuntu, Kali)
sudo apt update && sudo apt install aircrack-ng wireless-tools
# 1. Clone
git clone https://github.com/ELHart05/AirmonGUI.git
cd AirmonGUI
# 2. Backend (terminal 1)
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
# 3. Frontend (terminal 2)
cd frontend
npm install
npm run dev
Abre http://localhost:5173. La interfaz solo se comunica con 127.0.0.1:8000.
En la primera conexión, la interfaz solicita un token de API. El backend imprime uno en su consola al iniciar, así:
======================================================================
AirmonGUI API token (generated for this run):
Xy3k...long-random-string...
Paste it into the AirmonGUI web UI when prompted.
======================================================================
Pega ese token en la pantalla de desbloqueo. Para mantener un token fijo entre reinicios, define AIRMON_GUI_AUTH_TOKEN en backend/.env (el backend carga ese archivo al iniciar). Todas las rutas de la API, excepto la comprobación de salud, requieren este token, que es lo que evita que un proceso local suelto o una página web que estés visitando maneje las herramientas inalámbricas a tus espaldas. Debes definir el token explícitamente antes de vincular el backend a cualquier dirección que no sea 127.0.0.1 — de lo contrario, se niega a iniciar.
Si la solicitud es solo un estorbo en un equipo de un solo usuario, define AIRMON_GUI_AUTH_ENABLED=false para desactivar la autenticación por completo; la interfaz omitirá la pantalla de desbloqueo. Con la autenticación desactivada, el backend se niega a vincularse a cualquier dirección que no sea loopback — apunta API_HOST a algo distinto de 127.0.0.1 y no arrancará.
Se necesita root porque airmon-ng, airodump-ng y aireplay-ng usan sockets raw. Ejecuta .venv/bin/uvicorn directamente en lugar de uvicorn a secas, ya que sudo restablece PATH y de lo contrario no encontraría el virtualenv; la opción -E conserva cualquier variable AIRMON_GUI_* que hayas definido. Si prefieres no ejecutar el servidor como root, configura sudo sin contraseña para esos binarios concretos y ajusta backend/app/utils.py.
cd frontend
npm run build # writes static files to frontend/dist/
Sirve frontend/dist/ desde cualquier servidor de archivos estático y haz proxy de /api/* y del WebSocket /ws/* al proceso de Uvicorn.
| Capa | Stack |
|---|---|
| Backend | Python 3.11+, FastAPI, Uvicorn, Pydantic v2 |
| Frontend | Vue 3, Vite 5, Tailwind CSS 3, lucide-vue-next, xterm.js |
| Sitio web | React 18, TypeScript, Vite, Tailwind (la página de aterrizaje opcional en website/) |
AirmonGUI
├── backend/ FastAPI REST API and WebSocket, one route module per tool
│ app/routes/ (interfaces, airodump, aireplay, aircrack, handshake, captures)
│ app/models.py (validated Pydantic I/O), app/state.py (in-process job registry)
│ app/utils.py (subprocess and sudo logic), app/config.py (env config)
│
├── frontend/ Vue 3 single-page app, the control console
│ views/ (Overview, Monitor, Scan, Signal, Deauth, Handshake, Crack, Captures, Reports, Terminal, Logs)
│ composables/ (reactive job and state logic), api/ (fetch wrappers)
│
└── website/ Standalone React landing site (optional)
El backend sirve una API REST en http://127.0.0.1:8000/api y un WebSocket de terminal en /ws/terminal (protegido por el token de API; desactívalo con AIRMON_GUI_TERMINAL_ENABLED=0). En desarrollo, el servidor de desarrollo de Vite en :5173 hace proxy de ambos hacia el backend.
Los esquemas interactivos están en http://127.0.0.1:8000/docs (Swagger UI), /redoc y /openapi.json mientras el backend esté en ejecución.
Con la autenticación activada (valor por defecto), todos los endpoints excepto /api/health y /api/auth/status requieren la cabecera X-Auth-Token (consulta Inicio rápido para saber de dónde sale el token). En Swagger UI, el botón Authorize lo envía por ti. Con AIRMON_GUI_AUTH_ENABLED=false se elimina el token (solo loopback).
El backend se ejecuta con los valores por defecto siguientes, así que solo los necesitas si quieres cambiarlos. Defínelos en backend/.env (se carga al iniciar) o expórtalos antes de arrancar Uvicorn; una variable exportada tiene prioridad sobre el archivo. Consulta backend/.env.example para la lista completa.
"No se pudo fijar wlan0 al canal N" o un escaneo sin redes. Casi siempre la interfaz sigue en modo managed. El modo monitor es lo que permite al adaptador capturar y cambiar de canal. Actívalo primero desde la pestaña Monitor (o airmon-ng start wlan0) y luego escanea en la interfaz de monitor — a menudo wlan0mon, aunque algunos drivers conservan el nombre original. El escaneo rechaza una interfaz managed y muestra este mismo mensaje, y un escaneo de un solo canal ya no se aborta si no se puede verificar el bloqueo previo, porque airodump-ng ajusta el canal por sí mismo.
Las redes aparecen en la primera ejecución pero no en la segunda. Una interfaz de monitor residual, o NetworkManager reclamando el adaptador entre ejecuciones, puede dejarlo en un estado bloqueado. Ejecuta airmon-ng check kill (el botón Check Kill) antes de escanear y detén un escaneo antes de iniciar otro en la misma interfaz.
Cualquier ayuda con estos temas es bienvenida. Consulta Contribuir.
hashcat para descifrado por GPU¿Tienes una idea? Abre un issue. Las solicitudes de funciones y las preguntas son bienvenidas.
Las pull requests son bienvenidas, y cuanto más pequeñas y centradas, mejor.
uvicorn) y el frontend (npm run dev) arrancan sin errores.Cada carpeta tiene su propio README con notas: backend, frontend, website.
Si el proyecto te resulta útil, una estrella ayuda a que otras personas lo encuentren y me indica que vale la pena continuar.
AirmonGUI está pensado para pruebas inalámbricas autorizadas, investigación y enseñanza en redes que te pertenecen o para las que tienes permiso por escrito para evaluar.
Interceptar tráfico y desautenticar redes o dispositivos que no controlas es ilegal en la mayoría de las jurisdicciones. Los valores por defecto mantienen tanto la API como el servidor de desarrollo en loopback por una razón: no los expongas en una red compartida o pública. Los autores no se hacen responsables del mal uso. Al usar este software confirmas que tienes permiso para cada red y dispositivo con los que interactúas.
Úsalo para entender y defender redes, no para atacar las que no son tuyas.
MIT, consulta LICENSE. Construido sobre el proyecto aircrack-ng, que es el que hace el trabajo real.
| Área | Qué hace |
|---|
| Modo monitor | Activa o desactiva el modo monitor en una interfaz elegida con airmon-ng. Una acción independiente de check-kill ejecuta airmon-ng check kill cuando servicios en segundo plano como NetworkManager bloquean el modo monitor. |
| Escaneo de redes | Ejecuta trabajos de captura con airodump-ng y muestra los puntos de acceso y clientes en una tabla en vivo que puedes filtrar por nombre, seguridad o banda. |
| Análisis de señal | Clasifica los puntos de acceso según lo vulnerables que son a un ataque (potencia de señal, seguridad débil, clientes activos) y muestra gráficas de congestión de canales y de la mezcla de seguridad en el área. |
| Desautenticación | Envía deauth dirigido o de difusión mediante aireplay-ng, fijando primero la interfaz al canal del punto de acceso para que las tramas lleguen a su destino. |
| Captura de handshake | Un flujo de tres pasos que fija airodump-ng a un objetivo, ejecuta un motor de deauth automático y detecta el handshake WPA de cuatro vías por sí solo. |
| Descifrado | Pasa una captura y una lista de palabras a aircrack-ng, transmite el registro en vivo y muestra la clave recuperada en cuanto aparece. |
| Gestión de capturas | Explora, filtra, selecciona en bloque y elimina los archivos .cap, .csv, .pcap, .ivs y .log que genera la suite. |
| Terminal integrada | Un shell PTY real (xterm.js) para cuando quieras la línea de comandos cruda en la misma ventana. |
| Registros de comandos | Cada comando ejecutado en la sesión, con stdout, stderr, estado y copia con un clic. |
| Método | Endpoint | Descripción |
|---|
| GET | /api/health | Comprobación de salud del servidor (sin token) |
| GET | /api/auth/status | Indica si la autenticación y la terminal están habilitadas (sin token) |
| GET | /api/auth/verify | Confirma que el token suministrado es válido |
| GET | /api/toolcheck | Comprueba que las herramientas aircrack-ng están instaladas |
| GET | /api/interfaces | Lista las interfaces inalámbricas con MAC y estado del modo monitor |
| POST | /api/monitor | Inicia o detiene el modo monitor |
| POST | /api/checkkill | Ejecuta airmon-ng check kill para detener los servicios que interfieran |
| GET | /api/airodump/jobs | Lista los trabajos de captura en ejecución y conocidos |
| POST | /api/airodump/start | Inicia un trabajo de escaneo airodump-ng |
| POST | /api/airodump/stop | Detiene un trabajo de escaneo por id |
| GET | /api/airodump/results/{job_id} | Resultados de escaneo analizados (redes y clientes) |
| POST | /api/aireplay/deauth/start | Inicia un trabajo de deauth |
| GET | /api/aireplay/deauth/jobs | Lista los trabajos de deauth |
| GET | /api/aireplay/deauth/{job_id}/status | Consulta el estado de un trabajo de deauth |
| POST | /api/aireplay/deauth/{job_id}/stop | Detiene un trabajo de deauth |
| POST | /api/handshake/start | Inicia una captura de handshake dirigida |
| GET | /api/handshake/jobs | Lista los trabajos de captura de handshake |
| GET | /api/handshake/{job_id}/status | Consulta la detección de handshake |
| POST | /api/handshake/{job_id}/stop | Detiene una captura de handshake |
| GET | /api/aircrack/jobs | Lista los trabajos de descifrado |
| GET | /api/aircrack/validate?path=<file> | Comprueba si una captura contiene un handshake |
| POST | /api/aircrack/crack | Inicia un trabajo de aircrack-ng con lista de palabras |
| GET | /api/aircrack/{job_id}/status | Consulta el estado del descifrado y la salida de registro reciente |
| POST | /api/aircrack/{job_id}/stop | Detiene un trabajo de descifrado |
| GET | /api/captures | Lista los archivos de captura |
| GET | /api/captures/cap | Lista los archivos .cap, .pcap y .ivs descifrables |
| DELETE | /api/captures/{filename} | Elimina un archivo de captura |
| WS | /ws/terminal | Terminal PTY interactiva (activada por defecto; protegida por token; desactívela con AIRMON_GUI_TERMINAL_ENABLED=0) |
| Variable | Valor por defecto | Descripción |
|---|
AIRMON_GUI_CAPTURE_DIR | /var/lib/airmongui/captures | Dónde se escriben los archivos de captura (creado con modo 0700; debe ser un directorio privado y de tu propiedad) |
AIRMON_GUI_AUTH_ENABLED | true | Defínelo como false para eliminar el requisito del token (solo loopback) |
AIRMON_GUI_AUTH_TOKEN | (generado) | Token de API. Se genera y se imprime al iniciar si no está definido; necesario para vincularse fuera de loopback |
AIRMON_GUI_TERMINAL_ENABLED | 1 | Shell /ws/terminal protegido por token; defínelo como 0 para eliminar la ruta y ocultar la pestaña |
AIRMON_GUI_MAX_ACTIVE_JOBS | 8 | Tope de trabajos de herramientas simultáneos |
CORS_ORIGINS | http://localhost:5173 | Orígenes permitidos separados por comas |
API_HOST | 127.0.0.1 | Host al que se vincula Uvicorn |
API_PORT | 8000 | Puerto en el que escucha Uvicorn |
AIRMON_GUI_ENV_FILE | backend/.env | Ruta al archivo de entorno que se debe cargar; una cadena vacía omite la carga |
export AIRMON_GUI_CAPTURE_DIR=/home/user/captures
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
| Requisito | Notas |
|---|
| Linux (kernel 4.x+) | Probado en Kali Linux y Ubuntu 22.04 |
| Adaptador inalámbrico con modo monitor | Por ejemplo, un Atheros AR9271 u otro chipset común de pentesting |
| Suite aircrack-ng | airmon-ng, airodump-ng, aireplay-ng, aircrack-ng en $PATH |
wireless-tools (iwconfig) | Se usa para el ajuste de canales |
| Privilegios de root | Requeridos por las herramientas aircrack-ng |
| Python 3.11+ y Node.js 18+ | Cadenas de herramientas del backend y el frontend |