
サブドメイン列挙、ディレクトリブルートフォース、JS/リンクマイニング、WAFフィンガープリンティング、テイクオーバー検出のための17以上のモジュールを備えた自動偵察フレームワーク。FastAPIバックエンド、Reactダッシュボード、Telegram通知、一括ターゲット処理を特徴とする。
Reconatorは自動偵察フレームワークです。ターゲットを1つまたは一括で追加すると、ワーカーが約17の偵察モジュール(サブドメイン列挙、dirbrute、JS/リンクマイニング、WAFフィンガープリント、乗っ取りチェック、GFトリアージなど)を実行します。ダッシュボードにはモジュールごとの出力が到着次第表示されます。
| 層 | 技術 |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| Worker | タイムアウト+キャンセル機能付きPythonサブプロセスランナー |
| DB | PostgreSQL 16 |
| Web | React 18 · TypeScript · Tailwind · shadcn/ui · ライト/ダークテーマ |
| Auth | 書き込み時にAPIキー(X-API-Key); 開発時はオープン |
| Notify | Telegram + 汎用 / Slack / Discord webhook |
| Observe | JSONログ · リクエストID · Prometheus /metrics · オプションSentry |
| Deploy | Docker Compose · Herokuコンテナスタック |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # オプション: Telegram / webhookキー / APIキーを追加
docker compose up --build
| サービス | URL |
|---|---|
| Web UI | http://localhost:3000 |
| API docs | http://localhost:8000/docs |
| Metrics | http://localhost:8000/api/v1/metrics |
またはCLI経由(heroku.ymlコンテナスタックを使用 — 単一イメージでUI+APIを提供、ワーカーダイノがキューを処理):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # 推奨
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # オプション
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(別シェル)
python -m app.worker
# web(別シェル)
cd frontend && npm install && npm run dev # /api を :8000 にプロキシ
# テスト + lint
cd backend && pytest && ruff check .
ADMIN_API_KEYを設定すると、すべての変更操作にX-API-Keyが必要| メソッド | パス | 認証 | 目的 |
|---|---|---|---|
| GET | /api/v1/targets | — | 一覧表示+フィルタ(ステータス、検索、タグ) |
| POST | /api/v1/targets | ✓ | ドメインをキューに追加 |
| POST | /api/v1/targets/bulk | ✓ | 一度に複数追加 |
| GET | /api/v1/targets/stats | — | 件数+平均時間 |
| GET | /api/v1/targets/export?format=csv|json | — | 一括エクスポート |
| GET | /api/v1/targets/{id} | — | 詳細+モジュール概要 |
| DELETE | /api/v1/targets/{id} | ✓ | 削除(実行中ならキャンセル) |
| POST | /api/v1/targets/{id}/cancel | ✓ | キュー/実行中のものをキャンセル |
| POST | /api/v1/targets/{id}/rescan | ✓ | 同じタグ/モジュールで再キュー |
| GET | /api/v1/targets/{id}/results | — | 全モジュール出力 |
| GET | /api/v1/targets/{id}/results/{module} | — | 1つのモジュール出力 |
| GET | /api/v1/targets/{id}/results/{module}/download | — | .txtダウンロード |
| GET | /api/v1/modules | — | 利用可能なモジュール |
| GET | /api/v1/system/info | — | バージョン+認証+通知機能ステータス |
| POST | /api/v1/system/test-notify | ✓ | テスト通知を送信 |
| GET | /api/v1/health · /ready · /metrics | — | プローブ+Prometheus |
OpenAPIは/docsにあります。
| 環境変数 | デフォルト値 | 備考 |
|---|---|---|
DATABASE_URL | 構成済み | postgresql://…(Heroku形式可) |
ADMIN_API_KEY | 未設定 | 設定時、変更操作にX-API-Keyが必要 |
RATE_LIMIT_WRITES | 20/minute | slowapi式 |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | 未設定 | 空白の場合はTelegram無効 |
WEBHOOK_URL / WEBHOOK_KIND | 未設定 / generic | generic | slack | discord |
SENTRY_DSN | 未設定 | 設定するとSentry有効 |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | モジュールごとのハードタイムアウト |
CORS_ORIGINS | * | カンマ区切り |
cron.pyポーリングループ → 行ロック、グレースフルシャットダウン、キャンセル機能付きワーカーheroku.ymlによるコンテナスタック許可されたテスト目的のみで使用してください。あなた自身が所有している、または評価の許可を得ているシステムでのみ使用してください。 GPL-3.0ライセンスの下で公開されています。