العودة إلى التحديثات
New releaseAug 21, 2026

UltraViolet v1.0.11

محرك اكتشاف وبحث للشبكات ذاتي الاستضافة مع مسح مستمر للمنافذ، وفحص عميق للبروتوكولات عبر حوالي 100 خدمة، ومطابقة محلية لـ CVE، وبحث نصي كامل لجرد البنية التحتية ومراقبة المخاطر.

مشاركة

UltraViolet

اكتشاف وبحث شبكي ذاتي الاستضافة — نسختك الخاصة من Shodan، على أجهزتك.

فحص TCP/UDP · ~100 فحص بروتوكول · بصمات TLS/JARM · مطابقة CVE · بحث نصي كامل · تتبع الفروقات · تنبيهات


Go React PostgreSQL Docker CI License: MIT

بدء سريع · الميزات · البنية · الوثائق · قائمة التحقق للإنتاج


مهم. افحص فقط الشبكات التي تملكها أو لديك إذن كتابي لفحصها. ينفّذ UltraViolet استطلاعًا سلبيًا للخدمات — فهو لا يستغل الثغرات.

لماذا UltraViolet؟

حالة الاستخدامما الذي تحصل عليه
حدود الشبكة والجرداكتشاف مستمر للمنافذ والخدمات المفتوحة عبر نطاقات CIDR
البحث في البنية التحتيةبحث نصي كامل عبر محتوى HTTP واللافتات وTLS وDNS والثغرات (CVEs)
المخاطر والامتثالمطابقة محلية مع NVD بالإضافة إلى CISA KEV وEPSS — دون الاعتماد على السحابة
النشر المعزول (Air-gapped)أرشيف دون اتصال يشمل صور Docker وبذرة CVE وملف GeoIP MMDB على القرص
تتبع التغييراتالفروقات بين عمليات الفحص، وأحداث WebSocket، وتنبيهات على عمليات البحث المحفوظة

مستأجر واحد، ومكدّس Docker Compose واحد، وسيطرة كاملة على بياناتك.

✨ الميزات

الاكتشاف

  • ماسح اتصال TCP يعتمد على masscan أو zmap كمحرك اكتشاف
  • فحوصات UDP على منافذ قابلة للتكوين
  • يُحدَّد نطاقه عبر SCAN_ALLOWED_CIDRS مع حدود للمضيفات والمنافذ

فحوصات عميقة (~100 بروتوكول)

  • الويب: HTTP/HTTPS وHTTP/3 وGraphQL وتجزئة favicon وrobots.txt وsecurity.txt ومكدّس التقنيات
  • TLS: سلاسل الشهادات، JARM، JA3S/JA4S، تقييم الإعدادات
  • البريد والدلائل: SMTP وPOP3/IMAP وLDAP وIPMI
  • قواعد البيانات وقوائم الانتظار: MySQL وPostgreSQL وMongoDB وRedis وKafka وMQTT وNATS وAMQP…
  • ICS/SCADA: Modbus وBACnet وDNP3 وIEC 104 وS7Comm وENIP وOPC UA…
  • إنترنت الأشياء والوسائط: ONVIF وRTSP وChromecast وAirPlay وUPnP…
  • القائمة الكاملة في وثائق البروتوكولات

الإثراء

  • DNS عكسي، GeoIP (MMDB)، ASN
  • اكتشاف اختياري لـ DNS المباشر وسجلات CT

الثغرات (CVE) والمخاطر

  • مرآة محلية لـ NVD مع مزامنة في الخلفية ومطابقة قائمة على البصمات
  • CISA KEV وFIRST EPSS

العمليات

  • التحكم بالوصول RBAC (viewer / operator / admin)، JWT + رموز التحديث
  • جدولة عمليات الفحص، إيقاف مؤقت/استئناف، استعادة المهام اليتيمة بعد إعادة تشغيل العامل
  • Prometheus /metrics، وملف Grafana اختياري
  • سجل تدقيق، تحديد معدل الطلبات، سياسات الاحتفاظ

🏗 البنية

flowchart TB
  Browser["Browser"]
  FE["service-frontend<br/>React + nginx"]
  API["uv-api<br/>REST · WS · metrics"]
  PG[("PostgreSQL 16")]
  SCAN["uv-scanner<br/>probe pipeline"]

  Browser --> FE
  FE -->|"/api"| API
  FE -->|"/realtime"| API
  API <--> PG
  SCAN <--> PG
  API -.->|LISTEN/NOTIFY| API

صورة واجهة المستخدم في الإصدار توجّه /api/ و/realtime إلى uv-apiأصل واحد، دون إعادة بناء للواجهة الأمامية لكل عنوان API.

