
Uma GUI hospedada localmente para a suíte de auditoria sem fio aircrack-ng.
Uma interface web local para o conjunto de ferramentas sem fio aircrack-ng.
Capturas de tela · Início rápido · Funcionalidades · Roteiro · Contribuindo
[!WARNING] Use isto apenas em redes que você possui ou para as quais tem permissão por escrito para testar. Escanear, desautenticar ou capturar tráfego de redes que você não controla é ilegal na maioria dos lugares. Veja Uso legal e responsável.
AirmonGUI coloca airmon-ng, airodump-ng, aireplay-ng e aircrack-ng atrás de um aplicativo web que roda em sua própria máquina. Você ativa o modo monitor, escaneia redes, captura um handshake WPA e o quebra clicando em formulários etiquetados, em vez de memorizar flags.
Ele não reimplementa nenhuma das ferramentas. O backend executa os binários reais e analisa suas saídas, então o que você vê é o que o conjunto realmente fez. A interface se vincula a 127.0.0.1 e a API nunca alcança fora da sua máquina.
O conjunto aircrack-ng é excelente, mas o fluxo de trabalho vive em quatro comandos separados e muitas flags que você precisa manter na cabeça: colocar a placa em modo monitor, pular canais para encontrar um alvo, travar em um BSSID, disparar deauth no canal correto, esperar pelo handshake de quatro vias, então alimentar a captura em uma wordlist. Erre o canal e o deauth não vai a lugar nenhum. Esqueça --bssid e sua captura estará cheia de ruído.
Eu queria essa sequência inteira como um conjunto de telas que guiam você, mostram o que está no ar e mantêm o estado consistente entre as etapas. É isso que isto é. Funciona bem para aprender como os ataques realmente se comportam, para trabalho de laboratório e para acelerar uma avaliação autorizada.
Uma execução move de cima para baixo na barra lateral. Aqui está cada tela.
As redes, BSSIDs e clientes nas capturas de tela abaixo são dados de demonstração sintéticos, não uma captura real.
Escolha uma interface, verifique seu driver, chipset e PHY, e ative o modo monitor. Libere apenas essa interface quando terminar.

Inicie um trabalho airodump-ng e veja pontos de acesso e clientes preencherem à medida que são encontrados. Filtre a tabela e envie qualquer rede diretamente para um fluxo de trabalho de deauth ou handshake.

A Análise de Sinal pontua cada ponto de acesso para que os fortes e com segurança fraca, com clientes ativos, subam ao topo. Também mostra o quão ocupado cada canal está e qual segurança as redes ao redor usam. Seus próprios dispositivos são sinalizados para que você não aponte nada para si mesmo por engano.

Esta tela trava o airodump-ng no BSSID e canal do alvo, executa o motor de deauth automático para derrubar clientes para que eles se reconectem e fica verde no instante em que um handshake de quatro vias é capturado.

Aponte o aircrack-ng para a captura e uma wordlist. O log flui enquanto executa e, se a senha estiver em sua lista, aparece no topo.

Deauth independente com bloqueio de canal, histórico de execução e saída de eventos analisada:

Gerenciamento de arquivos de captura:

Histórico de comandos da sessão:

