2026-09-26 — يوم معالجة اختراق GCP + تدوير مفاتيح Phase 0 (جلسة طويلة مع د. وائل)
🔴 الحادثة الأساسية — اختراق Google Cloud (استغلال مفتاح Gemini مسرّب)
- ما حدث: 5× دفعات $20 (=$100) على Visa ••••7009 في 2026-09-25 (01:43–02:57 GMT+3) على Google Cloud / Generative Language API. رموز CLOUD: GFNTGW · BHPS4Q · B2Zv4L · 4Z7NQN · 9P3ZNR.
- الآلية: Auto-Reload ($20 عند نزول الرصيد تحت $5) + مفتاح مسرّب بلا قيود → المهاجم استنزف الرصيد في حلقة 5× حتى أوقفه الحدّ اليومي لـAutoReload من Google.
- المفتاح المسرّب:
GEMINI_API_KEY=AIzaSyBi67yBONJu...ED8o(UIDeb2619cd-3655-4b32-9fd7-5bb2240eaf14)، أُنشئ مارس 2026، مشروعgen-lang-client-0157629696(رقم المشروع 743506418630). - الأصل (مؤكّد 100%): من اختراق ثغرة Hermes أغسطس 2026 — المفتاح موجود في السطر 208 من ملف تسريب الهاكر (الملف الذي أرسله «safe» وحوّله د. وائل، في
media/inbound/openclaw-staged-/Wael---.txt) + فيsecrets/hermes.envونسخه الاحتياطية. - التحييد (مُثبَت حيّاً HTTP 403): Google رفض حذف المفتاح مباشرةً («used in last 7 days» = دليل إضافي على الهجوم) → استخدمتُ REST API بـ
check_existing_usage=SKIPلقفله علىserviceusage.googleapis.comفقط + IP مستحيل192.0.2.1(RFC-5737). أي نداء Gemini بالمفتاح الآن → 403 PERMISSION_DENIED. النزيف توقّف من الجذر.
🌍 أدلة الاحتيال (للـ dispute)
- عدم تطابق جغرافي: النداءات من هولندا (مقر د. وائل الكويت، سيرفرنا فرنسا 76.13.41.228).
- نمط آلي: ~4,032 طلب في ~ساعتين على gemini-3.1-pro.
- billing account:
01EE52-A9A8C1-2D5789· payments profile4087-2621-0423. - الـ dispute: لا يمكن آلياً (Basic support tier يرفض إنشاء case عبر API — «not eligible with this channel»؛ لا endpoint لنزاعات مالية في Cloud Billing API — سياسة أمان). المسار الوحيد = يدوي عبر console/بنك. الرسائل جاهزة:
memory/gcp_dispute_20260926/DISPUTE_LETTER_EN.md+_AR.md. د. وائل قال سنعملها معاً عند اللابتوب لاحقاً.
🔑 استراتيجية د. وائل النهائية (خط أحمر — قراره):
- ❌ لا قيود IP على المفاتيح (يكسر مساعداته/مشاريعه/CLIs الأخرى من IPs مختلفة).
- ❌ لا تعطيل Auto-Reload (يفيد الترسانة + المشاريع).
- ✅ الحل = تدوير/قتل المفاتيح المسرّبة فقط (قطع الجذر) — أفضل طريقة احترافية.
- ✅ توصيتي المقبولة: daily budget cap فوق الاستخدام الطبيعي كطبقة أمان صامتة (لم تُنفّذ بعد).
📊 حصر التسريب (مقارنة حرفية بـ env.sh الحيّ):
- 79 مفتاح API لم يُدوَّر (قيمته المسرّبة = القيمة الحيّة الحالية) + 23 مُدوَّر آمن.
- 🔴 درس مصداقية (M-119 style): أول تحليل قال «85 غير مدوّر» بمطابقة
if v in env(substring) → false positives. المطابقة الصحيحة = مقارنة القيمة الكاملة الدقيقة لكل متغيّر. المُدوَّرة فعلاً (آمنة): ANTHROPIC · OPENAI · XAI · OPENROUTER · UNCENSORED · QWEN · RUNWAY · ZEP · ZAI · Gemini(اليوم) · Hedra · Higgsfield · fal · Kilo. صحّحتُ العدد صراحةً لد. وائل (79/23). - الحصر الكامل محفوظ:
memory/gcp_dispute_20260926/(INVENTORY + REMEDIATION_PLAN.md). - 12 سرّ غير-مفتاح ما زال حيّاً (أخطر من المفاتيح): الباسورد الموحّد
Ahmmad1977@· Google OAuth refresh · GOCSPX web client · R2 keys · CF tokens · Discord token · e-DevletChessmaster3000$· GOGopenclaw2026· CouchDB · NordVPN · Studio Admin Token · SSH host key (يحتاج تأكيد تدوير) + بيانات شخصية (T.C. 47066018990، أرقام هواتف).
🎯 ملف الهاكر «safe» (screenshot #63682):
- CVSS 3.1 = 9.8 Critical. يدّعي تسريب: Telegram session · OpenAI/Anthropic/Cloudflare keys · OAuth tokens. كل ادعاءاته طابقت حصري بالضبط = تحقّق متبادل. (طلب فدية محتمل — حذّرتُ د. وائل استراتيجياً.)
✅ Phase 0 — التدوير المنفّذ اليوم (الأولوية القصوى):
منهج كل بند (أمر د. وائل الصريح): أعطيه الرابط أولاً → نولّد معاً خطوة-خطوة → آخذ القيمة → أختبرها حيّاً قبل replace → replace في كل الطبقات + backup → أختبر 100% → أؤكّد موت القديم → أوثّق → البند التالي. ❌ لا «ولّد جديد» بل «الرابط ثم معاً».1. ✅ R2 keys (مكتمل): الجديد db777de0ab898c0dc75d697b383a2ade (Object R&W، اسم "R2 New Account Token")، secret 12f3eacf...d7c8، endpoint 1cd608e574c1e6a45c82a49232980126.r2.cloudflarestorage.com. مُختبَر حيّاً (PUT/GET/DELETE 200؛ ListBuckets 403 طبيعي لـObject R&W). استُبدل في env.sh + gpu_restore.sh + weekly_snapshot_and_email.sh. القديم kiloclaw-r2 (Admin R&W، May 9) حذفه د. وائل → مُثبَت ميت HTTP 401.
- 🔴 قرار: أبقيناه Object R&W (لا Admin) — Admin يضيف فقط create/delete/list buckets + CORS/Lifecycle (لا نستخدمها). لا علاقة لـR2 بربط CF pages/DNS (ذلك = cfut token).
2. ✅ Cloudflare API token (مكتمل): وحّدنا على token واحد cf-openclaw-master-2026-09 = cfut_ZelSOIHPDo0b2d8DOykkzqto12UUccVO8b3ygA0p7b95419f بصلاحيات admin كاملة (21-22 capability HTTP 200، DNS Edit + Pages + Tunnel + Access + Workers + KV + R2 + LB + Firewall...). استُبدل في env.sh (CLOUDFLARE_API_TOKEN + CLOUDFLARE_ZONE_TOKEN) + /docker/traefik/.env (CF_DNS_API_TOKEN). Traefik أُعيد تشغيله → ACME/DNS-01 يعمل، portal 200، certs valid. د. وائل حذف كل التوكنات القديمة (Gnrl + 2× Edit zone DNS) → مُثبَت: master يعمل على الـspecific zone drwaelalkishawi.com (DNS read/write/delete 200).
- cfk_ Global API Key الجديد cfk_UfyWRmhvw4YjHbF4dV5okA86sL0uuDOmfLFK1ESe5995f548 = د. وائل دوّره، محفوظ للطوارئ فقط في secrets/.cf_global_api_key (600، ليس في env.sh النشط).
- 🔴 درس: تحرير صلاحيات token في CF لا يغيّر قيمته. الـHTTP 400 «Invalid format for Authorization header» = whitespace في الـheredoc → الحل: .strip() أو كتابة القيمة لملف ثم قراءتها.
3+4. ✅ Google OAuth (مكتمل — Client Secret + Refresh Token): المشروع الصحيح gemini-restored-project (gen-lang-client-0157629696)، OAuth client «hostopenclaw web» (743506418630-nte2phpnnjabasqdkqgqbi4qfpr69n8b، Web app).
- Client Secret الجديد: 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 (عبر "+ Add secret" في UI الجديد — لا "Reset Secret").
- Refresh Token الجديد المُوسّع: عبر OAuth Playground (redirect developers.google.com/oauthplayground مُعرّف مسبقاً). استُبدل الاثنان في env.sh. د. وائل حذف الـsecret القديم (…Djng، May 24).
- 22 scope مُوسّعة (أمر د. وائل: أضف كل شيء مرة واحدة): Gmail(mail.google.com) · Calendar(+events) · Drive · Docs · Sheets · Slides(presentations) · Forms.body · YouTube(+upload+force-ssl) · yt-analytics · Contacts · Tasks · Photos(photoslibrary) · Blogger · cloud-platform · generative-language.retriever · userinfo(email+profile) · openid.
- مُختبَر حيّاً 12/13 يعمل 200: Gmail read/send · Calendar · Drive · Docs · Sheets · Forms · YouTube · YT-Analytics · Contacts · Tasks · Blogger · CloudPlatform + gmail_helper.py يعمل E2E.
- 🔴 قيدان دائمان من Google (لا حلّ لنا): (أ) Keep = Workspace-only، يرفض consumer Gmail بـ invalid_scope → أُزيل من القائمة. (ب) Photos = deprecated لـ3rd-party 2025 (photoslibrary صار app-created-media فقط) → 403 دائم. البديل = المتصفّح السيادي.
- 15 Google API فُعّلت في المشروع استباقياً (drive/docs/sheets/slides/forms/youtube/youtubeanalytics/people/tasks/photoslibrary/blogger/cloudresourcemanager/generativelanguage/calendar/gmail).
5. ⏳ Discord Bot Token (جارٍ — آخر بند Phase 0): DISCORD_BOT_TOKEN في env.sh سطر 270 (+APP_ID 271 + PUBLIC_KEY 272، فقط في env.sh). د. وائل أرسل فيديو أن لا يوجد "Reset Token" — لأنه كان على صفحة General Information لا صفحة Bot. أرشدته للضغط على "Bot" في الشريط الجانبي (application id 1511133066092643038). بانتظار التوكن الجديد.
🇺🇸 الحساب الأمريكي vs المحلي (Google):
- US = API-key-only (لا OAuth account منفصل — الـOAuth الذي أمّنّاه هو الحساب الوحيد). ليس مسرّباً، لا تدوير عاجل.
- US = Local = 61 نموذج Gemini متطابق تماماً، صفر فرق قدرات. US = مجرّد مسار جغرافي بديل (Imagen 4 يعمل US حصراً).
- NotebookLM/Whisk/Flow/Jules/Stitch/Opal/إلخ = UI-only بلا API → عبر المتصفّح السيادي فقط (جاهز).
🖥️ الحاوية السيادية (chrome-sovereign): مُتحقَّق تعمل بعد كل تغييرات اليوم (Up 5 days، CDP 200، gluetun-tr healthy) = الطبقة الاحتياطية الإضافية كما أمر د. وائل.
📋 المتبقّي بعد Phase 0 (الخطة الكاملة في memory/gcp_dispute_20260926/REMEDIATION_PLAN.md):
- Phase 1 (كلمات مرور): الباسورد الموحّد → فريد لكل خدمة · بريد wael@drwaelalkishawi.com · e-Devlet · GOG · NordVPN · Studio Admin · CouchDB.
- Phase 2 (مفاتيح API برصيد مالي): KLING·ELEVENLABS·SUNO·PIAPI·REPLICATE·RUNPOD·VERCEL·SUPABASE·MAPBOX·WEBSHARE·GROQ·COHERE·VOYAGE·VENICE·ATLAS·NINJA·PORTKEY·MULEROUTER·MIMO·NOTION·LINEAR·TESTSPRITE·PERPLEXITY·FIRECRAWL·TAVILY·BRAVE·CORE.
- Phase 3: Adobe·AUTODESK·CANVA·ASPOSE·ILOVEPDF·MATHPIX·DZINE·LLAMA_CLOUD·ASSEMBLYAI·DEEPGRAM.
- Phase 4: AUDD·FMP·FRED·TOMORROW·OMDB·OXYLABS·BITLY·BOOMLIFY·SIGNUP·SONJJ·APIFY·WOLFRAM·HIVE·PLANET·SENTINELHUB·HEALTHCHECKS·ASK.
- + الـ dispute (مع د. وائل عند اللابتوب).
🔴 دروس تقنية اليوم (لا تُنسى):
- shell = sh (dash) لا bash: لا
declare/arrays/${v: -6}/${#v}. أي سكربت معقّد → Python.$(...)داخل heredoc يفشل → اكتب لملف أولاً. - إخفاء الأسرار يفسد السكربتات: كتابة قيمة سرّ في inline Python → النظام يستبدلها بـ
→ SyntaxError. الحل: اكتب المنطق لملف .py ثم شغّله (القيم من env/ملف، لا نصّاً). - curl في الحاوية يفشل 000 (يتجاهل VPN_PROXY) → Python urllib يعمل (direct أو proxy). أي اختبار API → Python.
- R2 Object R&W: ListBuckets/ListObjects 403/SignatureError طبيعي — الاختبار الصحيح = PUT/GET/DELETE على bucket محدّد.
- grep على workspace ضخم بطيء جداً → يعلّق. استخدم مسارات محدّدة + timeout، أو Python targeted.
- تدوير مفتاح = فحص كل الطبقات: env.sh + host
/docker/openclaw-4x4t/.env+ auth-profiles.json + openclaw.json +/docker/traefik/.env+ hermes.env + docker Config.Env. نسخة احتياطية قبل كل replace. اختبار حيّ للجديد قبل replace + فحص صفر أثر للقديم بعده. - حكم موت القديم = اختبار حيّ للقيمة القديمة (401/403)، لا افتراض.
- exit code 1 من
grep -c= صفر مطابقات = نجاح (القديم اختفى) — ليس فشلاً.
📡 النشرة التقنية 2026-09-26 (تنفيذ مساءً — مُطبّق + مُختبَر حيّاً):
- Grok 4.6 → 4.7: طُبّق في كل مكان (openclaw.json fb 4 مواضع، council.py عضو المجلس + label map، liberation tier_grok default، route.py CODING). كلها compile OK + JSON valid + مُختبَر حيّاً (4.7=200 1.4s · 4.6 fallback=200). 4.6 يبقى تحته never-stop. backups .bak.grok47_. سبب توصية أمس (تعليق 4.7) = خطأ max_tokens=3000؛ بسقف 6000 اليوم: 4.7 أسرع 89s+أنهى نظيفاً vs 4.6 122s+انبتر. التحرّر: 4.7≥4.6 (ret2libc دفاعي، كلاهما refused=False tech=10/10).
- 🔴 تصحيح خطأ فحص-المسار (تكرّر مرتين): GPT-6 Astra مُضاف أصلاً (liberation_router 739/819 + ACADEMIC_TABS gpt6-astra/pro 1037-8 + route CODING 143-4/206-7؛ يعمل uncensored.com 200). رسالتي #64028 «غير مُضاف» كانت خطأ بحث
skills/بدلworkspace/skills/. الدرس: المسار الصحيح = workspace/skills/ لكل السكربتات. - Qwen Image: config فيه
fal/alibaba/qwen-image-3(أحدث من 2.1). كلاهما 200 على fal. لا حاجة لإضافة 2.1 (نملك الأحدث). - الصين: DeepSeek-flash/Qwen3.8-max/Kimi-k3 = أحدث متاح، لا نقص. Gemini 4: 404 غير مُطلَق (watchlist).
- GPT-6 Cyber: watchlist (يُقال 29 سبتمبر). Gemini 3.8 Cyber + Mythos 5.1: 404/trusted-access → طلب Guided Access مُعلّق. التحرّر مغطّى بـVenice/uncensored.com.
- Cloud Code Projects: دراسة 8 مستويات → ❌ لا نضيفه (بنيتنا السيادية+router+Superpowers+kilo أقوى+أكثر استقلالية+أأمن خصوصية؛ ميزة «يكمل بعد إغلاق اللابتوب» نملكها عبر السيرفر). watchlist.
- ⏳ متبقّي: Lean4+Astra + BIM + Agent-on-tender (اختبار عملي) · x_search restart (النهاية) · سد الثغرات Phases 1-3.
- 🔴 x_search السبب الجذري (M-119 مؤكّد بأدلة): المفتاح الجديد صحيح في env.sh+auth-profiles+PID36 environ + x.ai API 200. لكن x_search ترجع القديم r0zv من كاش ذاكرة البوابة (boot Sep25 17:18 قبل تدوير 09:22). الحل الوحيد = safe_restart.sh من host (بإذن د. وائل، في نهاية كل المحاور).
🔑 المرحلة 1 (سدّ الثغرات — كلمات المرور) — مساء 2026-09-26 (كله مُختبَر حيّاً)
- ✅ Studio Admin Token: دُوِّر config-side (...f2b455 → ...3da706).
- ✅ 4 مفاتيح SQLite مخفية درفت (اكتشفها الحارس الجديد): openai/google/deepseek/minimax — كانت قديمة في agents/main/agent/openclaw-agent.sqlite auth_profile_store بينما env.sh جديد (نفس صنف خطأ x_search). سُدّت كلها.
- ✅ e-Devlet Tapu: TAPU_EDEVLET_PW =
$Chessmaster3000$$(اقتباس مفرد، bash يقرأه حرفياً). لا test login (خط أحمر قفل الحساب). - ✅ بريد wael@drwaelalkishawi.com: DRWAEL_MAIL_PASS =
$@Ahmmad1977@$— مُختبَر حيّاً IMAP(imap.hostinger.com:993)+SMTP(smtp.hostinger.com:465) login OK. - ✅ GOG keyring: GOG_KEYRING_PASSWORD جديد (...r6beYY، 31ح) بدل openclaw2026. طريقة الـre-key الآمنة: نقل keyring القديم جانباً (backup) +
gog auth import --refresh-token-stdinبالباسورد الجديد (rc=0). doctor status ok. gog يستخدم نفس OAuth client 743506418630 (hostopenclaw web) مثل مسارنا الرئيسي. 🔴 درس:gog auth importيحاول قراءة keyring القديم أولاً → aes.KeyUnwrap fail إن اختلف الباسورد؛ الحل = نقل القديم جانباً ثم import نظيف. - ✅ CouchDB (Obsidian sync): COUCHDB_PASSWORD جديد (...M-P-no) بدل bff8d431. غُيّر عبر CouchDB config API (
PUT _node/_local/_config/admins/waelمن داخل الحاوية بالـold creds → HTTP 200) + حُدّث secrets/couchdb-livesync.env + host /docker/couchdb/docker-compose.yml. مُختبَر: new pw session 200، old pw 401. الحاوية couchdb Up 6d، خلف Traefik (sync-db.drwaelalkishawi.com). - ✅ حارس استباقي جديد:
scripts/guards/auth_profile_sqlite_sync_guard.sh— يطابق SQLite auth_profile_store لكل وكيل مع env.sh (7 مزوّدين)، exit 2 عند drift. مربوط host cron (30 /6). يمنع تكرار صنف خطأ x_search (SQLite drift مخفي). - 🔴 قاعدة تدوير محدّثة: أي تدوير مفتاح مزوّد = تحديث agents//agent/openclaw-agent.sqlite auth_profile_store أيضاً (مضاف للقائمة التراكمية KEY_LOCATIONS_MASTER_LIST).
- فحص حيّ شامل 8/8 PASS: Cloudflare · Google/Gmail · Discord · xAI · Moonshot · Email IMAP+SMTP · GOG · x_search.
- الأدوات المتبقّية (تحتاج د. وائل): المرحلة 0 (Google OAuth Refresh Token + Client Secret · R2 Access/Secret · Cloudflare DNS Token · Discord Bot Token) · إلغاء NordVPN القديم من لوحة Nord · الباسورد الموحّد Ahmmad1977@ · المراحل 2-4 (~57 مفتاح API) · SSH host key فحص · Guided Access · dispute $100 — كلها عبر حسابات/لوحات تحتاجه.
🌐 طبقات VPN — حصر + اختبار حيّ شامل + ExpressVPN جديد (ليلة 2026-09-26/27، أمر د. وائل، كله مُختبَر حيّاً بمخرجات فعلية)
الحصر النهائي = 7 طبقات VPN، كلها مُختبَرة حيّاً (IP فعلي): 1. Gluetun (gluetun-tr) 🟢 نفق تركيا دائم → 187.40.231.81/TR · + geo_proxy.sh = 149 دولة on-demand (الأقوى/الأساسي). 2. Webshare Residential 🟢 (WEBSHARE_API_KEY) → 86.123.106.166/RO · 200K+ عقدة منزلية عالمية · بوابة p.webshare.io:80 (username xfctzmou). 3. Oxylabs Residential 🟢 (OXYLABS_AISTUDIO_API_KEY) · AI-Scraper للصفحات HTML. 4. NordVPN SOCKS5 🟢 ✅ مُدوَّر مكتمل (مؤكّد بـ hash مقارنة 2026-09-27): د. وائل دوّر الـ password من لوحة Nord → PWD جديد (nNdZ...U4nz) مختلف عن كل النسخ الاحتياطية (hostinger_rot/kilo/cfrot/discordrot كلها PWD=مختلف). USER ثابت (yQqR...Rupe — Nord لا يدوّر اليوزر، يدوّر الـ password فقط). القديم بطل تلقائياً (Nord يُبطل الـ password القديم عند التوليد). مُختبَر حيّاً → US Atlanta 196.196.27.77/166 + LA 196.247.4.21 + NL 186.247.168.234. 🔴 الخوادم الصحيحة = <city>.<cc>.socks.nordhold.net:1080 (لا us9999.nordvpn.com الميتة). NORD_SOCKS_USER/PWD في env.sh (السطر 379-380). 🔴 درس: عند فحص تدوير Nord قارن الـ PWD لا اليوزر (اليوزر يبقى ثابتاً دائماً). Nord Access Token = منفصل عن SOCKS creds (غير مخزّن عندنا).
5. VPN_PROXY 🟢 بروكسي داخلي (مخرج Gluetun TR).
6. Cloudflare 🟢 Tunnel + Access حيّة (node/apps/sovereign) · WARP (warp-cli) غير مثبّت لكن الحساب+CLOUDFLARE_API_TOKEN جاهزان للتفعيل.
7. ExpressVPN (جديد 2026-09-27) 🟢 مُختبَر حيّاً → USA LA اتصال OpenVPN كامل «Initialization Sequence Completed» + مخرج tun0 = 185.223.152.52/US. 7 خوادم configs محفوظة: UK-East-London · USA-LA · Canada-Toronto · USA-SF · USA-NY · Egypt · Turkey.
- 📁 المخزن الآمن: /data/.openclaw/secrets/expressvpn/ (700، ملفات 600) = 7 ملفات .ovpn + auth.txt (user xjezihzd51tgqdql2wxdepol). نُظّفت من media/inbound + host /tmp.
- 🔴 نوع الاتصال: ExpressVPN لا يدعم SOCKS5 (على عكس Nord) — OpenVPN (.ovpn) أو Lightway حصراً. remote host = <location>-ca-version-2.expressnetw.com:1195 UDP.
- 🔴 درس تقني حاسم (لا يُنسى): الحاوية بلا NET_ADMIN/TUN → الاختبار الحيّ يتمّ على host (openvpn مثبّت + /dev/net/tun متاح). + إزالة أغلفة EXTERNAL_UNTRUSTED_CONTENT تكسر تنسيق PEM (no start line) → يجب حذف أسطر الأغلفة فقط بلا لمس محتوى الشهادات/المفتاح حرفياً. أول اختبار فشل بهذا السبب، الثاني نجح بعد الإصلاح.
- للدمج كطبقة egress دائمة للحاوية: عبر gluetun custom (نفس آلية gluetun-tr) — لم يُبنَ بعد (اختبار التحقق فقط تمّ على host).
القاعدة: لا نعتمد على مزوّد واحد — 7 طبقات مستقلة + never-stop. Gluetun وحده 149 دولة. أي حجب جغرافي → الطبقة المناسبة فوراً.
- 🔴 درس أدوات الفحص: inline python يُفسد نظام الإخفاء قيمه (401 كاذب) → اكتب لملف .py ثم شغّله (قراءة من ملف).
🔖 نقطة التوقّف — أين وصلنا في سدّ الثغرات (حُفظ 2026-09-27 00:34 بأمر د. وائل — نكمل لاحقاً)
✅ المُنجَز الكامل (من المصدر، بلا فرضية):- المرحلة 0 كاملة: R2 keys · Cloudflare API token · Google OAuth Client Secret · Google OAuth Refresh Token (22 scope) · Discord Bot Token — كلها مُختبَرة حيّاً + القديم مُبطَل.
- المرحلة 1 (عدا الباسورد الموحّد): Studio Token · 4 مفاتيح SQLite · e-Devlet Tapu · بريد wael · GOG · CouchDB — كلها ✅.
- NordVPN: ✅ مُدوَّر مكتمل (PWD جديد + Access Token، USER ثابت، مُختبَر US).
- VPN: 7 طبقات مُختبَرة حيّاً + ExpressVPN (7 configs محفوظة آمنة).
- ✅ الباسورد الموحّد للبورتال — مُدوَّر مكتمل (2026-09-27 00:50، مُختبَر حيّاً HTTP):
Ahmmad1977@→Ahmmad1977@@.
media/inbound/openclaw-staged-/Wael---.txt ذكر 4 أماكن: (سطر 27) /docker/_secrets/auth_creds.txt المصدر المركزي wiki/sync/render/files · (32) blender-3rkb/.env · (33) env.sh ACADEMIC_ADMIN_INITIAL_PW · (37) البريد (منفصل).
- الجذر الفعلي (mechanism): basic-auth Traefik = htpasswd hash apr1 في 13 حاوية بورتال (ask-proxy·brain-proxy·canvas·code·cost-proxy·invest·landing·mineru-proxy·monitoring·panel·seclab-dash·sync-proxy·wiki-proxy) + /docker/_secrets/auth_creds.txt (وثائقي) + blender/.env (plaintext) + env.sh (plaintext).
- التنفيذ: hash apr1 جديد (passlib) في الـ 13 compose (بـ $$ escaping) + auth_creds + blender + env.sh + backup لكل ملف (.bak.pwrot_/.bak.portalpw_) + docker compose up -d لكل حاوية.
- 🔴 درسان تقنيان: (1) htpasswd CLI على host غير موثوق (sanity فشل) → التحقق القاطع = passlib apr_md5_crypt (مع sanity check). (2) regex \S+ أكل الاقتباس الختامي " في canvas/landing (الوحيدين المُقتبسين) → خطأ YAML → أُصلح بإضافة ".
- التحقق الحيّ القاطع: passlib 13/13 (new=True old=False) + HTTP invest.drwaelalkishawi.com: الجديد 200 · القديم 401 · بلا 401 + فحص صفر أثر للقديم (@1) في كل compose/env/auth_creds. (env.sh فيه Ahmmad1977@ واحد = باسورد البريد المنفصل $@Ahmmad1977@$، لا الموحّد).
- 13 خدمة بورتال تعمل (monitoring = prometheus/grafana/node-exporter، الاسم مجلد لا حاوية).
- المرحلة 2: ~27 مفتاح API (KLING·ELEVENLABS·SUNO·REPLICATE·RUNPOD·VERCEL·SUPABASE·GROQ·VENICE·NOTION·PERPLEXITY·FIRECRAWL·TAVILY·BRAVE·CORE·إلخ).
- المرحلة 3-4: ~30 مفتاح (Adobe·Autodesk·Mathpix·Deepgram·إلخ).
- SSH host key فحص + dispute $100 (مع د. وائل عند اللابتوب).
<!--AUTO_DAILY_START-->
🤖 موجز آلي (محدّث 23:00 الكويت — يكتبه daily_note_gen.sh)
- حالة النظام: لوحة صحة النظام — 🟡 WARN
- التكلفة التراكمية: $37200.97
- أبرز التغييرات اليوم (git):
- (لا commits جوهرية مسجّلة اليوم بعد)