الدليلالغرض
service-api/Go: uv-api (واجهة HTTP API وWebSocket والعمال) + uv-scanner (خط المعالجة)
service-frontend/React 19 + Vite + RTK — الفحوصات والمضيفون والبحث ولوحة المعلومات
service-documentation-frontend/VitePress — وثائق المستخدم والمشغّل
service-env/docker-compose والأسرار وinstall.sh / upgrade.sh / النسخ الاحتياطي

قواعد تطوير الواجهة الخلفية: CLAUDE.md.

🚀 بدء سريع

المتطلبات: Go 1.25+ ومحرك Docker ≥ 24 وذاكرة ~4 جيجابايت RAM. صور الإنتاج موجهة لنظام Linux amd64.

التشغيل من Docker Hub (بدون بناء من المصدر)

مسار المبتدئين — اسحب الصور المنشورة باستخدام service-env/docker-compose.registry.yml:

cd service-env
cp env.registry.example .env
# set POSTGRES_PASSWORD, AUTH_JWT_SECRET, AUTH_BOOTSTRAP_PASSWORD
mkdir -p geoip catalog-seed
docker compose -f docker-compose.registry.yml pull
docker compose -f docker-compose.registry.yml up -d
# UI → http://localhost:3000

انظر Docker Registry في موقع الوثائق.

التطوير من المصدر

تنسخ صور الواجهة البرمجية والماسح الضوئي الملفات الثنائية المجمّعة مسبقًا من service-api/bin/ (لا تُجمَّع داخل Docker). يشغّل make dev الأمر make -C service-api build-linux قبل docker compose … --build.

git clone https://github.com/yakushstanislav/UltraViolet.git
cd UltraViolet/service-env

cp .env.example .env
mkdir -p secrets
openssl rand -hex 32 > secrets/postgres_password
openssl rand -hex 32 > secrets/auth_jwt_secret

cd ..
make dev
URLالغرض
http://localhost:3000واجهة المستخدم (API عبر nginx /api/)
http://localhost:8080API مباشرة
http://localhost:9090/metricsPrometheus

الإقلاع التطويري: admin / admin (فقط عندما APP_ENV≠production).

📖 الوثائق

الدليل الكامل — VitePress في service-documentation-frontend/docs/:

make docs-dev    # → http://localhost:5173

في بيئة الإنتاج، فعّل ملف docs:

cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}

الأقسام الرئيسية: التثبيت · الفحص · API · النشر · التثبيت دون اتصال.

🛠 التطوير

Docker بالكامل

make dev    # build-linux → compose prod + dev override --build

أعد بناء ملفات Go الثنائية بعد تغييرات الواجهة الخلفية (make -C service-api build-linux)، ثم أعد التشغيل أو أعد تنفيذ make dev.

الوضع الهجين (تكرار أسرع للواجهة الخلفية)

make dev-db   # PostgreSQL only on :5432

cd service-api && make build
export LOGGER_NAME=uv-api LOGGER_DEBUG=true
export SERVER_ADDR=0.0.0.0 SERVER_PORT=8080
export METRICS_ADDR=0.0.0.0 METRICS_PORT=9090
export REALTIME_ADDR=0.0.0.0 REALTIME_PORT=8081
export POSTGRES_ADDR=localhost POSTGRES_PORT=5432
export POSTGRES_USERNAME=ultraviolet
export POSTGRES_PASSWORD="$(cat ../service-env/secrets/postgres_password)"
export POSTGRES_DATABASE=ultraviolet
export POSTGRES_SCHEMA_PATH="$(pwd)/deploy/migrations"
export AUTH_JWT_SECRET="$(cat ../service-env/secrets/auth_jwt_secret)"
./bin/uv-api

الواجهة الأمامية: cd service-frontend && npm run dev (يوجّه Vite طلبات /api إلى :8080 و/realtime إلى :8081).

GeoIP وCVE

cd service-env && make geoip-download      # IPLocate MMDB → geoip/
make -C service-env cve-catalog-dump       # CVE dump (requires running postgres)

البناء بدون Docker

make build && make lint && make frontend-build && make docs-build

📦 الإصدار والتثبيت

المنصة المستهدفة: linux/amd64. على أجهزة Apple Silicon، اضبط DOCKER_PLATFORM=linux/amd64 للأرشيفات دون اتصال.

git tag v0.1.0
make release VERSION=v0.1.0
make release-promote VERSION=v0.1.0   # :latest — required for local releases; GitHub Actions does this automatically
الأرشيفالمحتويات
ultraviolet-vX.Y.Z.tar.gzcompose والسكربتات و.env.example (~50 كيلوبايت، عبر الإنترنت)
ultraviolet-vX.Y.Z-offline.tar.gz+ صور Docker لـ amd64
ultraviolet-vX.Y.Z-offline-full.tar.gz+ بذرة CVE + GeoIP MMDB