Você precisa de Linux, root, um adaptador sem fio que suporte modo monitor e o conjunto aircrack-ng em seu $PATH. Veja Requisitos para a lista completa.
# 0. Instale o conjunto (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
Abra http://localhost:5173. A interface só conversa com 127.0.0.1:8000.
Na primeira conexão, a interface pede um token de API. O backend imprime um em seu console na inicialização, assim:
======================================================================
Token de API do AirmonGUI (gerado para esta execução):
Xy3k...long-random-string...
Cole-o na interface web do AirmonGUI quando solicitado.
======================================================================
Cole esse token na tela de desbloqueio. Para manter um token fixo entre reinicializações, defina AIRMON_GUI_AUTH_TOKEN em backend/.env (o backend carrega esse arquivo na inicialização). Toda rota da API, exceto a verificação de saúde, requer este token, que é o que impede que um processo local perdido ou uma página web que você está visitando acione as ferramentas sem fio nas suas costas. Você deve definir o token explicitamente antes de vincular o backend a algo diferente de 127.0.0.1 — caso contrário, ele se recusa a iniciar.
Se o prompt for apenas atrito em uma máquina de usuário único, defina AIRMON_GUI_AUTH_ENABLED=false para desligar a autenticação completamente; a interface então pula a tela de desbloqueio. Com a autenticação desligada, o backend se recusa a vincular a qualquer lugar que não seja loopback — aponte API_HOST para algo diferente de 127.0.0.1 e ele não iniciará.
Root é necessário porque airmon-ng, airodump-ng e aireplay-ng usam sockets brutos. Chame .venv/bin/uvicorn diretamente em vez de uvicorn simples, já que sudo redefine PATH e perderia o virtualenv; a flag -E mantém quaisquer variáveis AIRMON_GUI_* que você definir. Se preferir não executar o servidor como root, configure sudo sem senha para esses binários específicos e ajuste backend/app/utils.py.
cd frontend
npm run build # escreve arquivos estáticos em frontend/dist/
Sirva frontend/dist/ de qualquer servidor de arquivos estático e faça proxy de /api/* e do WebSocket /ws/* para o processo Uvicorn.
| Camada | Stack |
|---|---|
| Backend | Python 3.11+, FastAPI, Uvicorn, Pydantic v2 |
| Frontend | Vue 3, Vite 5, Tailwind CSS 3, lucide-vue-next, xterm.js |
| Site | React 18, TypeScript, Vite, Tailwind (a página de destino opcional em website/) |
AirmonGUI
├── backend/ REST API FastAPI e WebSocket, um módulo de rota por ferramenta
│ app/routes/ (interfaces, airodump, aireplay, aircrack, handshake, captures)
│ app/models.py (I/O Pydantic validado), app/state.py (registro de trabalhos em processo)
│ app/utils.py (lógica de subprocesso e sudo), app/config.py (configuração de env)
│
├── frontend/ Aplicação single-page Vue 3, o console de controle
│ views/ (Overview, Monitor, Scan, Signal, Deauth, Handshake, Crack, Captures, Reports, Terminal, Logs)
│ composables/ (lógica reativa de trabalho e estado), api/ (wrappers fetch)
│
└── website/ Site de destino React independente (opcional)
O backend serve uma API REST em http://127.0.0.1:8000/api e um WebSocket de terminal em /ws/terminal (protegido pelo token de API; desligue-o com AIRMON_GUI_TERMINAL_ENABLED=0). Em desenvolvimento, o servidor de desenvolvimento Vite em :5173 faz proxy de ambos para o backend.
Esquemas interativos estão em http://127.0.0.1:8000/docs (Swagger UI), /redoc e /openapi.json enquanto o backend estiver rodando.
Enquanto a autenticação estiver ativada (padrão), todo endpoint exceto /api/health e /api/auth/status requer o cabeçalho X-Auth-Token (veja Início rápido para saber de onde vem o token). No Swagger UI, o botão Authorize o envia para você. Com AIRMON_GUI_AUTH_ENABLED=false o token é descartado (apenas loopback).
O backend roda com os padrões abaixo, então você só precisa deles para alterá-los. Defina-os em backend/.env (carregado na inicialização) ou exporte-os antes de iniciar o Uvicorn; uma variável exportada substitui o arquivo. Veja backend/.env.example para a lista completa.
"Não foi possível travar wlan0 no canal N" ou um escaneamento sem redes. A interface quase sempre ainda está em modo gerenciado. O modo monitor é o que permite ao adaptador capturar e mudar de canal. Ative-o na aba Monitor primeiro (ou airmon-ng start wlan0), então escaneie na interface de monitor — geralmente wlan0mon, embora alguns drivers mantenham o nome original. O escaneamento recusa uma interface gerenciada com esta dica exata, e um escaneamento de canal único não aborta mais se o pré-bloqueio não puder ser verificado, já que o airodump-ng ajusta o canal por conta própria.
Redes aparecem na primeira execução, mas não na segunda. Uma interface de monitor remanescente, ou o NetworkManager reivindicando o adaptador entre execuções, pode deixá-lo em um estado travado. Execute airmon-ng check kill (o botão Check Kill) antes de escanear e pare um escaneamento antes de iniciar outro na mesma interface.
Ajuda em qualquer um desses é bem-vinda. Veja Contribuindo.
hashcat para quebra por GPUTem uma ideia? Abra uma issue. Solicitações de funcionalidades e perguntas são bem-vindas.
Pull requests são bem-vindas, e quanto menores e mais focados, melhor.
uvicorn) e o frontend (npm run dev) iniciam limpos.Cada pasta tem seu próprio README com notas: backend, frontend, website.
Se o projeto for útil para você, uma estrela ajuda outras pessoas a encontrá-lo e me diz que vale a pena continuar.
AirmonGUI é para testes sem fio autorizados, pesquisa e ensino em redes que você possui ou para as quais tem permissão por escrito para avaliar.
Interceptar tráfego e desautenticar redes ou dispositivos que você não controla é ilegal na maioria das jurisdições. Os padrões mantêm tanto a API quanto o servidor de desenvolvimento em loopback por uma razão, então não os exponha em uma rede compartilhada ou pública. Os autores não assumem responsabilidade por uso indevido. Ao usar este software, você confirma que tem permissão para cada rede e dispositivo que tocar.
Use-o para entender e defender redes, não para atacar aquelas que não são suas.
MIT, veja LICENSE. Construído sobre o projeto aircrack-ng, que faz o trabalho real.
| Área | O que faz |
|---|
| Modo monitor | Ativar ou desativar o modo monitor em uma interface escolhida com airmon-ng. Uma ação separada de check-kill executa airmon-ng check kill quando serviços de fundo como NetworkManager estão bloqueando o modo monitor. |
| Escaneamento de rede | Executa trabalhos de captura airodump-ng e mostra pontos de acesso e clientes em uma tabela ao vivo que você pode filtrar por nome, segurança ou banda. |
| Análise de sinal | Classifica pontos de acesso por quão atacáveis eles são (força do sinal, segurança fraca, clientes ativos) e gráficos de congestionamento de canal e a mistura de segurança ao alcance. |
| Desautenticação | Envia deauth direcionado ou broadcast através do aireplay-ng, configurando a interface para o canal do ponto de acesso primeiro para que os quadros cheguem. |
| Captura de handshake | Um fluxo de trabalho de três etapas que trava o airodump-ng em um alvo, executa um motor de deauth automático e detecta o handshake WPA de quatro vias por conta própria. |
| Quebra | Alimenta uma captura e uma wordlist para o aircrack-ng, transmite o log ao vivo e mostra a chave recuperada no momento em que aparece. |
| Gerenciamento de capturas | Navegar, filtrar, selecionar em lote e excluir os arquivos .cap, .csv, .pcap, .ivs e .log que o conjunto escreve. |
| Terminal integrado | Um shell PTY real (xterm.js) para quando você quiser a linha de comando bruta na mesma janela. |
| Logs de comandos | Todos os comandos executados na sessão, com stdout, stderr, status e cópia com um clique. |
| Método | Endpoint | Descrição |
|---|
| GET | /api/health | Verificação de saúde do servidor (sem token) |
| GET | /api/auth/status | Se a autenticação e o terminal estão ativados (sem token) |
| GET | /api/auth/verify | Confirmar que o token fornecido é válido |
| GET | /api/toolcheck | Verificar se as ferramentas aircrack-ng estão instaladas |
| GET | /api/interfaces | Listar interfaces sem fio com MAC e status do monitor |
| POST | /api/monitor | Iniciar ou parar o modo monitor |
| POST | /api/checkkill | Executar airmon-ng check kill para parar serviços interferentes |
| GET | /api/airodump/jobs | Listar trabalhos de captura em execução e conhecidos |
| POST | /api/airodump/start | Iniciar um trabalho de escaneamento airodump-ng |
| POST | /api/airodump/stop | Parar um trabalho de escaneamento por id |
| GET | /api/airodump/results/{job_id} | Resultados de escaneamento analisados (redes e clientes) |
| POST | /api/aireplay/deauth/start | Iniciar um trabalho de deauth |
| GET | /api/aireplay/deauth/jobs | Listar trabalhos de deauth |
| GET | /api/aireplay/deauth/{job_id}/status | Consultar um trabalho de deauth |
| POST | /api/aireplay/deauth/{job_id}/stop | Parar um trabalho de deauth |
| POST | /api/handshake/start | Iniciar uma captura de handshake direcionada |
| GET | /api/handshake/jobs | Listar trabalhos de captura de handshake |
| GET | /api/handshake/{job_id}/status | Consultar detecção de handshake |
| POST | /api/handshake/{job_id}/stop | Parar uma captura de handshake |
| GET | /api/aircrack/jobs | Listar trabalhos de quebra |
| GET | /api/aircrack/validate?path=<file> | Verificar se uma captura contém um handshake |
| POST | /api/aircrack/crack | Iniciar um trabalho de wordlist com aircrack-ng |
| GET | /api/aircrack/{job_id}/status | Consultar status da quebra e saída recente do log |
| POST | /api/aircrack/{job_id}/stop | Parar um trabalho de quebra |
| GET | /api/captures | Listar arquivos de captura |
| GET | /api/captures/cap | Listar arquivos .cap, .pcap e .ivs quebráveis |
| DELETE | /api/captures/{filename} | Excluir um arquivo de captura |
| WS | /ws/terminal | Terminal PTY interativo (ativado por padrão; protegido por token; desligue com AIRMON_GUI_TERMINAL_ENABLED=0) |
| Variável | Padrão | Descrição |
|---|
AIRMON_GUI_CAPTURE_DIR | /var/lib/airmongui/captures | Onde os arquivos de captura são escritos (criado 0700; deve ser um diretório privado e de propriedade do usuário) |
AIRMON_GUI_AUTH_ENABLED | true | Defina como false para remover a exigência de token (apenas loopback) |
AIRMON_GUI_AUTH_TOKEN | (gerado) | Token da API. Gerado e impresso na inicialização se não definido; necessário para vincular fora de loopback |
AIRMON_GUI_TERMINAL_ENABLED | 1 | Shell /ws/terminal protegido por token; defina como 0 para remover a rota e ocultar a aba |
AIRMON_GUI_MAX_ACTIVE_JOBS | 8 | Limite de trabalhos simultâneos de ferramentas |
CORS_ORIGINS | http://localhost:5173 | Origens permitidas separadas por vírgula |
API_HOST | 127.0.0.1 | Host ao qual Uvicorn se vincula |
API_PORT | 8000 | Porta na qual Uvicorn escuta |
AIRMON_GUI_ENV_FILE | backend/.env | Caminho para o arquivo env a ser carregado; string vazia pula o carregamento |
export AIRMON_GUI_CAPTURE_DIR=/home/user/captures
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
| Requisito | Observações |
|---|
| Linux (kernel 4.x+) | Testado no Kali Linux e Ubuntu 22.04 |
| Adaptador sem fio com modo monitor | Por exemplo, um Atheros AR9271 ou outro chipset comum de pentest |
| Conjunto aircrack-ng | airmon-ng, airodump-ng, aireplay-ng, aircrack-ng no $PATH |
wireless-tools (iwconfig) | Usado para ajuste de canal |
| Privilégios de root | Exigido pelas ferramentas aircrack-ng |
| Python 3.11+ e Node.js 18+ | Cadeias de ferramentas do backend e frontend |