
الاستطلاع الآلي لاختبار الاختراق وصيد الثغرات
Reconator هي إطار عمل استطلاع آلي. أضف هدفًا — منفردًا أو بالجملة — ويقوم العامل (worker) بتشغيل حوالي 17 وحدة استطلاع ضده (تعداد النطاقات الفرعية (subdomain enum)، مسح الأدلة (dirbrute)، تعدين JS/الروابط، بصمة WAF، فحص الاستيلاء (takeover check)، فرز GF (GF triage)، والمزيد). توضح لوحة التحكم ناتج كل وحدة فور وصوله.
| الطبقة | التقنية |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| العامل | مشغل عمليات فرعية بلغة Python مع مهلات وإلغاء |
| قاعدة البيانات | PostgreSQL 16 |
| الويب | React 18 · TypeScript · Tailwind · shadcn/ui · سمة فاتحة/داكنة |
| المصادقة | مفتاح API (X-API-Key) على الكتابة؛ مفتوح في وضع التطوير |
| الإشعارات | Telegram + webhook عام / Slack / Discord |
| المراقبة | سجلات JSON · معرفات الطلب · Prometheus /metrics · Sentry اختياري |
| النشر | Docker Compose · مكدس حاوية Heroku |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # اختياري: أضف مفاتيح Telegram / webhook / مفتاح API
docker compose up --build
| الخدمة | المسار |
|---|---|
| واجهة المستخدم | http://localhost:3000 |
| توثيق API | http://localhost:8000/docs |
| المقاييس | http://localhost:8000/api/v1/metrics |
أو عبر CLI (يستخدم مكدس حاوية heroku.yml — صورة واحدة تخدم واجهة المستخدم و API، ويعمل dyno العامل على تشغيل الطابور):
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
# العامل (نافذة منفصلة)
python -m app.worker
# الويب (نافذة منفصلة)
cd frontend && npm install && npm run dev # يعيد توجيه /api ← :8000
# الاختبارات + الفحص
cd backend && pytest && ruff check .
ADMIN_API_KEY، جميع التعديلات تتطلب X-API-KeyOpenAPI متاح على /docs.
cron.py → عامل مع قفل الصفوف، إيقاف تشغيل لطيف، إلغاءheroku.ymlللاستخدام في الاختبارات المأذون بها فقط. استخدم على أنظمة تمتلكها أو لديك إذن لتقييمها. صدر بموجب GPL-3.0.
| الطريقة | المسار | المصادقة | الغرض |
|---|
| 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} | — | ناتج وحدة واحدة |
| 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 |
| متغير البيئة | الافتراضي | ملاحظات |
|---|
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 | * | مفصولة بفواصل |