عبر الإنترنت: فك الضغط ← cp .env.example .env./install.sh (سحب من السجل).

دون اتصال: ./install.sh (docker load، بدون سحب). الترقية: احتفظ بـ .env وsecrets/ ووحدة تخزين Postgres ← ./upgrade.sh.

المتغيرات: UV_REGISTRY (الافتراضي docker.io/styakushDRY_RUN=1 — بناء تجريبي محلي دون رفع.

التثبيت دون اتصال — خطوة بخطوة
# from the build machine
scp dist/ultraviolet-v0.1.0-offline.tar.gz user@host:~/

# on the server (Docker ≥ 24, amd64)
tar xzf ultraviolet-v0.1.0-offline.tar.gz && cd ultraviolet-v0.1.0
cp .env.example .env
./install.sh

الترقية (الحفاظ على البيانات):

docker compose -f docker-compose.yml down
# back up .env + secrets/, extract the new archive, run ./upgrade.sh

أبقِ اسم الدليل (ultraviolet-v0.1.0) ثابتًا — إذ ترتبط به وحدة تخزين Docker postgres-data.

✅ قائمة التحقق للإنتاج

  1. خزّن الأسرار في secrets/، ولا تضعها أبدًا في git.
  2. اضبط CORS_ALLOWED_ORIGINS على نطاقات واجهة المستخدم الفعلية فقط.
  3. هيّئ SCAN_ALLOWED_CIDRS وحدود المضيف/المنفذ.
  4. غيّر كلمة مرور الإقلاع وAUTH_JWT_SECRET (يرفض install.sh القيم النائبة).
  5. اضبط APP_ENV=production — يرفض uv-api admin/admin وكلمات المرور الأقصر من 8 أحرف.
  6. أنهِ TLS عند وكيل عكسي — مثال: service-env/examples/nginx-tls.conf.
  7. خلف وكيل: اضبط AUDIT_TRUST_PROXY_HEADERS=true.
  8. انقل PostgreSQL نسخة احتياطية: service-env/scripts/backup.sh + cron؛ وينشئ upgrade.sh أيضًا تفريغًا للبيانات.
  9. المقاييس على :9090/metrics؛ Grafana عبر ملف observability.
  10. حدّث GeoIP: service-env/scripts/geoip-refresh.sh عبر مهمة cron شهرية.
HTTPS والنشر بمسار فرعي وcron للنسخ الاحتياطي

إنهاء TLS على nginx خارجي — اربط واجهة المستخدم بالحلقة المحلية (loopback) فقط:

# docker-compose.override.yml
services:
  service-frontend:
    ports:
      - "127.0.0.1:3000:8080"
CORS_ALLOWED_ORIGINS=https://ultraviolet.example.com
AUDIT_TRUST_PROXY_HEADERS=true

المسار الفرعي (/ultraviolet/):

VITE_BASE_PATH=/ultraviolet/ make frontend-build
# UV_BASE_PATH=/ultraviolet/ in compose — must match VITE_BASE_PATH

مهمة cron للنسخ الاحتياطي (يوميًا، مع احتفاظ لمدة 14 يومًا):

0 3 * * * cd /opt/ultraviolet/service-env && ./scripts/backup.sh && find backups -name 'uv-*.dump' -mtime +14 -delete

تحديث GeoIP (الأول من كل شهر):

0 4 1 * * cd /opt/ultraviolet/service-env && ./scripts/geoip-refresh.sh >> /var/log/uv-geoip.log 2>&1

🔐 API والتحكم بالوصول (RBAC)

بعد تنفيذ POST /v1/auth/login تستلم access_token (Bearer) وrefresh_token (/v1/auth/refresh).

الدورالصلاحيات
viewerقراءة المضيفين، البحث، الثغرات (CVEs)، لوحة المعلومات
operator+ بدء وإدارة عمليات الفحص
admin+ المستخدمون، التدقيق، الإعدادات

GET /v1/me · GET /v1/version · GET /readyz (الصحة + الإصدار + الالتزام).

🤝 المساهمة

انظر CONTRIBUTING.md. تقارير الأمان: SECURITY.md. معايير المجتمع: CODE_OF_CONDUCT.md.

📄 الرخصة

UltraViolet مُتاح بموجب رخصة MIT.


UltraViolet — اكتشف ما تملكه، وافهم ما تغيّر، وأبقِه على شبكتك.

الفئات