
Recon automatizado para Pentest & Bug Bounty
Reconator é um framework automatizado de reconhecimento. Adicione um alvo — sozinho ou em lote — e o worker executa aproximadamente 17 módulos de reconhecimento contra ele (enumeração de subdomínios, dirbrute, mineração de JS/links, impressão digital de WAF, verificação de takeover, triagem GF e muito mais). O painel mostra a saída de cada módulo conforme ela chega.
| Camada | Tecnologia |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| Worker | Executor de subprocessos Python com timeouts + cancelamento |
| BD | PostgreSQL 16 |
| Web | React 18 · TypeScript · Tailwind · shadcn/ui · tema claro/escuro |
| Autenticação | Chave de API (X-API-Key) em escritas; aberto em desenvolvimento |
| Notificação | Telegram + webhook genérico / Slack / Discord |
| Observação | Logs JSON · IDs de requisição · Prometheus /metrics · Sentry opcional |
| Implantação | Docker Compose · Stack de contêineres Heroku |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # opcional: adicione chaves do Telegram / webhook / chave de API
docker compose up --build
| Serviço | URL |
|---|---|
| Web UI | http://localhost:3000 |
| Docs da API | http://localhost:8000/docs |
| Métricas | http://localhost:8000/api/v1/metrics |
Ou via CLI (usa o stack de contêineres heroku.yml — uma única imagem serve UI + API, o dyno worker executa a fila):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # recomendado
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # opcional
git push heroku master
heroku ps:scale web=1 worker=1
# api
cd backend && pip install -r requirements.txt
uvicorn app.main:app --reload
# worker (terminal separado)
python -m app.worker
# web (terminal separado)
cd frontend && npm install && npm run dev # proxy /api → :8000
# testes + lint
cd backend && pytest && ruff check .
ADMIN_API_KEY, todas as mutações exigem X-API-KeyOpenAPI em /docs.
cron.py → worker com bloqueio de linha, desligamento gracioso, cancelamentoheroku.ymlApenas para testes autorizados. Use em sistemas que você possui ou tem permissão para avaliar. Lançado sob GPL-3.0.
| Método | Caminho | Autenticação | Finalidade |
|---|
| GET | /api/v1/targets | — | Listar + filtrar (status, busca, tag) |
| POST | /api/v1/targets | ✓ | Enfileirar um domínio |
| POST | /api/v1/targets/bulk | ✓ | Enfileirar vários de uma vez |
| GET | /api/v1/targets/stats | — | Contagens + duração média |
| GET | /api/v1/targets/export?format=csv|json | — | Exportação em lote |
| GET | /api/v1/targets/{id} | — | Detalhes + resumo de módulos |
| DELETE | /api/v1/targets/{id} | ✓ | Excluir (ou cancelar se em execução) |
| POST | /api/v1/targets/{id}/cancel | ✓ | Cancelar enfileirado / em execução |
| POST | /api/v1/targets/{id}/rescan | ✓ | Re-enfileirar com mesmas tags / módulos |
| GET | /api/v1/targets/{id}/results | — | Todas as saídas dos módulos |
| GET | /api/v1/targets/{id}/results/{module} | — | Saída de um módulo |
| GET | /api/v1/targets/{id}/results/{module}/download | — | Download .txt |
| GET | /api/v1/modules | — | Módulos disponíveis |
| GET | /api/v1/system/info | — | Versão + status de autenticação + notificador |
| POST | /api/v1/system/test-notify | ✓ | Disparar uma notificação de teste |
| GET | /api/v1/health · /ready · /metrics | — | Sondas + Prometheus |
| Variável de ambiente | Padrão | Observações |
|---|
DATABASE_URL | composta | postgresql://… (formato Heroku ok) |
ADMIN_API_KEY | não definido | Quando definida, mutações exigem X-API-Key |
RATE_LIMIT_WRITES | 20/minute | expressão slowapi |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | não definido | Desativa telegram se vazio |
WEBHOOK_URL / WEBHOOK_KIND | não definido / generic | generic | slack | discord |
SENTRY_DSN | não definido | Ativa Sentry se definido |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | Timeout máximo por módulo |
CORS_ORIGINS | * | Separados por vírgula |