
Ricognizione automatizzata per Penetration Testing e Bug Bounty
Reconator è un framework di ricognizione automatizzato. Aggiungi un target — singolo o in blocco — e il worker esegue ~17 moduli di ricognizione contro di esso (enumerazione sottodomini, dirbrute, estrazione JS/link, fingerprint WAF, controllo takeover, triage GF e altro). La dashboard mostra l'output per modulo non appena arriva.
| Livello | Tecnologia |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| Worker | Esecutore di sottoprocessi Python con timeout e cancellazione |
| DB | PostgreSQL 16 |
| Web | React 18 · TypeScript · Tailwind · shadcn/ui · tema chiaro/scuro |
| Auth | Chiave API (X-API-Key) in scrittura; aperto in sviluppo |
| Notifica | Telegram + generico / Slack / Discord webhook |
| Osservabilità | Log JSON · ID richiesta · Prometheus /metrics · Sentry opzionale |
| Deploy | Docker Compose · Heroku container stack |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # opzionale: aggiungi chiavi Telegram / webhook / API key
docker compose up --build
| Servizio | URL |
|---|---|
| Web UI | http://localhost:3000 |
| API docs | http://localhost:8000/docs |
| Metriche | http://localhost:8000/api/v1/metrics |
Oppure via CLI (usa lo stack container heroku.yml — una singola immagine serve UI + API, il dyno worker esegue la coda):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # consigliato
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # opzionale
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 (terminale separato)
python -m app.worker
# web (terminale separato)
cd frontend && npm install && npm run dev # proxy /api → :8000
# test + lint
cd backend && pytest && ruff check .
ADMIN_API_KEY, tutte le mutazioni richiedono X-API-KeyOpenAPI su /docs.
cron.py → worker con blocco delle righe, arresto graduale, cancellazioneheroku.ymlSolo per test autorizzati. Utilizza su sistemi di tua proprietà o per i quali hai il permesso di valutare. Rilasciato sotto licenza GPL-3.0.
| Metodo | Percorso | Auth | Scopo |
|---|
| GET | /api/v1/targets | — | Elenco + filtro (stato, ricerca, tag) |
| POST | /api/v1/targets | ✓ | Accoda un dominio |
| POST | /api/v1/targets/bulk | ✓ | Accoda molti in una volta |
| GET | /api/v1/targets/stats | — | Conteggi + durata media |
| GET | /api/v1/targets/export?format=csv|json | — | Esportazione bulk |
| GET | /api/v1/targets/{id} | — | Dettaglio + riepilogo moduli |
| DELETE | /api/v1/targets/{id} | ✓ | Elimina (o annulla se in esecuzione) |
| POST | /api/v1/targets/{id}/cancel | ✓ | Annulla in coda / esecuzione |
| POST | /api/v1/targets/{id}/rescan | ✓ | Riaccoda con stessi tag/moduli |
| GET | /api/v1/targets/{id}/results | — | Tutti gli output dei moduli |
| GET | /api/v1/targets/{id}/results/{module} | — | Output di un modulo |
| GET | /api/v1/targets/{id}/results/{module}/download | — | Scarica .txt |
| GET | /api/v1/modules | — | Moduli disponibili |
| GET | /api/v1/system/info | — | Versione + auth + stato notificatore |
| POST | /api/v1/system/test-notify | ✓ | Invia una notifica di test |
| GET | /api/v1/health · /ready · /metrics | — | Probe + Prometheus |
| Variabile d'ambiente | Predefinito | Note |
|---|
DATABASE_URL | composto | postgresql://… (funziona anche con Heroku) |
ADMIN_API_KEY | non impostato | Quando impostata, le mutazioni richiedono X-API-Key |
RATE_LIMIT_WRITES | 20/minute | espressione slowapi |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | non impostato | Disabilita Telegram se vuoto |
WEBHOOK_URL / WEBHOOK_KIND | non impostato / generic | generic | slack | discord |
SENTRY_DSN | non impostato | Abilita Sentry se impostato |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | Timeout massimo per modulo |
CORS_ORIGINS | * | Separato da virgole |