Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/jgalego/hiddensteps
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعتسريب البياناتجمع المعلوماتCTFالخصوصيةالأوراق والأبحاثالتعلم والتعليمموارد منسقةمسارات ودورات التعلممختبرات وتدريب عملي
GitHub
4منذ 12 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
HiddenSteps — HiddenSteps — منصة ذكاء سير عمل شخصية تعتمد مبدأ "المحلية أولاً" | Kitploit
jgalego/hiddensteps

HiddenSteps

HiddenSteps — منصة ذكاء سير عمل شخصية تعتمد مبدأ "المحلية أولاً"

عرض المستودع

الصناديق الأساسية (Core crates) — حالة التنفيذ

هذا هو المكمّل الأمين للحالة الراهنة لخريطة الوحدات المستهدفة في docs/design/02-system-architecture.md. إنه يوضح ما هو مبني فعلياً، وما تم التحقق منه مقابل خلفية حقيقية أو نموذج محاكى (mock)، وما لا يزال مفقوداً فعلياً — وليس ما هو مخطط له (ذلك في docs/roadmap/01-implementation-roadmap.md).

شغّل cargo build --workspace && cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings من جذر المستودع. وقت كتابة هذا: 12 صندوقاً (crate)، 193 اختباراً ناجحاً، صفر تحذيرات clippy، cargo fmt --check نظيف — 183 عبر الصناديق الـ 11 التي لا تحتاج إلى شاشة عرض أو خدمة خارجية، بالإضافة إلى 10 في hiddensteps-observation تحتاج إلى شاشة X11 حية (تم التحقق منها حيثما توجد واحدة؛ انظر ذلك الصف). أربعة اختبارات مؤجَّلة بـ #[ignore] عن قصد (انظر أدناه) ولا تُحتسب كإخفاقات أو ضمن الـ 193.

ما هو موجود

بالإضافة إلى ذلك، خارج crates/ (وليس جزءاً من مساحة العمل الجذرية — انظر السبب أدناه):

ما هو تبسيط مُعلَن عنه وليس فجوة

  • تمثيلات الأنماط (Pattern embeddings) تُخزَّن كـ BLOBs عادية في hiddensteps-event-store مع حساب تشابه جيب التمام (cosine similarity) في Rust، نيابةً عن الجدول الافتراضي sqlite-vec الخاص بـ ADR-0007 (انظر التعليق أعلى event-store/src/schema.sql) — لم يكن تحميل امتداد SQLite أصلي قابلاً للتحقق في هذه البيئة، ويلاحظ ADR-0007 نفسه أنه عند أحجام الاستخدام الواقعية لمستخدم واحد، فإن سلوك sqlite-vec هو بحث دقيق بالقوة الغاشمة. دلالات متماثلة، دون مخاطر الامتداد الأصلي.
  • وحدتا macOS وWindows في hiddensteps-observation (src/macos/، src/windows/) مصدر حقيقي كامل مقابل واجهات برمجة منصات مستقرة منذ زمن طويل (CGWindowListCopyWindowInfo؛ GetForegroundWindow/GetWindowTextW/QueryFullProcessImageNameW) كُتبتا دون توفر سلسلة أدوات macOS/Windows — وكلتاهما تُترجم الآن نظيفة، وهو ما تحققت منه مصفوفة وظيفة core في . تطلبت وحدة macOS إصلاحاً حقيقياً واحداً أولاً (لم تُرضِ المعاملات العامة الافتراضية غير المكتوبة الأنواع في قيدَ trait الخاص بـ لمفتاح — أُصلح بكتابة نوعها صراحةً كـ )؛ أما Windows فتُرجمت نظيفة من المحاولة الأولى.

لماذا يقع غلاف Tauri والواجهة خارج crates/

