
Automatisiertes Reconnaissance-Framework mit über 17 Modulen für Subdomain-Enumeration, Directory-Brute-Forcing, JS-/Link-Mining, WAF-Fingerprinting und Takeover-Erkennung. Bietet ein FastAPI-Backend, ein React-Dashboard, Telegram-Benachrichtigungen und Massenverarbeitung von Zielen.
Reconator ist ein automatisiertes Aufklärungs-Framework. Füge ein Ziel hinzu – einzeln oder in Stapeln – und der Worker führt ca. 17 Recon-Module dagegen aus (Subdomain-Enumeration, Dirbrute, JS/Link-Mining, WAF-Fingerprint, Takeover-Prüfung, GF-Triage u.v.m.). Das Dashboard zeigt die Ausgabe jedes Moduls sofort an, sobald sie eintrifft.
| Ebene | Technologie |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| Worker | Python-Subprocess-Runner mit Timeouts + Abbruch |
| DB | PostgreSQL 16 |
| Web | React 18 · TypeScript · Tailwind · shadcn/ui · Helles/Dunkles Theme |
| Authentifizierung | API-Key (X-API-Key) für Schreibvorgänge; offen in der Entwicklung |
| Benachrichtigung | Telegram + generischer / Slack / Discord Webhook |
| Überwachung | JSON-Logs · Request-IDs · Prometheus /metrics · optional Sentry |
| Bereitstellung | Docker Compose · Heroku Container Stack |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # optional: Telegram / Webhook-Keys / API-Key hinzufügen
docker compose up --build
| Dienst | URL |
|---|---|
| Web-Oberfläche | http://localhost:3000 |
| API-Dokumentation | http://localhost:8000/docs |
| Metriken | http://localhost:8000/api/v1/metrics |
Oder über die CLI (verwendet heroku.yml Container Stack – ein einzelnes Image bedient UI + API, Worker-Dyno läuft die Warteschlange):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # empfohlen
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # optional
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 (separate shell)
python -m app.worker
# web (separate shell)
cd frontend && npm install && npm run dev # leitet /api → :8000 weiter
# tests + lint
cd backend && pytest && ruff check .
ADMIN_API_KEY setzen, alle Mutationen benötigen X-API-Key| Methode | Pfad | Auth | Zweck |
|---|---|---|---|
| GET | /api/v1/targets | — | Auflisten + Filtern (Status, Suche, Tag) |
| POST | /api/v1/targets | ✓ | Ein Ziel in die Warteschlange stellen |
| POST | /api/v1/targets/bulk | ✓ | Viele Ziele auf einmal |
| GET | /api/v1/targets/stats | — | Zähler + durchschnittliche Dauer |
| GET | /api/v1/targets/export?format=csv|json | — | Massenexport |
| GET | /api/v1/targets/{id} | — | Details + Modulzusammenfassung |
| DELETE | /api/v1/targets/{id} | ✓ | Löschen (oder abbrechen, falls aktiv) |
| POST | /api/v1/targets/{id}/cancel | ✓ | Wartendes/aktives abbrechen |
| POST | /api/v1/targets/{id}/rescan | ✓ | Erneut einreihen mit gleichen Tags/Modulen |
| GET | /api/v1/targets/{id}/results | — | Alle Modulausgaben |
| GET | /api/v1/targets/{id}/results/{module} | — | Ausgabe eines Moduls |
| GET | /api/v1/targets/{id}/results/{module}/download | — | .txt Download |
| GET | /api/v1/modules | — | Verfügbare Module |
| GET | /api/v1/system/info | — | Version + Authentifizierung + Benachrichtigungsstatus |
| POST | /api/v1/system/test-notify | ✓ | Testbenachrichtigung auslösen |
| GET | /api/v1/health · /ready · /metrics | — | Healthchecks + Prometheus |
OpenAPI unter /docs.
| Umgebungsvariable | Standard | Anmerkungen |
|---|---|---|
DATABASE_URL | komponiert | postgresql://… (Heroku-Format ok) |
ADMIN_API_KEY | nicht gesetzt | Wenn gesetzt, benötigen Mutationen X-API-Key |
RATE_LIMIT_WRITES | 20/minute | slowapi-Ausdruck |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | nicht gesetzt | Deaktiviert Telegram, falls leer |
WEBHOOK_URL / WEBHOOK_KIND | nicht gesetzt / generic | generic | slack | discord |
SENTRY_DSN | nicht gesetzt | Aktiviert Sentry, falls gesetzt |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | Hartes Timeout pro Modul |
CORS_ORIGINS | * | Komma-getrennt |
cron.py Polling-Schleife → Worker mit Zeilensperrung, Graceful-Shutdown, Abbruchheroku.ymlNur für autorisierte Tests. Verwende es nur auf Systemen, die dir gehören oder für die du eine Berechtigung hast. Veröffentlicht unter GPL-3.0.