
منصة OSINT جغرافية مكانية في الوقت الفعلي تجمع أكثر من 60 مصدر تغذية قياس عن بعد عامة (ADS-B, AIS, أقمار صناعية, CCTV) في خريطة موحدة مع مجموعة أدوات استطلاع من جانب الخادم، قناة وكيل ذكاء اصطناعي، واتصالات شبكة متداخلة لا مركزية.
اعتراض التهديد العالمي — منصة استخبارات جغرافية مكانية في الزمن الحقيقي
ShadowBroker هي منصة استخبارات لا مركزية تجمع القياسات عن بعد من مصادر استخباراتية متعددة المجالات في الزمن الحقيقي من أكثر من 60 تغذية استخباراتية حية في واجهة خريطة عمليات سرية واحدة. الطائرات، السفن، الأقمار الصناعية، مناطق النزاع، شبكات كاميرات المراقبة، تشويش GPS، الأجهزة المتصلة بالإنترنت، ماسحات الشرطة، عقد شبكات الراديو المتداخلة، والأحداث الجيوسياسية المتطورة — كلها تحدث في الزمن الحقيقي على شاشة واحدة، بالإضافة إلى بروتوكول اتصالات مبهمة وبنية تحتية لتبادل المعلومات.
مبني باستخدام Next.js و MapLibre GL و FastAPI و Python. أكثر من 40 طبقة بيانات قابلة للتبديل، بما في ذلك كشف التغيرات الأرضية باستخدام SAR، استخبارات Telegram (معاينات القنوات العامة محللة جغرافيًا على الخريطة)، مجموعة أدوات استطلاع من جانب الخادم (DNS، WHOIS، العقوبات، BGP، مسح IP، والمزيد)، تراكبات مخاطر سلسلة التوريد، وتغذية تهديدات سيبرانية للبرامج الضارة وC2 و CISA KEV. أوضاع عرض متعددة (DEFAULT / SATELLITE / FLIR / NVG / CRT). انقر بزر الماوس الأيمن على أي نقطة على الأرض للحصول على ملف دولة، معلومات رئيس الدولة، توسيع الرسم البياني للكيانات، وأحدث صورة قمر صناعي Sentinel-2. ShadowBroker لا يحتوي على حسابات أو قياسات تتبع للمنتج أو تحليلات؛ لوحة التحكم تتواصل مع الخلفية التي تستضيفها بنفسك. استعلامات الاستطلاع الحساسة و Shodan لا تصل أبدًا إلى واجهات برمجة التطبيقات التابعة لجهات خارجية من المتصفح — بل يتم توجيهها عبر الخلفية مع حماية من SSRF ومصادقة المشغل المحلي. قناة أوامر OpenClaw / الوكيل تكشف عن نفس خلفيات الاستطلاع بالإضافة إلى بحث كامل عن القياسات عن بعد — لا حاجة لتكامل منفصل لواجهة برمجة التطبيقات.
مصمم للمحللين والباحثين ومشغلي الراديو وأي شخص يريد رؤية كيف يبدو العالم عندما تكون كل الإشارات العامة على نفس الخريطة.
كمية مذهلة من القياسات عن بعد العالمية هي بالفعل عامة — بث ADS-B للطائرات، إشارات AIS البحرية، بيانات مدارات الأقمار الصناعية، أجهزة استشعار الزلازل، شبكات الراديو المتداخلة، تغذية ماسحات الشرطة، محطات مراقبة البيئة، قياسات البنية التحتية للإنترنت، والمزيد. هذه البيانات مبعثرة عبر عشرات الأدوات وواجهات برمجة التطبيقات. ShadowBroker يجمع كل ذلك في واجهة واحدة.
المشروع لا يقدم قدرات مراقبة جديدة — بل يجمع ويصور مجموعات البيانات العامة الموجودة. إنه مفتوح المصدر بالكامل حتى يتمكن أي شخص من تدقيق البيانات التي يتم الوصول إليها وكيفية ذلك. ShadowBroker لا يتضمن قياسات تتبع للمنتج أو تحليلات أو حسابات. المفاتيح التي يوفرها المشغل تبقى في نشرك المحلي، لكن ميزات الاستخبارات الحية تستلزم بالضرورة إرسال طلبات صادرة إلى موفري البيانات العامة الذين تقوم بتمكينهم أو الاستعلام عنهم.
يتضمن ShadowBrocker موصلاً اختيارياً لـ Shodan للوصول إلى API بمفتاح يوفره المشغل (SHODAN_API_KEY) ولوحة أدوات الاستطلاع لاستعلامات OSINT بدون مفتاح. كلاهما يعمل على الخادم فقط: المتصفح يستدعي مساراتك الذاتية /api/osint/* و /api/tools/shodan/*؛ الطلبات الصادرة تتم بواسطة الخلفية بعد التحقق من SSRF. الاستطلاع يتطلب وصول المشغل المحلي (نفس نموذج الثقة لتبديل الطبقات والمسارات الإدارية). نتائج Shodan تظهر كطبقة خريطة منفصلة وتخضع لشروط خدمة Shodan.
search_telemetry، search_news)، مجموعة أدوات الاستطلاع الكاملة (osint_lookup لعناوين IP/DNS/WHOIS/العقوبات/CVE/إلخ.)، توسيع الرسم البياني للكيانات، وضع الدبابيس، التحكم في الخريطة، التغيير الأرضي SAR، الشبكات المتداخلة، وتسليم التنبيهات. يرى كل ما يراه المشغل ويمكنه اتخاذ إجراءات على الخريطة في الوقت الحقيقي.⚡ بدء سريع (Docker)
git clone https://github.com/bigbodycobain/Shadowbroker.git cd Shadowbroker docker compose pull docker compose up -d
### من GitLab (يستخدم GitLab Container Registry)```bash
git clone https://gitlab.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml pull
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml up -d
كلا المسارين ينتجان حاويات متطابقة — نفس المصدر، نفس CI، نفس الصور بايت مقابل بايت. اختر النظام البيئي الذي تستخدمه بالفعل.
افتح http://localhost:3000 لمشاهدة لوحة التحكم! (يتطلب Docker Desktop أو Docker Engine)
انضم إلى سرب InfoNet الخاص (sb-testnet-0): انقر على NODE في لوحة التحكم، أو قم بتشغيل
./meshnode.shلمشارك بدون واجهة. لا حاجة لقائمة أقران يدوية — إعدادات الأسطول الافتراضية تكتشف البذرة وتسحب البيان الموقّع تلقائيًا. اضبطMESH_INFONET_FLEET_JOIN=falseفي.envلعقدة خاصة منفردة.
المنفذ الخلفي مشغول بالفعل؟ المتصفح يحتاج فقط المنفذ
3000، لكن API الخلفية يُنشر أيضًا على منفذ المضيف8000للتشخيص المحلي. إذا كان تطبيق آخر يستخدم8000بالفعل، أنشئ أو حرّر.envبجانبdocker-compose.ymlواضبطBACKEND_PORT=8001، ثم قم بتشغيلdocker compose up -d.
صفحات الأخبار/UAP/القواعد/مياه الصرف فارغة بعد عدة دقائق؟ تحقق من إعادة تشغيل OOM للخلفية باستخدام
docker events --since 30m --filter container=shadowbroker-backend --filter event=oom. ملف compose الافتراضي يعطي الخلفية 4GB؛ إذا كان لدى مضيفك ذاكرة أقل، قلل الموجّهات المفعّلة أو اضبطBACKEND_MEMORY_LIMIT=3Gوتوقع أن الطبقات الأبطأ/الأثقل ستستغرق وقتًا أطول للتسخين.
مستخدمو Podman: Podman يعمل، لكن
podman composeهو غلاف ولا يزال بحاجة إلى مزود Compose مثبت. على Windows/WSL، إذا رأيتlooking up compose provider failed، قم بتثبيتpodman-composeوشغّلpodman-compose pullثمpodman-compose up -dمن داخل المجلد المستنسخShadowbroker. على أصداف Linux/macOS/WSL يمكنك أيضًا استخدام./compose.sh --engine podman pullو./compose.sh --engine podman up -d.
🔄 كيفية التحديث
يستخدم ShadowBroker صور Docker مُعدّة مسبقًا — لا حاجة للبناء محليًا. التحديث يستغرق ثوانٍ:```bash docker compose pull docker compose up -d
هذا كل شيء. `pull` يسحب أحدث الصور، و `up -d` يعيد تشغيل الحاويات.
> **هل قادم من إصدار أقدم؟** اسحب أحدث كود المستودع أولاً، ثم اسحب الصور:
>
> ```bash
> git pull origin main
> docker compose down
> docker compose pull
> docker compose up -d
> ```
>
> يجب على مستخدمي Podman تشغيل الأمر المكافئ للموفر، على سبيل المثال `podman-compose pull` و `podman-compose up -d`، أو استخدام `./compose.sh --engine podman pull` و `./compose.sh --engine podman up -d` من شيل متوافق مع bash.
### سلامة التحديث
يتم تسليم تحديثات Docker عبر سجلات الحاويات الموقعة. يتحقق برنامج التحديث الذاتي ZIP القديم من أرشيفات الإصدار من خلال هذه السلسلة، بالترتيب:
* `MESH_UPDATE_SHA256` عندما يحدد المشغل ملخصًا بشكل صريح.
* `backend/data/release_digests.json` لأرقام الإصدار المضمنة.
* أصل `SHA256SUMS.txt` للإصدار على GitHub عندما لا يكون هناك رقم مضمن.
يجب على مسؤولي الإصدار تشغيل `python backend/scripts/release_helper.py hash <ShadowBroker_vX.Y.Z.zip>` قبل النشر، ثم نشر `SHA256SUMS.txt` وتحديث `backend/data/release_digests.json` عند شحن هدف تحديث ZIP. يحافظ برنامج التحديث على مسار التجاوز الخاص بالمشغل سليمًا بدلاً من الفشل المغلق عند عدم وجود ملخصات مضمنة، حتى لا تتعطل التثبيتات الحالية بسبب خطأ في عملية الإصدار.
### تعزيز CSP
يأتي الواجهة الأمامية للإنتاج مع CSP متوافق مع التميؤ و CSP صارم يعتمد على nonce فقط في `Content-Security-Policy-Report-Only`. قم بتعيين `SHADOWBROKER_STRICT_CSP=1` فقط بعد التحقق من أن البناء المحدد يتم تميؤه بشكل صحيح في نشرك. خطوط Google في وقت التشغيل غير مطلوبة؛ خط أنابيب الخطوط المضمن في Next يخدم خط لوحة التحكم من بناء التطبيق.
### ⚠️ **عالق في النسخة القديمة؟**
**إذا فشل `git pull` أو استمر `docker compose up` في البناء من المصدر بدلاً من سحب الصور**، فإن نسختك تسبق ترحيل المستودع في مارس 2026 الذي أعاد كتابة تاريخ الالتزامات. لا يمكن لـ `git pull` العادي إصلاح هذا. قم بتشغيل:```bash
# Back up any local config you want to keep (.env, etc.)
cd ..
rm -rf Shadowbroker
git clone https://github.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose pull
docker compose up -d
كيفية معرفة ما إذا كنت متأثرًا: إذا أظهر الأمر docker compose up نصوصًا مثل RUN apt-get أو RUN npm ci أو RUN pip install — فهذا يعني أنه يتم البناء من المصدر بدلاً من سحب الصور المعدة مسبقًا. أنت بحاجة إلى استنساخ جديد.
استكشاف الأخطاء وإصلاحها الأخرى:
docker compose pull --no-cachedocker image prune -fdocker compose logs -f backendلنشر عالي التوفر أو مجموعات معمل منزلي، يدعم ShadowBroker النشر عبر Helm. يعتمد هذا المخطط على قالب bjw-s-labs ويوفر إعدادًا قويًا وقابلًا للتعديل لكل من الواجهة الخلفية والأمامية.
1. إضافة المستودع:```bash helm repo add bjw-s-labs https://bjw-s-labs.github.io/helm-charts/ helm repo update
**2. تثبيت المخطط:**```bash
# Default — pulls images from GHCR
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker
# GitLab registry variant
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker \
-f helm/chart/values.yaml \
-f helm/chart/values-gitlab.yaml
3. الميزات الرئيسية:
شكر خاص لـ @chr0n1x للمساهمة في البنية المعمارية الأولية لـ Kubernetes.
تُصدر ShadowBroker v0.9.7 InfoNet (شبكة استخبارات لامركزية + اقتصاد حوكمة القشرة السيادية)، وقناة أوامر وكيلية للذكاء الاصطناعي (تدعم OpenClaw وأي وكيل يوقع باستخدام HMAC)، وتشغيل لقطات Time Machine، وكشف التغيرات الأرضية عبر الرادار ذو الفتحة التركيبية (SAR). هذه شبكة اختبار تجريبية — ليست برنامج مراسلة خاص وليست نظام حوكمة إنتاجي.
أول طبقة اتصال وحوكمة استخباراتية لامركزية مبنية مباشرة في منصة OSINT. لا حسابات، لا تسجيل، لا حاجة لهوية. v0.9.7 يرقّي InfoNet من طبقة دردشة إلى اقتصاد حوكمة كامل بمسار واضح لمنصة استخبارات لامركزية تحافظ على الخصوصية.
طبقة الاتصال (منذ v0.9.6):
send، dm، أوامر السوق، فحص حالة البوابة. لوحة قابلة للسحب، تصغير إلى الشريط العلوي. اكتب help لرؤية جميع الأوامر.القشرة السيادية — اقتصاد الحوكمة (جديد في v0.9.7):
UPDATE_PARAM و و و . المقابض القابلة للضبط تتغير بالتصويت — لا حاجة لنشر كود.يحتوي المستودع على ملف docker-compose.yml يسحب الصور المبنية مسبقًا من سجل حاويات GitHub.```bash
git clone https://github.com/BigBodyCobain/Shadowbroker.git
cd Shadowbroker
docker compose pull docker compose up -d
افتح `http://localhost:3000` لعرض لوحة القيادة.
> **النشر علنًا أو على شبكة محلية؟** لا حاجة لأي تكوين لمعظم الإعدادات.
> يقوم الواجهة الأمامية بتوكيل جميع استدعاءات API عبر خادم Next.js إلى `BACKEND_URL`,
> والذي يُعيّن افتراضيًا إلى `http://backend:8000` (الشبكة الداخلية لـ Docker).
> منفذ المضيف `8000` يُنشر فقط للوصول المحلي لـ API/التصحيح (`127.0.0.1:8000`
> في ملف `docker-compose.yml`). إذا تعارض مع خدمة أخرى، قم بتعيين
> `BACKEND_PORT=8001` في ملف `.env`؛ اترك `BACKEND_URL` كـ `http://backend:8000`
> لأنه المنفذ الداخلي لـ Docker.
>
> **تشغيل الخلفية خارج Docker** (`cd backend && python main.py`):
> خادم التطوير يُربط **حلقة محلية فقط** (`127.0.0.1:8000`) لذا لا يمكن للأجهزة الأخرى على
> شبكتك المحلية الوصول إلى مسارات admin/local-trust مع `ADMIN_KEY` فارغ. قم بتعيين
> `SHADOWBROKER_DEV_BIND_ALL=true` في ملف `.env` فقط عندما تحتاج عمدًا إلى
> `0.0.0.0` واستخدم `ADMIN_KEY` قوي لأي متصل غير محلي.
> حد الذاكرة للخلفية يتم التحكم به بواسطة `BACKEND_MEMORY_LIMIT` ويُعيّن افتراضيًا
> إلى `4G`. إذا أبلغ Docker عن أحداث OOM، ستُعاد تشغيل الخلفية وقد تبدو الطبقات البطيئة فارغة حتى يتم إعادة ملئها.
>
> إذا كانت خلفيتك تعمل على **مضيف أو منفذ مختلفين**، قم بتعيين `BACKEND_URL` في وقت التشغيل — لا حاجة لإعادة البناء:
>
> ```bash
> # Linux / macOS
> BACKEND_URL=http://myserver.com:9096 docker compose up -d
>
> # Podman (via compose.sh wrapper)
> BACKEND_URL=http://192.168.1.50:9096 ./compose.sh up -d
>
> # Windows (PowerShell)
> $env:BACKEND_URL="http://myserver.com:9096"; docker compose up -d
>
> # Or add to a .env file next to docker-compose.yml:
> # BACKEND_URL=http://myserver.com:9096
> ```
**مستخدمو Podman:** لا تمرر رابط GitHub إلى `podman compose pull`؛ قم باستنساخ المستودع أولاً، ثم `cd Shadowbroker`، ثم قم بتشغيل compose من هذا المجلد. `podman compose` يتطلب أيضًا مزود Compose. إذا أبلغ Podman عن `looking up compose provider failed`، قم بتثبيت واحد:```bash
# Linux / macOS / WSL
python3 -m pip install --user podman-compose
podman-compose pull
podman-compose up -d
لا حاجة لاستنساخ المستودع. استخدم الصور المُعدّة مسبقًا من سجل حاويات GitHub. يمكن استخدام صور سجل GitLab كمرآة إذا قمت بنشرها هناك.
أنشئ ملف docker-compose.yml بالمحتوى التالي وانشره مباشرة — الصقه في محرر الأكوام في Portainer، أو uncloud deploy، أو أي مضيف Docker:```yaml
services: backend: image: ghcr.io/bigbodycobain/shadowbroker-backend:latest # image: registry.gitlab.com/bigbodycobain/shadowbroker/backend:latest container_name: shadowbroker-backend ports: - "${BACKEND_PORT:-8000}:8000" environment: - AIS_API_KEY=your_aisstream_key # Required — get one free at aisstream.io - OPENSKY_CLIENT_ID= # Optional — higher flight data rate limits - OPENSKY_CLIENT_SECRET= # Optional — paired with Client ID above - LTA_ACCOUNT_KEY= # Optional — Singapore CCTV cameras - SHODAN_API_KEY= # Optional — Shodan device search overlay - SH_CLIENT_ID= # Optional — Sentinel Hub satellite imagery - SH_CLIENT_SECRET= # Optional — paired with Sentinel Hub ID - CORS_ORIGINS= # Optional — comma-separated allowed origins volumes: - backend_data:/app/data restart: unless-stopped
frontend: image: ghcr.io/bigbodycobain/shadowbroker-frontend:latest # image: registry.gitlab.com/bigbodycobain/shadowbroker/frontend:latest container_name: shadowbroker-frontend ports: - "3000:3000" environment: - BACKEND_URL= # Docker internal networking — no rebuild needed depends_on: - backend restart: unless-stopped
جميع الطبقات الـ 41 قابلة للتبديل بشكل مستقل من اللوحة اليسرى:
تم تحسين المنصة للتعامل مع مجموعات البيانات الضخمة في الوقت الفعلي:
304 Not Modified تتجاوز تحليل JSON غير الضروريsetData() المباشرةيمكن للمساهمين الجدد استخدام docs/contributor-map.md للحصول على دليل توجيهي أقصر.``` Shadowbroker/ ├── openclaw-skills/shadowbroker/ # OpenClaw skill — SKILL.md, sb_query.py client, alerts/monitor helpers ├── backend/ │ ├── main.py # FastAPI app, middleware, API routes (~4,000 lines) │ ├── cctv.db # SQLite CCTV camera database (auto-generated) │ ├── config/ │ │ └── news_feeds.json # User-customizable RSS feed list │ ├── services/ │ │ ├── data_fetcher.py # Core scheduler — orchestrates all data sources │ │ ├── ais_stream.py # AIS WebSocket client (25K+ vessels) │ │ ├── carrier_tracker.py # OSINT carrier position estimator (GDELT news scraping) │ │ ├── cctv_pipeline.py # 14-source CCTV camera ingestion pipeline │ │ ├── ssrf_guard.py # SSRF validation for operator recon fetches │ │ ├── sanctions/ofac.py # OpenSanctions OFAC SDN index │ │ ├── osint/lookups.py # Server-side recon lookups (Osiris port) │ │ ├── osint/openclaw_recon.py # OpenClaw dispatch for recon + entity_expand │ │ ├── osint_intel/resolve.py # Entity graph resolver (Wikidata + OFAC) │ │ ├── scm/suppliers.py # Supply-chain risk overlay │ │ ├── intel_feeds/ # Country risk index helpers │ │ ├── fetchers/malware.py # abuse.ch Feodo + URLhaus │ │ ├── fetchers/cyber_status.py # CISA KEV feed │ │ ├── fetchers/telegram_osint.py # Public Telegram channel scrape + geoparse │ │ ├── third_party/osiris/ # MIT attribution for Osiris-derived code │ │ ├── geopolitics.py # GDELT + Ukraine frontline + air alerts │ │ ├── region_dossier.py # Right-click country/city intelligence │ │ ├── radio_intercept.py # Police scanner feeds + OpenMHZ │ │ ├── kiwisdr_fetcher.py # KiwiSDR receiver scraper │ │ ├── sentinel_search.py # Sentinel-2 STAC imagery search │ │ ├── shodan_connector.py # Shodan device search connector │ │ ├── sigint_bridge.py # APRS-IS TCP bridge │ │ ├── network_utils.py # HTTP client with curl fallback │ │ ├── api_settings.py # API key management │ │ ├── news_feed_config.py # RSS feed config manager │ │ ├── fetchers/ │ │ │ ├── flights.py # OpenSky, adsb.lol, GPS jamming, holding patterns │ │ │ ├── geo.py # AIS vessels, carriers, GDELT, fishing activity │ │ │ ├── satellites.py # CelesTrak TLE + SGP4 propagation │ │ │ ├── earth_observation.py # Quakes, fires, volcanoes, air quality, weather │ │ │ ├── infrastructure.py # Data centers, power plants, military bases │ │ │ ├── trains.py # Amtrak + DigiTraffic European rail │ │ │ ├── sigint.py # SatNOGS, TinyGS, APRS, Meshtastic │ │ │ ├── meshtastic_map.py # Meshtastic MQTT + map node aggregation │ │ │ ├── military.py # Military aircraft classification │ │ │ ├── news.py # RSS intelligence feed aggregation │ │ │ ├── financial.py # Global markets data │ │ │ └── ukraine_alerts.py # Ukraine air raid alerts │ │ └── mesh/ # InfoNet / Wormhole protocol stack │ │ ├── mesh_protocol.py # Core mesh protocol + routing │ │ ├── mesh_crypto.py # Ed25519, X25519, AESGCM primitives │ │ ├── mesh_hashchain.py # Hash chain commitment system (~1,400 lines) │ │ ├── mesh_router.py # Multi-transport router (APRS, Meshtastic, WS) │ │ ├── mesh_wormhole_persona.py # Gate persona identity management │ │ ├── mesh_wormhole_dead_drop.py # Dead Drop token-based DM mailbox │ │ ├── mesh_wormhole_ratchet.py # Double-ratchet DM scaffolding │ │ ├── mesh_wormhole_gate_keys.py # Gate key management + rotation │ │ ├── mesh_wormhole_seal.py # Message sealing + unsealing │ │ ├── mesh_merkle.py # Merkle tree proofs for data commitment │ │ ├── mesh_reputation.py # Node reputation scoring │ │ ├── mesh_oracle.py # Oracle consensus protocol │ │ └── mesh_secure_storage.py # Secure credential storage │ ├── routers/ │ │ ├── osint.py # /api/osint/* recon routes (local operator) │ │ ├── entity_graph.py # /api/entity/expand │ │ ├── scm.py # /api/scm-suppliers │ │ └── intel_feeds.py # /api/malware, /api/cyber-threats, /api/telegram-feed, /api/country-risk ├── frontend/ │ ├── public/data/ │ │ └── submarine-cables.json # Static undersea cable GeoJSON │ ├── src/ │ │ ├── app/ │ │ │ └── page.tsx # Main dashboard — state, polling, layout │ │ └── components/ │ │ ├── MaplibreViewer.tsx # Core map — all GeoJSON layers │ │ ├── MeshChat.tsx # InfoNet / Mesh / Dead Drop chat panel │ │ ├── MeshTerminal.tsx # Draggable CLI terminal │ │ ├── NewsFeed.tsx # SIGINT feed + entity detail panels │ │ ├── WorldviewLeftPanel.tsx # Data layer toggles (40+ layers) │ │ ├── ShodanPanel.tsx # Shodan device search overlay │ │ ├── ReconPanel.tsx # Server-side OSINT recon toolkit │ │ ├── ScmPanel.tsx # Supply-chain risk command panel │ │ ├── EntityGraphPanel.tsx # Entity graph on map selection │ │ ├── MaplibreViewer/popups/TelegramOsintPopup.tsx # Threat-intercept styled Telegram pin popups │ │ ├── WorldviewRightPanel.tsx # Search + filter sidebar │ │ ├── AdvancedFilterModal.tsx # Airport/country/owner filtering │ │ ├── MapLegend.tsx # Dynamic legend with all icons │ │ ├── MarketsPanel.tsx # Global financial markets ticker │ │ ├── RadioInterceptPanel.tsx # Scanner-style radio panel │ │ ├── FindLocateBar.tsx # Search/locate bar │ │ ├── ChangelogModal.tsx # Version changelog popup (auto-shows on upgrade) │ │ ├── SettingsPanel.tsx # API Keys + News Feed + Shodan config │ │ ├── ScaleBar.tsx # Map scale indicator │ │ └── ErrorBoundary.tsx # Crash recovery wrapper │ └── package.json
تم بناء ShadowBroker في العلن. هؤلاء الأشخاص قدموا كودًا حقيقيًا:
تم بناء هذه الأداة بالكامل على بيانات استخبارات المصادر المفتوحة (OSINT) المتاحة للجمهور. لا يتم استخدام أي بيانات مصنفة أو مقيدة أو غير عامة. مواقع الناقلات هي تقديرات بناءً على التقارير العامة. واجهة المستخدم ذات الطابع العسكري هي جمالية بحتة.
هذا المشروع مخصص للأغراض التعليمية والبحث الشخصي. راجع شروط خدمة مزودي API الفرديين لقيود استخدام البيانات.
بنيت بـ ☕ والكثير من استدعاءات API
t.me/s (OSINTdefender، NEXTA، إلخ.) ممسوحة كل ساعة، مسجلة المخاطر، محللة جغرافيًا لنقاط ربط حضرية، ومرسومة كدبابيس خريطة قابلة للنقر مع وسائط مضمنة| القناة | حالة الخصوصية | التفاصيل |
|---|
| Meshtastic / APRS | عامة | الإرسال اللاسلكي (RF) علني وقابل للاعتراض بطبيعته. |
| دردشة بوابة InfoNet | مبهمة | الرسائل مبهمة بشخصيات البوابة وتوقيع الحمولة القانونية، لكنها ليست مشفرة من طرف إلى طرف. البيانات الوصفية ليست مخفية بالرغم من تصميمها عبر Tor وReticulum (قيد التطوير). |
| المراسلات الخاصة (Dead Drop DMs) | أقوى مسار حاليًا | صندوق بريد قائم على الرمز المميز (توكن) مع عصر زمني والتحقق من كلمة التلامس (SAS). أقوى مسار في هذا الإصدار، لكنه ليس موثوقًا بشكل كامل بعد. |
| حوكمة القشرة السيادية | دفتر عام | الالتماسات، الأصوات، تجزئات الترقية، ورهانات النزاعات هي أحداث موقعة على سلسلة تجزئة عامة. شبه مجهولة من خلال شخصية البوابة، لكن إجراءات الحوكمة قابلة للملاحظة عمدًا. |
| البدائيات الخصوصية (RingCT / عناوين سرية / DEX) | غير موصولة بعد | عقود البروتوكول المقفلة موجودة، لكن المخطط التشفيري لم يتم اختياره بعد. صندوق Rust للخصوصية الأساسية هو هدف التكامل لسباق تطوير مستقبلي. |
لا ترسل أي شيء حساس على أي قناة. تعامل مع جميع المسارات كمسارات مفتوحة وعامة في الوقت الحالي. التشفير من طرف إلى طرف وتقوية أعم للـ Tauri هي المعالم التالية. إذا قمت بتفرع هذا المشروع، احتفظ بهذه التسميات سليمة ولا تقدم ادعاءات خصوصية أقوى مما يدعمه التنفيذ.
للحصول على صورة كاملة لما تحمي منه الشبكة فعليًا وما لا تحمي منه، اقرأ نموذج التهديد و تسوية الادعاءات. كل جملة أعلاه مرتبطة هناك بمسار الكود الذي يفرضها (أو لا يفرضها).**
BATCH_UPDATE_PARAMSENABLE_FEATUREDISABLE_FEATURErepr() في Python، بحيث تدور التجزئات عبر السلسلة بشكل نظيف.MappingProxyType.مدرج البدائيات الخصوصية (جديد في v0.9.7):
services/infonet/privacy/contracts.py للتوقيعات الحلقية، العناوين السرية، التزامات Pedersen، براهين النطاق، ومطابقة DEX. صندوق privacy-core Rust هو هدف التكامل — لا يحتاج أي متصل بوحدة الخصوصية لمعرفة أي مخطط نشط.شبكة اختبار تجريبية — لا ضمان للخصوصية: رسائل InfoNet مبهمة لكنها ليست مشفرة من طرف إلى طرف. شبكة Mesh (Meshtastic/APRS) ليست خاصة — الإرسال اللاسلكي علني بطبيعته. عقود البدائيات الخصوصية مهيكلة لكنها غير موصولة بعد. لا ترسل أي شيء حساس على أي قناة. تعامل مع جميع المسارات كمسارات مفتوحة وعامة في الوقت الحالي.
مقتبسة من مجموعة الاستطلاع OSIRIS (MIT) مع نموذج الوكيل الخاص بـ ShadowBroker. الإسناد: backend/third_party/osiris/NOTICE.md.
مجموعة أدوات الاستطلاع (الشريط الجانبي الأيسر — مشغل محلي فقط):
us_ofac_sdn (CC-BY)؛ فحص متقاطع على كيانات WHOIS وسلاسل ISP/ORG الخاصة بـ IP/api/osint/sweep/scan يحدد الموقع الجغرافي لهدف /24–/32 ويوكل اكتشاف مضيف InternetDB الخاص بـ Shodan من جانب الخادم (المتصفح لا يتصل مباشرة بـ InternetDB)رسم بياني للكيانات — حدد أي كيان على الخريطة لفتح لوحة الرسم البياني للكيانات (GET /api/entity/expand). يحلل الطائرات، السفن، الشركات، الأشخاص، عناوين IP، والبلدان إلى رسم بياني للعقد/الصلات (استعلام Wikidata SPARQL + OFAC + مخزن الطيران/السفن في الذاكرة).
وصول OpenClaw / الوكيل — نفس تطبيقات الاستطلاع الخلفية متاحة على قناة أوامر HMAC (بدون بوابة المشغل المحلي للمتصفح): osint_lookup (استعلام IP/DNS/WHOIS/شهادات/BGP/عقوبات/CVE/MAC/GitHub/تسريبات/تهديدات سلبية)، entity_expand (رسم بياني للعلاقات)، و osint_sweep (فحص نشط للشبكة الفرعية — طبقة الوصول الكامل فقط). اكتب osint_tools لسرد أنواع الاستعلام المدعومة. حزمة المهارات: openclaw-skills/shadowbroker/ (SKILL.md + sb_query.py).
تراكب Shodan (بدون تغيير):
sar_pin_click) وتوجيه خريطة المشغل إلى أي مركز AOI (sar_focus_aoi) — مما يتيح سير عمل تعاوني للمحللين.frontend/public/data/submarine-cables.json). تراكب خط اختياري./api/cyber-threats ومفتاح الطبقة./api/country-risk.t.me/s/*) من تغذيات الحرب/OSINT القابلة للتكوين. دمج تدريجي كل ساعة (بدون إعادة كشط زائدة)، تقدير مخاطر الكلمات الرئيسية، أسماء الأماكن البديلة باللغات السيريلية/العربية، الترميز الجغرافي للمترو-المرتكز (منفصل عن مراكز الأخبار)، صور/فيديو مضمن عبر بروكسي /api/telegram/media. مفتاح الطبقة: telegram_osint.غزة
يكشف ShadowBroker عن قناة أوامر AI وكيل ثنائية الاتجاه — جسر موقع ومُقيد بالمستوى يمنح أي وكيل AI متوافق وصولًا كاملاً للقراءة/الكتابة إلى منصة الاستخبارات. OpenClaw هو الوكيل المرجعي، لكن القناة بروتوكول مفتوح: أي وكيل مدفوع بـ LLM يوقع الطلبات بـ HMAC-SHA256 (Claude Code, GPT, LangChain, عملاء Python/TypeScript مخصصون، أو التكامل الخاص بك) يمكنه الاتصال كمحلل يرى نفس البيانات التي يراها المشغل ويمكنه اتخاذ إجراءات على الخريطة. ShadowBroker لا يدمج LLM أو بيئة تشغيل وكيل أو أوزان نموذج — يوفر السطح؛ أنت تحضر الوكيل.
الإصدار v0.9.7 يحول ShadowBroker من لوحة معلومات يراقبها إنسان إلى سطح استخبارات يمكن لأي وكيل التصرف بناءً عليه.
نقل القناة (جديد في v0.9.7):
POST /api/ai/channel/command يقبل {cmd, args} ويوزع على أي أداة مسجلة.POST /api/ai/channel/batch يقبل حتى 20 أمرًا في طلب واحد. يعمل النهاية الخلفية عليها بشكل متزامن ويعيد خريطة نتائج موزعة. يقلل زمن استجابة الوكيل بدرجة كبيرة مقارنة بالاستدعاءات المتسلسلة.OPENCLAW_ACCESS_TIER يتحكم في الأوامر التي يمكن للوكيل استدعاؤها: restricted يكشف المجموعة للقراءة فقط، full يضيف عمليات الكتابة والحقن. نقطة نهاية الاكتشاف تعيد available_commands حتى يتمكن الوكيل من استكشاف قدراته الخاصة.HMAC-SHA256(secret, METHOD|path|timestamp|nonce|sha256(body)) مع حماية من إعادة التشغيل بواسطة الطابع الزمني + nonce وسلامة الطلب. يدعم الوضع المحلي (بدون تكوين) والوضع البعيد (وكيل على جهاز مختلف / VPS).القدرات:
get_summary → get_layer_slice مع since_layer_versions لكل طبقة (الدفع عبر SSE layer_changed يخبر الوكيل بالضبط أي الطبقات تم تحديثها). search_telemetry هو فهرس الكلمات الرئيسية عبر الطبقات على نمط Google. search_news يغطي الأخبار، GDELT، CrowdThreat، LiveUAMap، خطوط الجبهة، ومنشورات تيليجرام. entities_near, brief_area, find_flights/find_ships/find_entity, و correlate_entity تجيب على أسئلة مستهدفة دون سحبات متعددة الميغابايتات.osint_lookup يشغل نفس النهايات الخلفية المحمية بـ SSRF مثل لوحة الاستطلاع (ip, dns, whois, certs, bgp, sanctions, cve, mac, github, leaks, threats, sweep_init). entity_expand يبني رسوم بيانية لعلاقات Wikidata + OFAC. osint_sweep يشغل اكتشاف الشبكة الفرعية Shodan InternetDB (مستوى ). أسماء مستعارة للطبقات: , /, //, /, /.ربط وكيل: افتح لوحة AI Intel في الشريط الجانبي الأيسر، انقر Connect Agent، وانسخ السر HMAC. من هناك، وجه أي وكيل متوافق إلى القناة — بالنسبة لـ OpenClaw، استورد ShadowBrokerClient من openclaw-skills/shadowbroker/sb_query.py (انظر SKILL.md للأمثلة)؛ بالنسبة لأي وكيل آخر، استخدم نفس عقد HMAC الموثق أعلاه (طابع زمني + nonce + ملخص الجسم، مقيد بالمستوى). الاكتشاف: GET /api/ai/tools و GET /api/ai/capabilities. القناة هي البروتوكول، وليس الوكيل.
Docker Compose + وكلاء عن بعد: واجهة لوحة القيادة تتحدث إلى النهاية الخلفية عبر الجسر الخاص لـ Docker (موثوق تلقائيًا). وكيل OpenClaw يعمل على المضيف (خارج الحاوية) يضرب http://localhost:8000 من عنوان IP بوابة Docker — HMAC مطلوب هناك. في AI Intel → Connect Agent، انقر Bootstrap ثم Reveal، انسخ SHADOWBROKER_HMAC_SECRET في بيئة الوكيل الخاص بك، وأعد تشغيل النهاية الخلفية مرة واحدة حتى يتم تحميل data/openclaw.env على وحدة تخزين backend_data. اختبر الدخان باستخدام:```bash
export SHADOWBROKER_URL=http://127.0.0.1:8000
export SHADOWBROKER_HMAC_SECRET=
python openclaw-skills/shadowbroker/verify_hmac.py
استخدم منفذ الواجهة الخلفية (`:8000`)، وليس منفذ لوحة تحكم Next.js (`:3000`). يجب على الموقّعين اليدويين تجزئة وحدات بايت POST تماماً: `json.dumps(payload, separators=(",", ":"), sort_keys=True)`.
### ⏱️ آلة الزمن — تشغيل اللقطات (جديد في الإصدار v0.9.7)
ناقل وسائط جديد للتغذية الكاملة للتليمتري. تعامل مع الخريطة الحية كتسجيل يمكن تفريشه وإيقافه وإعادة تشغيله.
* **تبديل حي ↔ لقطة** — التبديل إلى وضع اللقطة يوقف حلقة الاستقصاء العالمية فوراً؛ العودة إلى الوضع الحي يبطل صلاحية ETags ويُعيد تحميل المستويات السريعة والبطيئة بالقوة بحيث تلحق لوحة التحكم بالركب دون وميض الإطارات القديمة.
* **فهرس الساعة** — كل لقطة مأخوذة مفهرسة وفق حاوية الساعة الخاصة بها مع `count`, `latest_id`, `latest_ts` وقائمة `snapshot_ids` الكاملة. انتقل إلى أي طابع زمني ملتقط مباشرة من أداة تفريش الخط الزمني.
* **استيفاء الإطارات** — الكائنات المتحركة (الطائرات، السفن، الأقمار الصناعية، الرحلات العسكرية) تستوفي بسلاسة بين الإطارات المسجلة أثناء التشغيل بحيث تبقى الحركة مستمرة حتى عندما تكون اللقطات متباعدة.
* **سرعة تشغيل متغيرة** — خطوة، تشغيل، تسريع، وإرجاع عبر التليمتري المحفوظ بسرعة قابلة للتعديل.
* **واعٍ للملف الشخصي** — كل لقطة تسجل ملف الخصوصية الذي كان نشطاً عند التقاطها، بحيث يكون التشغيل مطابقاً لما كان سيراه المُشغّل على ذلك الملف.
* **جانب المُشغّل وليس جانب الخادم** — اللقطات تُخزّن محلياً في الواجهة الخلفية؛ لا جهة ثالثة ترى خط التشغيل الزمني أبداً.
### 📦 لوحة مفاتيح API — توجيه المسار، للقراءة فقط (جديد في الإصدار v0.9.7)
الإعدادات ← مفاتيح API أصبحت الآن سجلاً للقراءة فقط. قيم المفاتيح لا تصل أبداً إلى عملية المتصفح — ولا حتى بادئة مبهمة. اللوحة تعرض:
* المسار المطلق لملف `.env` للواجهة الخلفية كما تم حله بواسطة `Path(__file__).resolve()` — يعمل على كل نظام تشغيل، كل قرص، كل موقع تثبيت (لينكس `/home/...`، ماك `/Users/...`، ويندوز على أي قرص، حاويات Docker، أجهزة VM السحابية).
* مؤشرات `[موجود]` / `[سيتم إنشاؤه عند أول حفظ]` / `[غير قابل للكتابة — حرره يدوياً]` على المسار نفسه.
* المسار لقالب `.env.example` ليتمكن المستخدمون من نسخه وتعبئة مفاتيحهم.
* شارة ثنائية `مُهيأ` / `غير مُهيأ` لكل مفتاح، بالإضافة إلى سطر بيئة قابل للنسخ (مثل `OPENSKY_CLIENT_ID=YOUR_VALUE`) يمكن للمستخدم وضعه في الملف يدوياً.
بيانات اعتماد OpenSky API أصبحت الآن مطلب بيئي **تحذيري حرج**: فحص بيئة البدء يشير إلى نقص بيانات اعتماد OAuth2 الخاصة بـ OpenSky بتحذير قوي، ورابط النافذة المنبثقة لتغيير السجلات يقود مباشرة إلى صفحة التسجيل المجانية. بدونها، تعود طبقة الرحلات الجوية إلى تغطية ADS-B فقط مع فجوات كبيرة في أفريقيا وآسيا وأمريكا اللاتينية.
</details>
---
<details>
<summary>🏗️ البنية المعمارية</summary>
يتكون ShadowBroker v0.9.7 من ثلاث طبقات عمودية — **واجهة المشغّل**، **طبقة خدمة الواجهة الخلفية**، و**الطبقة اللامركزية (InfoNet)** — بالإضافة إلى جسرين عرضيين (**آلة الزمن** و**قناة الذكاء الاصطناعي العاملة**، وهو البروتوكول الذي يتصل من خلاله OpenClaw وأي وكيل آخر متوافق) و**نواة الخصوصية** crate بلغة Rust التي تدعم الشبكة القديمة والعمل المستقبلي للعملة المحمية / DEX.```
╔═════════════════════════════════════════════════════════════════════════════╗
║ OPERATOR UI (Next.js + MapLibre) ║
║ ║
║ ┌────────────────┐ ┌──────────┐ ┌────────────────┐ ┌────────────────┐ ║
║ │ MapLibre GL │ │ NewsFeed │ │ Sovereign Shell│ │ Mesh Chat │ ║
║ │ WebGL render │ │ SIGINT │ │ Petitions / │ │ + Mesh Term. │ ║
║ │ + clusters │ │ GDELT │ │ Upgrades / │ │ (Infonet / │ ║
║ │ │ │ Threat │ │ Disputes / │ │ Mesh / │ ║
║ │ │ │ │ │ Gates / │ │ Dead Drop) │ ║
║ │ │ │ │ │ Bootstrap / │ │ │ ║
║ │ │ │ │ │ Function Keys │ │ │ ║
║ └──────┬─────────┘ └────┬─────┘ └────────┬───────┘ └────────┬───────┘ ║
║ │ │ │ │ ║
║ ┌──────┴─────────────────┴─────────────────┴───────────────────┴───────┐ ║
║ │ Time Machine ◀── snapshot playback ── snapshotMode toggle ──▶ Live │ ║
║ │ hourly index │ frame interpolation │ profile-aware │ per-tier ETag │ ║
║ └──────────────────────────────────┬───────────────────────────────────┘ ║
║ │ REST + /api/[...path] proxy ║
╠═════════════════════════════════════╪═══════════════════════════════════════╣
║ BACKEND SERVICE PLANE (FastAPI) ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Data Fetcher (APScheduler — fast / slow tiers) │ ║
║ │ │ ║
║ │ ┌───────────┬───────────┬───────────┬───────────┬───────────┐ │ ║
║ │ │ OpenSky* │ adsb.lol │ CelesTrak │ USGS │ AIS WS │ │ ║
║ │ │ Flights │ Military │ Sats │ Quakes │ Ships │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Carrier │ GDELT │ CCTV (12) │ DeepState │ NASA │ │ ║
║ │ │ Tracker │ Conflict │ Cameras │ Frontline │ FIRMS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ GPS │ KiwiSDR │ Shodan │ Amtrak │ SatNOGS │ │ ║
║ │ │ Jamming │ Radios │ Devices │ DigiTraf │ TinyGS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Volcanoes │ Weather │ Fishing │ Mil Bases │ IODA │ │ ║
║ │ │ Air Qual │ Alerts │ Activity │ PwrPlants │ Outages │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Sentinel │ MODIS │ VIIRS │ Data │ Meshtastic│ │ ║
║ │ │ Hub/STAC │ Terra │ Nightlts │ Centers │ APRS │ │ ║
║ │ ├───────────┴───────────┴───────────┴───────────┴───────────┤ │ ║
║ │ │ SAR (NEW v0.9.7) │ │ ║
║ │ │ Mode A: ASF Search catalog (free, no account) │ │ ║
║ │ │ Mode B: NASA OPERA / Copernicus EGMS / GFM / EMS / │ │ ║
║ │ │ UNOSAT ground-change anomalies (opt-in) │ │ ║
║ │ └───────────────────────────────────────────────────────────┘ │ ║
║ │ * OpenSky: REQUIRED for global flight coverage │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Snapshot Store (Time Machine source) │ ║
║ │ Hourly index │ per-snapshot layer manifest │ profile metadata │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌───────────────────────────────────────────────────────────────────────┐ ║
║ │ Agentic AI Channel (HMAC-SHA256, tier-gated — OpenClaw + others) │ ║
║ │ │ ║
║ │ POST /api/ai/channel/command → one tool call │ ║
║ │ POST /api/ai/channel/batch → up to 20 concurrent tool calls │ ║
║ │ │ ║
║ │ Tier: restricted (read-only) │ full (read + write + inject) │ ║
║ │ Auth: X-SB-Timestamp + X-SB-Nonce + X-SB-Signature │ ║
║ │ Sig = HMAC-SHA256(secret, METHOD|path|ts|nonce|sha256(body)) │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ DECENTRALIZED LAYER (InfoNet Testnet — signed events) ║
║ ║
║ ┌────────────────────────────┐ ┌──────────────────────────────────┐ ║
║ │ Mesh Hashchain │ │ Sovereign Shell Governance │ ║
║ │ │ │ │ ║
║ │ Ed25519 signed events │ │ Petitions (DSL: UPDATE_PARAM, │ ║
║ │ Public-key binding │ │ ENABLE_FEATURE …) │ ║
║ │ Replay / sequence guard │ │ Upgrade-Hash voting (80% / 40% │ ║
║ │ Two-tier finality │ │ quorum / 67% Heavy) │ ║
║ │ ├ Tier 1 (CRDT, fast) │ │ Resolution & Dispute markets │ ║
║ │ └ Tier 2 (epoch finality)│ │ Gate suspend / shutdown / appeal│ ║
║ │ Identity rotation │ │ Bootstrap eligible-node-1-vote │ ║
║ │ Constitutional invariants │ │ (Argon2id PoW, Heavy-Node only)│ ║
║ │ (MappingProxyType) │ │ Function Keys (5 of 6 pieces) │ ║
║ └─────────────┬──────────────┘ └─────────────┬────────────────────┘ ║
║ │ │ ║
║ └──────────────┬──────────────────┘ ║
║ │ ║
║ ┌────────────────────────────┴──────────────────────────────────────┐ ║
║ │ Wormhole / InfoNet Relay (transport layer) │ ║
║ │ Gate personas │ canonical signing │ Dead Drop epoch mailboxes │ ║
║ └───────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ PRIVACY CORE (Rust crate — locked Protocol contracts) ║
║ ║
║ privacy-core/ ─► Argon2id │ Ed25519/X25519 │ AESGCM │ HKDF ║
║ Ring sigs* │ Stealth addrs* │ Pedersen* │ Bulletproofs*║
║ Blind-sig issuance* (RSA / BBS+ / U-Prove / Idemix) ║
║ ║
║ * = locked Protocol contract; cryptographic primitive lands Sprint 11+ ║
╚═════════════════════════════════════════════════════════════════════════════╝
Distribution
────────────
GitHub (primary): ghcr.io/bigbodycobain/shadowbroker-{backend,frontend}
GitLab (mirror): registry.gitlab.com/bigbodycobain/shadowbroker/{backend,frontend}
Multi-arch: linux/amd64 + linux/arm64 (Raspberry Pi 5 supported)
Desktop: Tauri shell → packaged backend-runtime + Next.js frontend
| المصدر | البيانات | تكرار التحديث | مفتاح API مطلوب |
|---|
| OpenSky Network | الرحلات التجارية والخاصة | ~60s | نعم |
| adsb.lol | الطائرات العسكرية | ~60s | لا |
| aisstream.io | مواقع السفن (AIS) | WebSocket في الوقت الفعلي | نعم |
| CelesTrak | مواقع الأقمار الصناعية المدارية (TLE + SGP4) | ~60s | لا |
| USGS Earthquake | الأحداث الزلزالية العالمية | ~60s | لا |
| GDELT Project | أحداث الصراعات العالمية | ~6h | لا |
| DeepState Map | خطوط المواجهة في أوكرانيا | ~30min | لا |
| Shodan | البحث عن الأجهزة المتصلة بالإنترنت | عند الطلب | نعم |
| OpenSanctions | فهرس عقوبات OFAC SDN (استطلاع + رسم بياني للكيانات) | تخزين مؤقت لمدة 24 ساعة | لا |
| abuse.ch Feodo + URLhaus | عناوين URL للتحكم والتوزيع (C2) للبرامج الضارة | ~5 دقائق (طبقة اختيارية) | لا |
| CISA KEV | ثغرات CVE المعروفة المستغلة | ~5 دقائق (طبقة اختيارية) | لا |
| ip-api.com | تحديد الموقع الجغرافي لـ IP (استطلاع، رسم بياني للكيانات) | عند الطلب | لا |
| Google Public DNS | استعلامات DNS عبر HTTPS (استطلاع) | عند الطلب | لا |
| RDAP.org | بيانات تسجيل النطاق (استطلاع) | عند الطلب | لا |
| crt.sh | شفافية الشهادات (استطلاع) | عند الطلب | لا |
| bgpview.io | توجيه BGP/ASN (استطلاع) | عند الطلب | لا |
| TeleGeography (static) | طرق الكابلات البحرية | ثابت | لا |
| ASFINAG | كاميرات الويب للطرق السريعة في النمسا | ~10min | لا |
| Amtrak | مواقع القطارات الأمريكية | ~60s | لا |
| DigiTraffic | مواقع السكك الحديدية الأوروبية | ~60s | لا |
| Global Fishing Watch | أحداث نشاط سفن الصيد | ~1 ساعة | نعم (GFW_API_TOKEN) |
| Telegram public previews | منشورات قنوات الحرب/الاستخبارات مفتوحة المصدر (telegram_osint) | ~1 ساعة | لا (اختياري TELEGRAM_OSINT_CHANNELS) |
| Transport for London, NYC DOT, TxDOT | كاميرات المراقبة (المملكة المتحدة، الولايات المتحدة) | ~10min | لا |
| Caltrans, WSDOT, GDOT, IDOT, MDOT | كاميرات المراقبة (5 ولايات أمريكية) | ~10min | لا |
| Spain DGT, Madrid City | كاميرات المراقبة (إسبانيا) | ~10min | لا |
| Singapore LTA | كاميرات المرور في سنغافورة | ~10min | نعم |
| Windy Webcams | كاميرات الويب العالمية | ~10min | لا |
| SatNOGS | محطات أرضية للأقمار الصناعية هواة | ~30min | لا |
| TinyGS | محطات أرضية للأقمار الصناعية LoRa | ~30min | لا |
| Meshtastic MQTT | مواقع عقد الراديو الشبكية | في الوقت الفعلي | لا |
| APRS-IS | مواقع الراديو الهواة | TCP في الوقت الفعلي | لا |
| KiwiSDR | مواقع مستقبلات SDR العامة | ~30min | لا |
| OpenMHZ | خلاصات ماسحات الشرطة/الإطفاء | في الوقت الفعلي | لا |
| Smithsonian GVP | البراكين الهولوسينية في جميع أنحاء العالم | ثابت (مخبأ) | لا |
| OpenAQ | محطات جودة الهواء PM2.5 | ~120s | لا |
| NOAA / NWS | تنبيهات الطقس القاسي والمضلعات | ~120s | لا |
| WRI Global Power Plant DB | أكثر من 35,000 محطة طاقة | ثابت (مخبأ) | لا |
| Military base datasets | المنشآت العسكرية العالمية | ثابت (مخبأ) | لا |
| NASA FIRMS | النقاط الساخنة للحريق/الحرارية من NOAA-20 VIIRS | ~120s | لا |
| NOAA SWPC | مؤشر Kp للطقس الفضائي والأحداث الشمسية | ~120s | لا |
| IODA (Georgia Tech) | تنبيهات انقطاع الإنترنت الإقليمية | ~120s | لا |
| DC Map (GitHub) | مواقع مراكز البيانات العالمية | ثابت (مخبأ لمدة 7 أيام) | لا |
| NASA GIBS | صور الأقمار الصناعية اليومية MODIS Terra | يوميًا (تأخير 24-48 ساعة) | لا |
| Esri World Imagery | خريطة أساس عالية الدقة من الأقمار الصناعية | ثابت (يتم تحديثه دوريًا) | لا |
| MS Planetary Computer | مشاهد Sentinel-2 L2A (النقر بالزر الأيمن) | عند الطلب | لا |
| Copernicus CDSE | صور Sentinel Hub (API المعالجة) | عند الطلب | نعم (مجاني) |
| VIIRS Nightlights | كشف تغير الضوء الليلي | ثابت | لا |
| RestCountries | بيانات ملفات الدول | عند الطلب (مخبأ لمدة 24 ساعة) | لا |
| Wikidata SPARQL | بيانات رؤساء الدول | عند الطلب (مخبأ لمدة 24 ساعة) | لا |
| Wikipedia API | ملخصات المواقع وصور الطائرات | عند الطلب (مخبأ) | لا |
| OSM Nominatim | الترميز الجغرافي لأسماء الأماكن (شريط LOCATE) | عند الطلب | لا |
| CARTO Basemaps | بلاط خريطة داكن | مستمر | لا |
الخصوصية والتدقيق للبيانات الصادرة (#348–#366): كل تثبيت مستضاف ذاتيًا يستخدم عنوان IP الخاص بالخادم ومعرف User-Agent الخاص بالتثبيت. راجع docs/OUTBOUND_DATA.md لمعرفة ما يتصل بأطراف ثالثة، وعناصر التحكم الاختيارية/البيئية، والمقايضات المقبولة (CCTV Referer، basemap CDN، LiveUAMap، إلخ).
.```powershell
py -m pip install --user podman-compose podman-compose pull podman-compose up -d
إذا كنت في شل متوافق مع bash، يمكن للغلاف المرفق الكشف تلقائياً عن Docker أو Podman:```bash
./compose.sh --engine podman pull
./compose.sh --engine podman up -d
volumes: backend_data:
> **كيف يعمل:** يقوم الحاوية الأمامية (frontend) بتوجيه جميع طلبات `/api/*` عبر خادم Next.js إلى `BACKEND_URL` باستخدام الشبكة الداخلية لـ Docker. المتصفح يتواصل فقط مع المنفذ 3000. المنفذ المضيف للخلفية مخصص للوصول المحلي للـ API والتصحيح، ويمكن تغييره باستخدام `BACKEND_PORT=8001` دون تغيير `BACKEND_URL`.
>
> `BACKEND_URL` هو متغير بيئة تشغيل عادي (ليس `NEXT_PUBLIC_*` وقت البناء)، لذا يمكنك تغييره في Portainer أو Uncloud أو أي محرر compose دون إعادة بناء الصورة. قم بتعيينه إلى العنوان الذي يمكن الوصول إليه من الخلفية داخل شبكة Docker (مثل `http://backend:8000` أو `http://192.168.1.50:8000`).
</details>
---
<details>
<summary>📦 بداية سريعة (بدون حاجة لبرمجة)</summary>
إذا كنت ترغب فقط في تشغيل لوحة التحكم دون التعامل مع أوامر الطرفية:
1. انتقل إلى علامة التبويب **[Releases](https://raw.githubusercontent.com/bigbodycobain/releases)** على الجانب الأيمن من صفحة هذا المستودع.
2. قم بتنزيل أحدث ملف `.zip` من الإصدار.
3. استخرج المجلد إلى جهاز الكمبيوتر الخاص بك.
4. **نظام ويندوز:** انقر نقرًا مزدوجًا على `start.bat`.
**نظام ماك/لينكس:** افتح الطرفية، اكتب `chmod +x start.sh`، ثم `dos2unix start.sh`، وقم بتشغيل `./start.sh`.
5. سيقوم تلقائيًا بتثبيت كل شيء وتشغيل لوحة التحكم!
ملاحظات المشغل المحلي:
- `start.bat` / `start.sh` run the app without Docker — يقومان بتثبيت التبعيات وتشغيل كلا الخادمين مباشرة.
- إذا فشلت نقاط نهاية هوية Wormhole أو اتصالات DM بعد الترقية، تحقق من مجلد `docs/mesh/` لاستكشاف الأخطاء وإصلاحها.
- لنشر شاهد جذر DM والشفافية ومراقبة المشغل، ابدأ بـ `docs/mesh/wormhole-dm-root-operations-runbook.md`.
- لنماذج أصول جسر عمليات جذر DM، انظر أيضًا `scripts/mesh/poll-dm-root-health-alerts.mjs`، `scripts/mesh/export-dm-root-health-prometheus.mjs`، `scripts/mesh/publish-external-root-witness-package.mjs`، `scripts/mesh/smoke-external-root-witness-flow.mjs`، `scripts/mesh/smoke-root-transparency-publication-flow.mjs`، `scripts/mesh/smoke-dm-root-deployment-flow.mjs`، `scripts/mesh/sync-dm-root-external-assurance.mjs`، و `docs/mesh/examples/`.
</details>
---
<details>
<summary>💻 إعداد المطور</summary>
إذا كنت ترغب في تعديل الكود أو التشغيل من المصدر:
#### المتطلبات الأساسية
* **Node.js** 18+ و **npm** — [nodejs.org](https://nodejs.org/)
* **Python** 3.10 أو 3.11 أو 3.12 مع `pip` — [python.org](https://www.python.org/downloads/) (**تحقق من "Add to PATH"** أثناء التثبيت)
* ⚠️ قد يواجه Python 3.13+ مشاكل توافق مع بعض التبعيات. **يوصى باستخدام 3.11 أو 3.12.**
* مفاتيح API لـ: `aisstream.io` (مطلوب)، واختياريًا `opensky-network.org` (OAuth2)، `lta.gov.sg`
### التثبيت
</details>```bash
# Clone the repository
git clone https://github.com/BigBodyCobain/Shadowbroker.git
cd Shadowbroker
# Backend setup
cd backend
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux
pip install .
# Optional helper scripts (creates venv + installs dev deps)
# Windows PowerShell
# .\backend\scripts\setup-venv.ps1
# macOS/Linux
# ./backend/scripts/setup-venv.sh
# Optional env check (prints warnings for missing keys)
# Windows PowerShell
# .\backend\scripts\check-env.ps1
# macOS/Linux
# ./backend/scripts/check-env.sh
# Create .env with your API keys
echo "AIS_API_KEY=your_aisstream_key" >> .env
echo "OPENSKY_CLIENT_ID=your_opensky_client_id" >> .env
echo "OPENSKY_CLIENT_SECRET=your_opensky_secret" >> .env
# Frontend setup
cd ../frontend
npm ci
npm run dev
* **Next.js** الواجهة الأمامية على `http://localhost:3000`
* **FastAPI** الواجهة الخلفية على `http://localhost:8000`
### Pre-commit (اختياري)
إذا كنت تستخدم pre-commit، فقم بتثبيت الخطافات مرة واحدة من جذر المستودع:```bash
pre-commit install
يمكنك إدخال بيانات السفن AIS الخاصة بك إلى ShadowBroker باستخدام دونجل RTL-SDR و AIS-catcher، وهو محلل AIS مفتوح المصدر. يمنحك هذا تغطية فورية للسفن في منطقتك المحلية — لا حاجة لمفتاح API.
docker run --rm -it --device /dev/bus/usb ghcr.io/jvde-github/ais-catcher:latest
``` ```bash
docker run -d --device /dev/bus/usb \
ghcr.io/jvde-github/ais-catcher -H http://host.docker.internal:4000/api/ais/feed interval 10
يقوم AIS-catcher بفك تشفير إشارات الراديو VHF على الترددات 161.975 ميجاهرتز و 162.025 ميجاهرتز ويُرسل بيانات السفن المفكوكة إلى ShadowBroker كل 10 ثوانٍ. تظهر السفن التي يتم اكتشافها بواسطة هوائي SDR الخاص بك بجانب بث AIS العالمي.
Docker (ARM/Raspberry Pi): راجع docker-shipfeeder للحصول على صورة Docker جاهزة للإنتاج ومحسّنة لـ ARM.
ملاحظة: يعتمد مدى AIS على هوائك — عادةً 20-40 ميلًا بحريًا بإعدادات أساسية، و 60+ ميلًا بحريًا باستخدام هوائي VHF بحري على ارتفاع.
| الطبقة | الافتراضي | الوصف |
|---|
| الرحلات الجوية التجارية | ✅ نشط | شركات الطيران، والشحن، والطائرات العامة |
| الرحلات الجوية الخاصة | ✅ نشط | الطائرات الخاصة غير التجارية |
| الطائرات الخاصة الفاخرة | ✅ نشط | طائرات رجال الأعمال عالية القيمة مع بيانات المالك |
| الرحلات الجوية العسكرية | ✅ نشط | الطائرات العسكرية والحكومية |
| الطائرات المتعقبة | ✅ نشط | قائمة مراقبة ذات اهتمام خاص |
| تشويش GPS | ✅ نشط | مناطق تدهور NAC-P |
| حاملات / عسكرية / شحن | ✅ نشط | حاملات البحرية، وسفن الشحن، والناقلات |
| السفن المدنية | ✅ نشط | اليخوت، وصيد الأسماك، والترفيهية |
| رحلات بحرية / ركاب | ✅ نشط | سفن الرحلات البحرية والعبارات |
| اليخوت المتعقبة | ✅ نشط | اليخوت الفاخرة للأثرياء وأقطاب الأعمال |
| نشاط الصيد | ✅ نشط | أحداث سفن صيد الأسماك من Global Fishing Watch |
| القطارات | ✅ نشط | مواقع Amtrak + السكك الحديدية الأوروبية |
| الأقمار الصناعية | ✅ نشط | الأصول المدارية حسب نوع المهمة |
| SatNOGS | ✅ نشط | محطات أرضية للهواة للأقمار الصناعية |
| TinyGS | ✅ نشط | محطات أرضية للأقمار الصناعية LoRa |
| الزلازل (24 ساعة) | ✅ نشط | أحداث الزلازل من USGS |
| بؤر الحرائق (24 ساعة) | ✅ نشط | الشذوذات الحرارية VIIRS من NASA FIRMS |
| البراكين | ✅ نشط | براكين حقبة الهولوسين من Smithsonian |
| تنبيهات الطقس | ✅ نشط | مضلعات الطقس القاسي |
| جودة الهواء (PM2.5) | ✅ نشط | محطات OpenAQ في جميع أنحاء العالم |
| خط المواجهة في أوكرانيا | ✅ نشط | مواقع خطوط الحرب الحية |
| إنذارات جوية أوكرانيا | ✅ نشط | إنذارات الغارات الجوية الإقليمية |
| الحوادث العالمية | ✅ نشط | أحداث النزاعات من GDELT |
| شبكة CCTV | ✅ نشط | أكثر من 11,000 كاميرا عبر 13 مصدرًا في 6 دول |
| انقطاعات الإنترنت | ✅ نشط | تنبيهات الاتصال الإقليمية من IODA |
| مراكز البيانات | ✅ نشط | مواقع مراكز البيانات العالمية (أكثر من 2,000) |
| القواعد العسكرية | ✅ نشط | المنشآت العسكرية العالمية |
| أجهزة استقبال KiwiSDR | ✅ نشط | أجهزة استقبال راديو SDR عامة |
| عُقد Meshtastic | ✅ نشط | مواقع عُقد شبكة الميش اللاسلكية |
| APRS | ✅ نشط | تحديد المواقع عبر الراديو للهواة |
| الماسحات الضوئية | ✅ نشط | تغذية ماسحات ضوئية للشرطة/الإطفاء |
| دورة النهار / الليل | ✅ نشط | تراكب خط الفاصل الشمسي |
| MODIS Terra (يوميًا) | ❌ معطل | صور الأقمار الصناعية اليومية من NASA GIBS |
| قمر صناعي عالي الدقة | ❌ معطل | صور الأقمار الصناعية دون المترية من Esri |
| Sentinel Hub | ❌ معطل | واجهة برمجة تطبيقات معالجة Copernicus CDSE |
| أضواء الليل VIIRS | ❌ معطل | كشف تغير الإضاءة الليلية |
| محطات الطاقة | ❌ معطل | أكثر من 35,000 محطة طاقة عالمية |
| تراكب Shodan | ❌ معطل | نتائج بحث أجهزة الإنترنت |
| اتجاهات الشحن البري | ❌ معطل | اتجاهات حركة الشاحنات عبر Sentinel-2 على الطرق السريعة الرئيسية (حلل هنا) |
| كابلات تحت سطح البحر | ❌ معطل | طرق الكابلات البحرية العالمية (GeoJSON ثابت) |
| C2 للبرامج الضارة | ❌ معطل | نقاط التهديد من abuse.ch Feodo + URLhaus |
| موردو SCM | ❌ معطل | علامات مخاطر سلسلة التوريد من المستوى 1/2 + تنبيهات اللوحة |
| التهديدات الإلكترونية | ❌ معطل | إدخالات CISA KEV الأخيرة (إحصائيات في الحمولة البطيئة) |
| Telegram OSINT | ✅ نشط | قنوات Telegram عامة للحرب/OSINT — كشط كل ساعة، دبابيس جغرافية |
| SAR | ✅ نشط | كتالوج الرادار ذو الفتحة الاصطناعية + تنبيهات الشذوذ |
أدوات الاستطلاع والكيانات (ليست طبقات خريطة — الشريط الجانبي الأيسر / التحديد):
| الأداة | الوصول إلى لوحة التحكم | أمر OpenClaw | الوصف |
|---|---|---|---|
| مجموعة أدوات الاستطلاع | مشغل محلي (/api/osint/*) | osint_lookup, osint_sweep† | IP، DNS، WHOIS، الشهادات، BGP، العقوبات، CVE، MAC، GitHub، التسريبات، التهديدات، مسح الشبكة الفرعية |
| رسم بياني للكيانات | مشغل محلي (/api/entity/expand) | entity_expand | رسم بياني للعلاقات من Wikidata + OFAC + المخزن المباشر |
| لوحة مخاطر SCM | مشغل محلي (/api/scm-suppliers) | get_layer_slice(["scm_suppliers"]) | تجميع تهديدات الموردين + علامات الخريطة |
| اكتشاف الأداة | — | osint_tools | يسرد أنواع البحث الاستطلاعي ومخططات توسيع الكيانات |
† osint_sweep (فحص InternetDB نشط) يتطلب OPENCLAW_ACCESS_TIER=full.
</details>
---
<details>
<summary>🔑 متغيرات البيئة</summary>
### الواجهة الخلفية (`backend/.env`)```env
# Required for airplane telemetry (NEW in v0.9.7 — startup env check flags these as critical)
# Free registration: https://opensky-network.org/index.php?option=com_users&view=registration
OPENSKY_CLIENT_ID=your_opensky_client_id # OAuth2 — global flight state vectors
OPENSKY_CLIENT_SECRET=your_opensky_secret # OAuth2 — paired with Client ID above
# Optional (enhances data quality)
AIS_API_KEY=your_aisstream_key # Maritime vessel tracking (aisstream.io) — ships layer empty without it
LTA_ACCOUNT_KEY=your_lta_key # Singapore CCTV cameras
SHODAN_API_KEY=your_shodan_key # Shodan device search overlay
SH_CLIENT_ID=your_sentinel_hub_id # Copernicus CDSE Sentinel Hub imagery
SH_CLIENT_SECRET=your_sentinel_hub_secret # Paired with Sentinel Hub Client ID
MESH_SAR_EARTHDATA_USER= # NASA Earthdata user (SAR Mode B — OPERA products)
MESH_SAR_EARTHDATA_TOKEN= # NASA Earthdata token (paired with user above)
MESH_SAR_COPERNICUS_USER= # Copernicus Data Space user (SAR Mode B — EGMS / EMS)
MESH_SAR_COPERNICUS_TOKEN= # Copernicus token (paired with user above)
OPENCLAW_ACCESS_TIER=restricted # OpenClaw agent tier: "restricted" (read-only) or "full"
# OPENCLAW_HMAC_SECRET= # Optional; UI Bootstrap persists to data/openclaw.env in Docker
GFW_API_TOKEN=your_gfw_token # Global Fishing Watch — fishing_activity layer (Settings → Maritime)
TELEGRAM_OSINT_ENABLED=true # Telegram OSINT layer (default on)
TELEGRAM_OSINT_CHANNELS=osintdefender,... # Comma-separated public channel slugs (see .env.example)
# Private-lane privacy-core pinning (required when Arti or RNS is enabled)
PRIVACY_CORE_MIN_VERSION=0.1.0
PRIVACY_CORE_ALLOWED_SHA256=your_privacy_core_sha256
# Optional override if you load a non-default shared library path
PRIVACY_CORE_LIB=
عندما يكون MESH_ARTI_ENABLED=true أو MESH_RNS_ENABLED=true، فإن بدء تشغيل الخلفية يفشل الآن بشكل مغلق ما لم يُبلغ الأرتيفكت privacy-core المُحمّل عن إصدار قابل للتحليل يكون مساويًا أو أعلى من PRIVACY_CORE_MIN_VERSION ويتطابق مع أحد التجزئات في PRIVACY_CORE_ALLOWED_SHA256.
قم بتوليد التجزئة من الأرتيفكت الذي تنوي شحنه:```powershell Get-FileHash .\privacy-core\target\release\privacy_core.dll -Algorithm SHA256
## 🌀 القصة```bash
sha256sum ./privacy-core/target/release/libprivacy_core.so
ثم تأكد من أن المصادقة GET /api/wormhole/status أو GET /api/settings/wormhole-status تظهر نفس privacy_core.version و privacy_core.library_path و privacy_core.library_sha256.
| المتغير | مكان الإعداد | الغرض |
|---|---|---|
BACKEND_URL | environment في docker-compose.yml، أو متغيرات البيئة shell | عنوان URL الذي يستخدمه خادم Next.js لتوكيل استدعاءات API إلى الخلفية. القيمة الافتراضية هي http://backend:8000. متغير تشغيلي — لا حاجة لإعادة البناء. |
BACKEND_PORT | ملف .env في جذر المستودع أو متغيرات البيئة shell قبل docker compose up | منفذ المضيف المستخدم لفضح واجهة API الخلفية للتشخيص المحلي. القيمة الافتراضية هي 8000؛ قم بتعيين BACKEND_PORT=8001 إذا كان المنفذ 8000 مستخدمًا بالفعل. لا يغير BACKEND_URL الداخلي لـ Docker. |
كيفية العمل: تقوم الواجهة الأمامية بتوكيل جميع طلبات /api/* عبر خادم Next.js إلى BACKEND_URL باستخدام الشبكة الداخلية لـ Docker. المتصفحات تتحدث فقط مع المنفذ 3000؛ منفذ المضيف للخلفية مخصص فقط للتشخيص المحلي. للتطوير المحلي بدون Docker، القيمة الافتراضية لـ BACKEND_URL هي http://localhost:8000.
| من | ماذا | PR |
|---|
| @Alienmajik | دعم Raspberry Pi 5 — حزم ARM64، ملاحظات النشر بدون واجهة، ضبط وقت التشغيل لأجهزة فئة Pi | — |
| @wa1id | إصلاح استيراد CCTV — SQLite متعدد الخيوط، قاعدة بيانات دائمة، ترطيب بدء التشغيل، قابلية النقر على العناقيد | #92 |
| @AlborzNazari | مصادر DGT إسبانيا + CCTV مدريد، تصدير معلومات التهديدات STIX 2.1 | #91 |
| @adust09 | طبقة محطات الطاقة، تغطية استخبارات شرق آسيا (قواعد JSDF، إثراء ICAO، أخبار تايوان، تصنيف عسكري) | #71, #72, #76, #77, #87 |
| @Xpirix | تحسينات في نمط وتفاعل LocateBar | #78 |
| @imqdcr | تقسيم تبديل السفن (4 فئات) + معرفات كيانات MMSI/إشارة نداء مستقرة | — |
| @csysp | تنبيهات تهديد قابلة للإزالة + معرفات كيانات مستقرة لـ GDELT والأخبار | #48, #63 |
| @suranyami | بنى Docker متعددة المعمارية الموازية (11 دقيقة → 3 دقائق) + إصلاح BACKEND_URL وقت التشغيل | #35, #44 |
| @chr0n1x | بنية مخطط Kubernetes / Helm للنشر عالي التوفر | — |
telegrammalwarebotnetcybercisakevscmsuppliersgfwfishing