crates/* هو مساحة عمل Cargo.toml الجذرية ويمكن بناؤه واختباره بالكامل في بيئة تطوير لينكس هذه دون أي تبعيات نظام تتجاوز ما يجلبه cargo. يحتاج apps/desktop/src-tauri إلى webkit2gtk-4.1 (لينكس) حتى يُترجم أصلاً، ولا يمكن لهذه البيئة تثبيته (لا sudo بلا كلمة مرور، ولا مسار nix/مدير حزم يعمل — مؤكد بمحاولة مباشرة). إبقاؤه خارج مساحة العمل يعني أن cargo build --workspace يبقى أخضر 100% هنا بدلاً من أن يبقى أحمر بشكل دائم على صندوق واحد لا يمكن لأحد إصلاحه في هذا الصندوق الرملي. كما يحتاج جدول [workspace] فارغاً خاصاً به في Cargo.toml للسبب نفسه — وإلا فسيحاول Cargo إرفاقه بمساحة العمل الأب هذه على أي حال ويفشل برسالة "current package believes it's in a workspace when it's not." لا توجد مثل هذه القيود على apps/desktop/ui، ويُتحقق منها بالطريقة نفسها التي يُتحقق بها من نواة Rust. ما تزال القطعتان معاً مُتحقَّقتين من البداية إلى النهاية — لكن عبر CI بدلاً من هذا الصندوق الرملي.

ملاحظة حول الاختبارات الأربعة المؤجَّلة بـ #[ignore]

  • hiddensteps-security::keyring_store::tests::set_get_delete_round_trip_against_the_real_vault — يحتاج خزنة بيانات اعتماد نظام تشغيل/جلسة سطح مكتب حقيقية.
  • hiddensteps-observation::linux::shortcuts::tests::grabs_and_ungrabs_a_real_shortcut — ينفذ XGrabKey حقيقياً على مستوى الجلسة، وهو ما سيكون معطِّلاً إذا شُغِّل تلقائياً في بيئة مشتركة.
  • tests/ollama_live.rs الخاص بـ hiddensteps-llm-provider (اختباران) — يحتاج مثيل Ollama حقيقياً قيد التشغيل. وقد شُغِّل الاثنان فعلياً أثناء التطوير مقابل مثيل محلي حقيقي qwen3:0.6b (نموذج استدلال هجين بمعاملات 0.6B) ونجحا في نحو ثانيتين معاً؛ لتجاوز النموذج/العنوان استخدم متغيرَي البيئة HIDDENSTEPS_TEST_OLLAMA_MODEL/HIDDENSTEPS_TEST_OLLAMA_URL لإعداد مختلف.

الاختبارات الأربعة كلها اختبارات حقيقية، وليست بقايا — يرسم docs/roadmap/03-testing-strategy.md §2 هذا التمييز بالضبط بين المنطق الذي ينتمي خلف نموذج محاكاة في CI وتكامل نظام التشغيل/الجلسة/الخدمة الخارجية الذي ينتمي إلى تحقق يدوي متعمد. شغّل أيّاً منها بـ cargo test -p <crate> -- --ignored (أضف <test name> لتشغيل واحد فقط) على جهاز يكون التشغيل فيه مناسباً.

تنزيل الأداة
الصندوق (Crate)ما ينفّذهكيف تم التحقق
hiddensteps-domainالأنواع الأساسية: PrivacyLevel/PrivacyState، EventSummary/SignalType، Pattern، Recommendation، AuditEntry، وCapturedSignal — وهو نوع لا يمكن استمراره بنيوياً (لا يحتوي Serialize)، ما يفرض قاعدة البيانات الخام الخاصة بـ ADR-0006 على مستوى النوعاختبارات وحدة: round-trip وترتيب المستويات، وبوابة TTL للوضع العميق
hiddensteps-securitySecretStore (ADR-0008): تنفيذان — خزنة OS حقيقية (KeyringSecretStore) وخزنة في الذاكرة (للاختبار)؛ توليد مفتاح رئيسي عبر CSPRNG (يُعاد في غلاف zeroize::Zeroizing بحيث يُمسح المفتاح عند الإفلات (drop) بدلاً من أن يبقى في الذاكرة المحررة)؛ اشتقاق مفتاح من عبارة المرور عبر Argon2id للوضع المحمول (PassphraseKey يصفّر مفتاحه المشتق عند الإفلات، مع الإبقاء على الملح (salt) غير السري). بالمثل، يحتفظ hiddensteps-event-store بنص SQL الحامل للمفتاح PRAGMA key/rekey داخل Zeroizingاختبارات وحدة مقابل مخزن الذاكرة وKDF؛ اختبار round-trip للخزنة الحقيقية مؤجَّل بـ #[ignore] (انظر أدناه)
hiddensteps-event-storeSqlCipherEventStore (ADR-0003): المخطط الكامل من docs/design/07-database-schema.md، وعمليات CRUD لحالة الخصوصية، والأحداث، وسجل التدقيق، والأنماط، وروابط النمط↔الحدث، وتمثيلات الأنماط (انظر الملاحظة أدناه)، والتوصيات، وإعداد مزوّد LLM، والإعدادات العامة، بالإضافة إلى delete_all_data (معاملاتي؛ ويقوم أيضاً بـ rekey من أجل "حذف كل شيء" يصمد بعد إعادة التشغيل)/export_data/count_rows (تشخيصات)/delete_expired_events (مسح TTL للوضع العميق، يُستدعى من حلقة التوصيات الدورية في apps/desktop/src-tauri — كان ttl_expires_at يُستمر منذ v0.1.0 لكن لم يكن أي شيء يحذف صفاً تجاوزه قبل هذا)؛ فرض المفاتيح الأجنبية (PRAGMA foreign_keys = ON) بحيث يعمل ON DELETE CASCADE في schema.sql على روابط النمط↔الحدث فعلياً33 اختباراً مقابل ملف SQLCipher حقيقي: المفتاح الخاطئ يفشل في الفتح، والمفتاح نفسه يعيد الفتح بشكل صحيح، وحذف الكل يمسح كل جدول بما فيها الأحدث، وround-trip لـ rekey، ومسح TTL يترك الأحداث غير المنتهية دون مساس، والحذف المتتالي لا يترك روابط نمط↔حدث يتيمة
hiddensteps-redactionمحرك التنقيح (Redaction Engine) (docs/design/05-privacy-model.md §4): كاشفات regex+Luhn لمفاتيح API/الرموز (tokens)/مفاتيح PEM/البريد الإلكتروني/SSN/بطاقات الائتمان، وكاشف أسرار غامضة قائم على الانتروبيا، وسياسة الإسقاط عند عدم اليقين30 اختباراً، بما فيها مدخلات عدائية عمداً (أسرار مضمّنة في نثر، وشبه أسرار قريبة غير أسرار مثل git SHAs، وأرقام SSN بلا شرطات/بمسافات، وأرقام بطاقات محشوة بأرقام، ورموز عالية الانتروبيا بحالة واحدة)
hiddensteps-pipelineخط أنابيب الأحداث (Event Pipeline) (ADR-0006): تصنيف → تنقيح → تلخيص، وبوابة مستوى الخصوصية لكل نوع إشارة، وتعيين TTL للوضع العميق8 اختبارات تغطي عمليات الإسقاط الناتجة عن التنقيح، والإسقاط بسبب بوابات المستوى، والتلخيص الناجح
hiddensteps-observationObservationSource (ADR-0005) + لينكس: ActiveWindowSource (X11 GetInputFocus)، FileOperationSource (inotify عبر notify)، ClipboardMetadataSource (تحديد X11، بيانات وصفية فقط)، GlobalShortcutSource (X11 XGrabKey). بالإضافة إلى ملفات مصادر macOS/Windows (انظر أدناه)10 من 11 اختباراً تعمل مقابل خلفيات حقيقية في هذه البيئة — شاشة X11 حية (DISPLAY=:0 من WSLg) وinotify حقيقي، وليست نماذج محاكاة. اختبار واحد (الالتقاط الحقيقي لـGlobalShortcutSource) مؤجَّل بـ #[ignore] عن قصد
hiddensteps-llm-providerLlmProvider (ADR-0004): عميل Ollama (مع حقل طلب think: Option<bool> لنماذج الاستدلال الهجين)، وعميل متوافق مع بروتوكول OpenAI الأسلاك (يغطي OpenAI/Azure/OpenRouter/Together/Groq/DeepSeek/LocalAI)، وعميل Anthropic Messages، واكتشاف تلقائي لبيئة التشغيل المحلية. يضبط كل عميل مهلة زمنية للطلب (build_http_client) بحيث لا يمكن لخادم بعيد معلّق أن يحجب استدعاءً إلى الأبد؛ يمرر Ollama max_tokens كقيمة options.num_predict المتداخلة19 اختباراً مقابل خوادم wiremock المحاكاة (بما فيها فحص حقيقي لانطلاق المهلة وأن Ollama يرسل num_predict فعلاً)، بالإضافة إلى اختباري تكامل حقيقيين مع Ollama (tests/ollama_live.rs، مؤجَّلان بـ #[ignore] — انظر أدناه) اكتشفا وأصلا مشكلة حقيقية: نفس المطالبة استغرقت أكثر من دقيقتين مع نموذج تفكير هجين محلي حقيقي عندما تُرك think على قيمته الافتراضية، وبضع ثوانٍ مع think: Some(false)
hiddensteps-patternsاكتشاف الأنماط (مطابقة متواليات n-gram بنافذة منزلقة) + مخطط سير العمل (مخطط انتقالي بأوزان حواف) — الطبقة 1 من ADR-001016 اختباراً، بما فيها تماثل مباشر لمثال PROMPT.md الخاص "لُوحظ 31 مرة" واختبار انحدار يتحقق من أن النوافذ المتداخلة فوق تكرار مستمر لا تُحتسب مرتين
hiddensteps-recommendationsالطبقة 2 من محرك التوصيات (ADR-0010): توليف LLM مع عقد مطالبة JSON منظم، ومدقق تناقض سردي، وحلقة إعادة محاولة — والأهم أن الحقول الرقمية (estimated_time_saved_minutes) لا تُحلَّل من مخرجات LLM إطلاقاً أبداً، بل تُحتسب فقط من الطبقة 123 اختباراً، بما فيها إعادة المحاولة عند JSON تالف، وإعادة المحاولة عند التناقض السردي (تغطي الأرقام المكتوبة حروفاً وكل حقل يتحكم به LLM، وليس why فقط)، واستخراج JSON يراعي السلاسل النصية، مقابل مزوّد اختبار مبرمَج (scripted)
hiddensteps-privacy-engineبوابة الإرسال إلى السحابة (docs/design/03-data-flow-diagrams.md §5) وإصدارات الموافقة (docs/design/05-privacy-model.md §5)؛ يغلّف PrivacyGatedProvider أي LlmProvider بحيث لا يمكن تجاوز البوابة عبر مسار الاستدعاء العادي13 اختباراً، بما فيها أن محتوى المستوى 4 محظور حتى مع منح كل الموافقات
hiddensteps-plugin-hostمضيف إضافات WASM (ADR-0009): تعداد قدرات مغلق، والتحقق من صحة البيان (manifest)، وصندوق رمل مدعوم بـ wasmtime يربط دوال المضيف للقدرات الممنوحة فقط، بالإضافة إلى عداد الوقود (fuel metering) وResourceLimiter للذاكرة يحدّان من CPU/ذاكرة مثيل الإضافة بغض النظر عن القدرات التي يحملها — وهما المحوران اللذان يسميهما قسم منع الخدمة (Denial-of-Service) في docs/research/06-threat-model.md ولا يستطيع فرض القدرات وحده معالجتهما (فالوحدة الخالية من القدرات يمكنها مع ذلك التكرار أو تضخيم الذاكرة إلى الأبد). instantiate_from_manifest هو نقطة الدخول الآمنة: فهو يفرض التحقق من البيان (قاعدة المستوى 4 المطلوب للقطة الشاشة) ويرفض منح أي شيء لم يصرّح به البيان، قبل وصول أي قدرة إلى الرابط (linker) — أما شريحة القدرات البسيطة instantiate فلا صلة لها بأي بيان إطلاقاً20 اختباراً، بما فيها محاولات هروب قدرات حقيقية: وحدات WAT مكتوبة يدوياً تُترجم وقت الاختبار، لإثبات أن استيراد قدرة غير ممنوحة غير محلول فعلياً (يفشل الإنشاء)، وليس مجرد غير مستخدم؛ بالإضافة إلى وحدة تكرار لانهائي حقيقي ووحدة memory.grow غير محدودة تتوقف (trap) بدلاً من التعليق/استنزاف الذاكرة
hiddensteps-enterprise-policyمخطط السياسة (docs/design/05-privacy-model.md §6) بمقبضين اثنين فقط (حد أدنى لمستوى الخصوصية، وقائمة سماح للمزوّد) — لا يوجد حقل لأي شيء آخر قد ترغب سياسة في تقييده. تُحمَّل من ملف enterprise-policy.json في دليل بيانات التطبيق إذا وُجد (آلية حقيقية وإن كانت مؤقتة — موصّل إضافات PolicyLoader الكامل الذي تصفه docs/design/08-plugin-architecture.md غير مبني)، وتُستمر عبر جدول enterprise_policy في hiddensteps-event-store، ويُفرض تنفيذها فعلياً في أمري set_privacy_level/set_ai_provider في apps/desktop/src-tauri — نقطتا التغيير الوحيدتان اللتان يمكن أن يُكتب منهما اختيار مستوى/مزوّد6 اختبارات، بما فيها تحليل ملف سياسة عدائي إلى أقصى حد يحوي خمسة مفاتيح إضافية مستبعدة بالتصميم والتأكد من عدم نجاة أي منها من التحليل
الموقعما ينفّذهكيف تم التحقق
../apps/desktop/uiواجهة React/TypeScript: OnboardingWizard (كل الشاشات الثماني، docs/ux/02)، PrivacyDashboard (docs/ux/03)، RecommendationCard (docs/ux/04)، SettingsPage، DiagnosticsPage، مربوطة معاً في App.tsx — وتتواصل مع النواة فقط عبر tauriBridge.ts مكتوب الأنواع50 اختباراً عبر vitest + @testing-library/react مقابل عرض jsdom حقيقي، بما فيها بوابات خطوات معالج الإعداد (لا تقدّم بعد مرحلة التحقق دون فحص ناجح، ولا بدء مراقبة دون تحديد الموافقة)، وإظهار الأخطاء في كل موقع استدعاء طفرة، ولافتة إعادة الموافقة، وأثر أدلة التوصية، وبوابة إتاحة باستخدام axe-core؛ وtsc -b يفحص الأنواع بنجاح
../apps/desktop/src-tauriغلاف Tauri: نحو 21 أمر IPC (docs/design/09-api-specification.md) يربط كل الصناديق أعلاه معاً، بالإضافة إلى حلقة خلفية حقيقية التقاط→خط أنابيب→تخزين→حدث واجهة مستخدم لنظام لينكسيترجم نظيفاً على لينكس وmacOS وWindows في CI — ليس في صندوق التطوير الرملي هذا تحديداً (انظر ../apps/desktop/README.md للسبب)، لكن التحفظ السابق "غير مُتحقَّق" الذي كان موجوداً هنا قد زال: أول تشغيل حقيقي للـ CI وجد وأصل 3 أخطاء حقيقية (اشتقاق Serialize مفقود، وعلامة ميزة Cargo مفقودة، وملف أيقونة مولد مفقود) لم يكن أي قدر من المراجعة المحلية ليلتقطها
.github/workflows/ci.yml
CFDictionary
find
&CFString
CFDictionary<CFString, CFType>
  • مراقبة مجال المتصفح والتشغيل التلقائي للاختصار العام ثغرتان مذكورتان بالاسم في تعليق التوثيق في hiddensteps-observation/src/lib.rs — الأولى تحتاج إلى منتَج منفصل كإضافة متصفح لا يحتويه هذا المستودع؛ والثانية (GlobalShortcutSource) منفذة لكنها لا تُشغَّل تلقائياً أبداً، لأن التقاط مجموعة مفاتيح على مستوى الجلسة في بيئة تطوير مشتركة سيكون معطِّلاً بفعالية.
  • الطبقة 2 من محرك التوصيات تولّف حكماً نوعياً عبر أي LlmProvider مُهيأ؛ وقد اختُبرت مقابل مزوّد بديل مبرمَج (تأكيدات حقيقية على منطق إعادة المحاولة/التحقق). لدى hiddensteps-llm-provider نفسه الآن تغطية بـ Ollama حقيقي (انظر أدناه)؛ تشغيل عقد مطالبة المولّف نفسه مقابل نموذج حقيقي من البداية إلى النهاية (وليس عميل HTTP الأساسي) هو الخطوة الطبيعية التالية، ولم تُنفَّذ بعد.
  • get_diagnostics (غلاف Tauri) يبلّغ عن أعداد حقيقية للأحداث/الأنماط/التوصيات/سجل التدقيق وحجم ملف حقيقي على القرص، لكن ليس عن استخدام GPU/CPU/الذاكرة، أو حالة أذونات نظام التشغيل للمراقبة، أو حالة التحديث — قائمة التشخيص الذاتي الكاملة في PROMPT.md. كل مكوّن واجهة يعرض هذا يوضح ذلك صراحةً بدلاً من إظهار "OK" مختلقة.