
keyhog v0.5.47
ماسح أسرار مفتوح المصدر بلغة Rust
الموقع الإلكتروني · التوثيق · البنية المعمارية · محرك Vyre GPU
KeyHog: ماسح الأسرار المتسارع بوحدة معالجة الرسوميات للكود والسحابة وCI
KeyHog هو ماسح أسرار مفتوح المصدر مكتوب بلغة Rust يكتشف ويتحقق من مفاتيح API المسرّبة والرموز المميزة وكلمات المرور وبيانات الاعتماد عبر الكود المصدري وتاريخ Git والحاويات والتخزين السحابي وأصول المتصفح ومحتوى التعاون والأنظمة قيد التشغيل.
معظم ماسحات الأسرار تتوقف عند مطابقة regex عبر وحدة المعالجة المركزية في نسخة مستودع. يجمع KeyHog بين 934 كاشفًا خاصًا بخدمات محددة، وفك التشفير للبيانات المخفية، والأدلة والسياقات الواعية للقمع، والتحقق المباشر من المزودين، وتنفيذ من الدرجة الأولى عبر CUDA وMetal وWGPU من خلال Vyre. تقيس المعايرة كل مسار CPU نقي مؤهل بلغة Rust وHyperscan/SIMD وGPU. ثم يستخدم التوجيه التلقائي أسرع مسار مثبت التكافؤ للجهاز المحدد وفئة عبء العمل.
| GPU كخلفية حقيقية | امسح سطح الهجوم الفعلي | افصل الإشارة عن الضوضاء | تصرف بناءً على النتيجة |
|---|---|---|---|
| CUDA وMetal الأصلي وWGPU أقران مُقاسون، وليسوا سلسلة احتياطية صامتة. | امسح تاريخ Git وطبقات Docker والأرشيفات ودلاء السحابة وخرائط المصدر وWASM والتقاطات HAR ومجموعات Git المستضافة والأنظمة بأكملها. | فك ترميز base64 وhex وURL وprotobuf ومتعدد الأسطر والتكوين المنظم قبل تطبيق الأدلة وقمع الأمثلة وخطوط الأساس. | تحقق من بيانات الاعتماد المؤهلة عبر واجهات برمجة تطبيقات المزودين، وأصدر SARIF أو مغلفات منظمة، وحافظ على التغطية الدقيقة ودلالات الخروج. |
| cargo install --locked keyhog | |||
| keyhog scan . |
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/7654/dfb768a9b8e8fa64082992f11d0b284d5ec6a199fc1eac85e0352fb20452186f.gif" alt="فحص KeyHog يعرض الخطورة والأدلة والملف والسطر والمعالجة والنتائج وحالة التغطية" width="900" />
</p>
## ماسح أسرار مبني حول وحدة معالجة الرسوميات
لا يسلّم KeyHog بضعة تعبيرات نمطية إلى shader حوسبة عام. مسار وحدة معالجة الرسوميات فيه مبني على [Vyre](https://github.com/santhreal/vyre)، وهي بنية حوسبة Rust GPU طُوّرت جنبًا إلى جنب مع KeyHog. تُترجم مشغلات الكاشف إلى جداول ثابتة مقيمة في وحدة معالجة الرسوميات. وتنتج دفعات المصدر المحدودة مواقع مطابقة كاملة لنفس خط أنابيب التأكيد والقمع والأدلة وإعداد التقارير المستخدم في مسارات CPU وHyperscan.
- **ثلاثة أقران فعليون لوحدة معالجة الرسوميات.** يتم الحصول على CUDA وMetal الأصلي وWGPU المحمول وقياسها والإبلاغ عنها بشكل مستقل.
- **تطابق نتائج دقيق.** يرفض المعايرة أي مرشح تختلف هوية اكتشافه عن المسار المرجعي. لا تدخل إجابة أسرع لكنها خاطئة أبدًا إلى جدول التوجيه.
- **أدلة مسار دائمة.** يسجّل KeyHog الثنائي ومجموعة كاشفات البيانات والتهيئة وفئة عبء العمل والمضيف والمسرّع وبرنامج التشغيل وأدلة التوقيت المقاسة. لا تقوم عمليات الفحص العادية بقياس الأداء في المسار الساخن.
- **تنفيذ مقيم.** تُبقي عمليات الخفي حالة الكاشف المترجم والمسرّع دافئة لدفعات الملفات والأرشيفات والسجل والبعيدة والسحابية المتكررة.
- **لا مخرج CPU خفي.** أي مسرّع محدد صراحةً لا يمكن تهيئته أو إرساله يفشل بشكل مرئي بدلًا من إرجاع نتائج CPU تحت تسمية GPU.
يستخدم التثبيت الافتراضي من crates.io مسار CPU النقي المحمول المكتوب بلغة Rust بحيث يعمل على مضيف Rust نظيف. فعّل أقران GPU الثلاثة دون الحصول على Hyperscan:```sh
cargo install --locked keyhog --no-default-features --features portable,gpu
فعّل نظير التعبيرات النمطية Hyperscan أو Vectorscan SIMD:```sh cargo install --locked keyhog --no-default-features --features portable,simd
قم بتشغيل التشخيص الخلفي للإنتاج، ثم افحص المسار المُقاس:```sh
keyhog backend --self-test
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
دليل الواجهة الخلفية يوثّق الجداول المقيمة، نموذج الإرسال المحدود، عقد التكافؤ، والأدلة القابلة للتكرار على التطابق.
ابدأ
التثبيت وتشغيل أول فحص
الأمران أعلاه يثبّتان أحدث إصدار من crates.io ويقومان بفحص الشجرة الحالية باستخدام المسار المحمول النقي بلغة Rust.
ثبّت بيئة CI على إصدار واحد محدد باستخدام
cargo install --locked --version '=0.5.86' keyhog. يتطلب KeyHog إصدار Rust 1.89
أو أحدث. راجع دليل التثبيت
لملفات تعريف GPU وHyperscan وCI والمحمولة والبناء من المصدر.
يخرج KeyHog بالرمز 1 عندما يمنع اكتشافٌ سياسة الأدلة النشطة. تمنع السياسة
الافتراضية اكتشافات likely وconfirmed مع إبقاء اكتشافات review مرئية
مع رمز خروج 0؛ بينما --evidence-policy paranoid يمنع كل المستويات. راجع
مستوى الدليل الدقيق لكل اكتشاف، ورمز السبب، والملف، والسطر، والمكتشف،
والإصلاح. تصف رموز غير الصفر الأخرى أخطاء الإدخال أو النظام أو التحقق أو
التغطية؛ راجع
مرجع رموز الخروج.
عقد العملية الكامل هو:
| الخروج | المعنى |
|---|---|
0 نجاح | لا يوجد اكتشاف يمنع سياسة الأدلة النشطة، ولم يحدث أي فشل في التغطية. يمكن أن تبقى اكتشافات مستوى المراجعة مرئية ضمن السياسة الافتراضية. |
1 اكتشافات مانعة | يوجد اكتشاف واحد على الأقل يمنع سياسة الأدلة النشطة، لكن لم يُؤكد أي منها كحيّ. |
2 خطأ مشغّل | أصلح الوسائط أو الإعداد أو مجموعة المكتشفات أو الإدخال القابل للتصحيح من قبل المشغّل. |
3 خطأ نظام | أصلح أو أعد محاولة التشغيل. يشمل ذلك الإدخال/الإخراج منخفض المستوى، وخدمة الخلفية القاتلة، والذاكرة المؤقتة التزايدية، وفشل SIMD المحدد صراحةً. |
4 فشل الصحة/الاختبار الذاتي | كان فحص الصحة doctor أو backend --self-test غير سليم. |
10 بيانات اعتماد حيّة | تم تأكيد بيانات اعتماد واحدة على الأقل كحيّة. |
11 ذعر الماسح | تجاهل نتيجة الفحص لأن حالة الماسح غير موثوقة. |
12 فشل GPU مطلوب | تعذّر تنفيذ مسار GPU محدد أو مطلوب صراحةً. |
13 تغطية غير مكتملة | فشل مصدر مطلوب أو كانت تغطية الإدخال غير مكتملة، ولم تتفوق أي نتيجة اكتشاف. |
130 مقاطعة | قاطعت SIGINT أو Ctrl-C العملية. |
تصفية، تنسيق، بوابة:
أنشئ خطًا أساسيًا قبل استخدامه كمرشّح:```sh keyhog scan . --create-baseline .keyhog-baseline.json keyhog scan . --baseline .keyhog-baseline.json --format json-envelope --output keyhog.json
الأمر الأول يستعرض النتائج المكتشفة ويخرج برمز `0` دون طباعتها.
قم بتثبيت هذا الملف، ثم استخدم الأمر الثاني للإبلاغ عن هويات النتائج الجديدة فقط. يطابق الإدخال الأساسي المكتشف وقيمة بيانات الاعتماد، ولا يطابق أبدًا مسار الملف، لذا فإن نقل سر مسجل لا يفشل البوابة، بينما تدويره يفشلها. تظل بيانات الاعتماد المتغيرة والتغطية غير المكتملة مرئية. المسار الكامل، بما في ذلك أقسام المستودع الأحادي، موجود في [الفشل فقط على الأسرار الجديدة](https://santhreal.github.io/keyhog/workflows/ci.html#fail-only-on-new-secrets).
للفحص التالي، استخدم [كتاب الوصفات](https://santhreal.github.io/keyhog/recipes.html) أو الأوامر القابلة للنسخ في [اختيار سير العمل الصحيح](#choose-the-right-workflow). يمكنك فحص تاريخ Git، وصور الحاويات، ودلاء السحابة، ومجموعات المستودعات، وعناوين URL، وجهاز كامل دون تغيير الأدوات.
### حماية المستودعات لفحوصات سريعة قبل الالتزام
سجّل مستودعًا مع برنامج KeyHog الخفي الدائم لفحص سريع للأسرار قبل الالتزام (يتطلب Unix؛ على Windows استخدم `keyhog scan` داخل العملية):```sh
# 1. Start the daemon (accelerated by CUDA, Metal, WGPU, or SIMD)
keyhog guard up
# 2. Guard your repository (indexes baseline and installs pre-commit hook in one step)
keyhog guard add /path/to/repo
# 3. Every staged commit checks only changed blobs against in-memory attestations
keyhog scan --git-staged
# 4. View all active guarded repositories and their states
keyhog guard list
# 5. Turn the daemon on and off cleanly without losing registrations or durable index
keyhog guard down
راجع دليل الحارس الدائم و سير عمل ما قبل الالتزام للحصول على الإعداد الكامل، ودورة حياة آلة الحالة، وأتمتة الخطافات.
إضافته إلى GitHub Actions
أنشئ .github/workflows/keyhog.yml:```yaml
name: keyhog
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: santhreal/keyhog@v0
with:
path: .
severity: high
الإجراء يفحص الشجرة المُخرَجة من نظام التحكم بالإصدارات، ويفشل عند وجود نتائج بمستوى `high` أو `critical`، ويرفع تقرير SARIF إلى Code Scanning، ويحتفظ بالتقرير كأثر عمل (workflow artifact). كما أن فشل التثبيت أو التغطية أو الواجهة الخلفية أو نشر التقرير يؤدي أيضاً إلى فشل الوظيفة.
استخدم [دليل GitHub Action](https://santhreal.github.io/keyhog/workflows/github-action.html) للمدخلات والمخرجات واعتماد خط الأساس وتقسيم المستودعات المتعددة (monorepo) والتحقق وسلوك الفشل. واستخدم [دليل CI](https://santhreal.github.io/keyhog/workflows/ci.html) لـ GitLab وCircleCI وJenkins وBuildkite ووظائف shell العامة. واستخدم [دليل المسح الشامل](https://santhreal.github.io/keyhog/guides/mass-scanning.html) لمؤسسات المستودعات ومجموعات Git المستضافة وحاويات السحابة وقوائم الجرد المقسمة.
## أسطح الفحص التي تعاملها أدوات أخرى كمنتجات منفصلة
يقوم KeyHog بفحص البايتات عند الحدود التي يمكن أن تتسرب منها، وليس فقط ملفات المصدر المتعقبة. استخدم تقريراً واحداً لكل حدود بحيث يحتفظ CI بالتغطية الدقيقة وحالة الفشل.
| سطح التعرض | مثال |
|---|---|
| أداة الحزمة النهائية | شغّل `npm pack`، ثم افحص ملف `.tgz` الناتج باستخدام `keyhog scan package.tgz`. يفحص فك ضغط الأرشيف الملفات المُولّدة وخرائط المصدر والملفات الثابتة (fixtures) والبيانات الوصفية الغائبة عن شجرة المصدر المتوقعة. |
| تطبيق المتصفح المنشور | `keyhog scan --url https://app.example.com/assets/app.js` يتبع فك ترميز JavaScript وخرائط المصدر وWASM والاستجابات ضمن حدود دون تحويل الماسح إلى زاحف غير محدود. |
| مشكلات GitHub وطلبات السحب والمناقشات والويكي وgists | `keyhog scan --github-collaboration owner/repo --github-all` يفحص كل سطح تعاون خارج نسخة العمل. |
| إعدادات وكلاء AI وMCP | `keyhog scan ~/.config ~/.claude ~/.codex` يطبق نفس خط أنابيب الكشف وفك الترميز والأدلة والتقارير على إعدادات الأدوات المحلية. |
| طبقات صور الحاويات | `keyhog scan --docker-image registry.example.com/team/app:v1` يفحص محتوى الصورة الذي سيتم تشغيله، بما في ذلك الملفات المُدخلة أثناء البناء. |
| قوائم جرد الكائنات السحابية | `keyhog scan --s3-bucket BUCKET` أو `--gcs-bucket BUCKET` أو `--azure-container-url URL` يحافظ على ترقيم الصفحات والكائنات وحدود تغطية البايتات في التقرير الطرفي. |
| مضيف التطوير بالكامل | `sudo keyhog scan-system --space 50G` يكتشف أنظمة الملفات المثبتة وتاريخ Git القابل للوصول ضمن ميزانية تخزين صارمة. |
تشترك هذه المسارات في عقد كشف وتقارير واحد. لا يمكن لفشل خاص بمصدر معين أن يتحول بصمت إلى فحص محلي أضيق.
## اختر سير العمل الصحيح
اختر حدود المصدر أولاً. الإعداد المسبق يغيّر عمل الكشف، بينما الواجهة الخلفية تغيّر التنفيذ. لا يوسّع أي منهما فحص شجرة العمل إلى تاريخ Git أو قائمة جرد مزود أو تخزين سحابي أو تدقيق مضيف.
لا يوجد اختصار صادق لـ `scan everything`. المراجعة الكاملة للممتلكات تشغّل الحدود ذات الصلة أدناه كوظائف منفصلة وتحتفظ بكل تقرير `json-envelope` مع رمز الخروج الخام الخاص به.
| الحاجة | ابدأ بـ | الإنتاجية وإعادة الاستخدام | حدود التغطية |
|---|---|---|---|
| ملاحظات محلية سريعة | `keyhog scan . --fast --incremental` | يعيد استخدام تجزئات الملفات غير المتغيرة. الإعداد السريع يتخطى عمل فك الترميز والإنتروبيا والتعلم الآلي. | شغّل السياسة الافتراضية قبل الدمج لأن السريع أضيق عمداً. |
| فحص مستودع كامل | `keyhog scan .` | `auto` المُعاير والافتراضي لعمال نوى CPU. أضف `--incremental` للفحوصات المتكررة لنفس الشجرة الموثوقة. | الملفات الحالية فقط. لا يضيف تاريخ Git. |
| بوابة التزام المرحلي | `keyhog scan --git-staged` أو `keyhog hook install` | يقرأ كائنات الفهرس الدقيقة، لذا لا يمكن للتعديلات غير المرحلية تغيير النتيجة. | المحتوى المرحلي فقط. شغّل فحص شجرة العمل بشكل منفصل عندما تكون البايتات المحلية غير المرحلية مهمة. |
| حارس مستودع دائم | `keyhog guard add . --mode repo` ثم `keyhog guard status .` | سجل جذر مقيم في الخفيّة مع آلة حالات من 7 حالات وذاكرة تخزين مؤقت نظيفة للإثبات وتتبع هوية السياسة. | يتطلب خفيّة قيد التشغيل. الحارس يكمّل، لا يستبدل، فحوصات المرحلي وشجرة العمل. |
| بوابة طلب سحب GitHub | `santhreal/keyhog@v0` | الإجراء يثبّت ويفحص وينشر SARIF وأثراً ثم يحافظ على حالة KeyHog. | مسار واحد مُخرج. استخدم فحص قائمة جرد المزود لمؤسسة. |
| GitLab أو Jenkins أو Buildkite أو CI shell | `keyhog scan . --format json-envelope --output keyhog.json` | احفظ التقرير ورمز الخروج عند النجاح والنتائج والأخطاء. استخدم `--git-diff <base>` فقط لبوابة تغيير الأسطر الأضيق صراحةً. | البايتات الموجودة في نسخة العمل، أو الفرق المحدد. |
| اعتماد مستودع بنتائج معروفة | أنشئ `.keyhog-baseline.json` والتزم به ثم افحص باستخدام `--baseline .keyhog-baseline.json`. | تبقى الهويات الموجودة مرئية في خط الأساس بينما تفشل النتائج الجديدة فقط في البوابة. | خط الأساس لا يكتم بيانات الاعتماد المتغيرة أو التغطية غير المكتملة. |
| استرداد Git تكراري | `keyhog scan --deep --git-history . --git-blobs . --daemon=off` | عاير السياسة العميقة مرة واحدة لكل فئة عامل. شغّل داخل العملية. | مستودع واحد. `--git-history` يغطي فقط سلالة نسخة العمل الحالية، لذا يُفوَّت فرع لم تسحبه أبداً دون فجوة تغطية؛ `--git-blobs` يصل أيضاً إلى الكائنات المعلقة والالتزامات المعدّلة بعيداً والمخازن المؤقتة (stashes) والملاحظات ورسائل الوسوم المشروحة والمراجع المعبأة. |
| فحص حاوية أو أرشيف | `keyhog scan --docker-image registry/app:v1` أو `keyhog scan incoming/` | احتفظ بتقرير مغلف بحيث تبقى الأعضاء المتخطاة أو التالفة أو المشفرة أو غير الآمنة أو كبيرة الحجم مرئية. | فقط الصورة أو مسار نظام الملفات المحدد والتنسيقات المتداخلة المدعومة. |
| فحص URL أو استجابة أو HAR | `keyhog scan --url https://api.example.com/config` أو `keyhog scan capture.har` | استخدم حدود المصدر المحدودة واحفظ المغلف الطرفي. | فقط الاستجابات المُجلَبة أو إدخالات الالتقاط. هذا ليس زاحفاً. |
| قائمة جرد مؤسسة أو سحابة | `keyhog scan --daemon=off --github-org acme --format json-envelope --output acme.json` | قسّم حسب المزود أو المالك أو الحاوية. شغّل الأقسام المستقلة بشكل متزامن مع تقرير وحالة لكل منها. | قائمة جرد مزود واحدة محددة لكل وظيفة. تبقى حدود الترقيم أو الكائنات حدود تغطية. |
| تأكيد ما إذا كانت النتائج المؤهلة حيّة | `keyhog scan . --verify` | تزامن المزود وضوابط المعدل منفصلة عن عمال الماسح. | يرسل طلبات مشتقة من بيانات الاعتماد إلى نقاط نهاية المزود المُعلنة. لا يدعم كل كاشف التحقق. |
| فحص صحة المضيف بالكامل | `sudo keyhog scan-system --space 50G` | يستخدم جميع نوى CPU افتراضياً ويفحص تاريخ Git المكتشف بعد بيانات نظام الملفات. | أنظمة الملفات المحلية المثبتة. التركيبات الشبكية اختيارية وسقف المساحة صارم. |
| فحص دليل أو تاريخ أو أرشيف أو بعيد أو قائمة جرد سحابية مدعوم بـ GPU على Unix | عاير التوجيه التلقائي، ثم ابدأ `keyhog daemon start --mass`، ثم شغّل `keyhog scan --daemon=mass <SOURCE>`. | يدفق دفعات محدودة عبر عامل CPU أو Hyperscan أو CUDA أو Metal أو WGPU مُجمّع واحد. أضف `--incremental` لأشجار نظام الملفات الدافئة غير المتغيرة. يبلغ الإيصال الطرفي عن الإجمالي الدقيق ودفعات GPU والقطع والبايتات وحصة GPU والإنتاجية. | خطوط الأساس والتحقق والإغلاق والإعدادات المسبقة والتراكبات وتغييرات سياسة الماسح الأخرى تُرفض قبل الاقتناء. تنطبق الحالة التزايدية فقط على جذور نظام الملفات المحلية للخفيّة. |
### افحص كل حدود مصدر مدعومة
استخدم أمراً واحداً لكل حدود. احتفظ بتقرير `json-envelope` ورمز الخروج الخام لكل قسم جرد.
| المصدر أو حالة الاستخدام | الأمر |
|---|---|
| عدة جذور محلية | `keyhog scan services/api services/web deploy/` |
| ملفات متغيرة باستمرار | `keyhog watch services/api deploy/` |
| بايتات مرحلية أو أسطر متغيرة أو تاريخ قابل للوصول أو كائنات | `keyhog scan --git-staged` أو `--git-diff main` أو `--git-history .` أو `--git-blobs .` |
| ثنائيات أصلية وسلاسل البرامج الثابتة | `keyhog scan --binary firmware.bin` (فحص الدليل العادي يتخطى الثنائيات ويخرج بـ `0` أيضاً) |
| أرشيفات ومصادر مضغوطة | `keyhog scan incoming/` (تتوسع الأعضاء المدعومة تلقائياً) |
| طبقات صور Docker | `keyhog scan --docker-image registry/app:v1` |
| JavaScript أو خرائط المصدر أو WASM أو استجابة نقطة نهاية | `keyhog scan --url https://api.example.com/config` |
| التقاطات طلبات واستجابات HTTP | `keyhog scan capture.har` |
| مشكلات GitHub وطلبات السحب والمناقشات والويكي وgists | `keyhog scan --github-collaboration owner/repo --github-all` |
| قوائم جرد GitHub أو GitLab أو Bitbucket | `--github-org ORG` أو `--gitlab-group GROUP` أو `--bitbucket-workspace WORKSPACE` |
| قوائم جرد S3 أو GCS أو Azure Blob | `--s3-bucket BUCKET` أو `--gcs-bucket BUCKET` أو `--azure-container-url URL` |
| تدفق محدود من أداة أخرى | `producer \| keyhog scan --stdin` (استخدم `set -o pipefail` بحيث يُظهر المنتج الفاشل خطأه الخاص، لا فحصاً صفري البايتات) |
فحص الدليل العادي لا يقرأ الثنائيات الأصلية. كل واحدة تصبح فجوة تغطية `binary (extension or content sniff)`، ويظل الفحص يخرج بـ `0`، ولا يغيّر `--no-default-excludes` ذلك، لذا مرّر `--binary` عندما تكون الأصول المُجمّعة ضمن النطاق. يتطلب هذا العلم بناءً بميزة `binary`، المتوفرة في تثبيت crates.io الافتراضي وغير المتوفرة في ميزة `ci` الخفيفة.
استخراج الثنائيات الأصلية يبلغ عن بيانات اعتماد كاملة تلبي عقد الشكل الصريح لكاشف مسمى. يكتم أجزاء البادئة القصيرة والسلاسل العامة الشبيهة بالإسناد من أقسام البيانات المُجمّعة لأن تلك البايتات لا تحتفظ بسياق المصدر.
جلب نقاط النهاية محدود ومُدقَّق ضد SSRF. ليس زاحفاً. تتطلب نقاط نهاية السحابة الخاصة وإعادة توجيه بيانات الاعتماد أعلام الثقة الصريحة الخاصة بها. رموز المزود تنتمي إلى متغيرات البيئة الموثقة، لا وسائط العملية.
استخدم [محدد سير العمل](https://santhreal.github.io/keyhog/capabilities.html) لتفاصيل المصدر والسياسة، و[دليل GitHub Action](https://santhreal.github.io/keyhog/workflows/github-action.html) لبوابة المستودع المُدارة، و[دليل CI المباشر](https://santhreal.github.io/keyhog/workflows/ci.html) للتقارير الدائمة ومعالجة الخروج، و[دليل المسح الشامل](https://santhreal.github.io/keyhog/guides/mass-scanning.html) للتقسيم والتجميع. يغطي [كتاب الوصفات](https://santhreal.github.io/keyhog/recipes.html) الحاويات والأرشيفات وعناوين URL ومحتوى تعاون GitHub والمصادر السحابية.
### السرعة والتزامن دون تخمين
ابدأ بالإعدادات الافتراضية. لا يمكن لـ Cargo تنفيذ KeyHog بعد `cargo install`، لذا شغّل الأوامر أدناه مرة واحدة بعد تثبيت بناء Cargo متعدد الواجهات الخلفية ومرة أخرى بعد تغيير المضيف أو الثنائي أو مجموعة كاشفات أو برنامج التشغيل أو فئات عبء العمل:```sh
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
| التحكم | استخدمه من أجل | حافظ على هذا الثابت |
|---|---|---|
--backend auto المُعاير | التحديد الروتيني لوحدة المعالجة المركزية أو Hyperscan أو GPU. | الخلفية الصريحة هي تجاوز تشخيصي، وليست إعدادًا افتراضيًا أسرع. |
--threads <N> | حجز سعة وحدة المعالجة المركزية على مُشغّل مشترك. يجب عادةً تركه غير مضبوط على المضيفات المخصصة حتى يستخدم KeyHog النوى المتاحة. | يجب أن تكون كل قيمة موجبة. تمتلك عدة عمليات KeyHog متزامنة كلٌّ منها مجموعة عمال خاصة بها، لذا قسّم ميزانية المضيف عبر الأقسام. |
--reader-threads <N> | خطوط أنابيب التخزين المُقاسة حيث يكون عمل القارئ، وليس الفحص، هو عنق الزجاجة. | الافتراضي مشتق من مجموعة عمال الفحص. اتركه غير مضبوط حتى يُظهر التنميط عنق زجاجة في القارئ. |
--incremental و --incremental-cache <PATH> | عمليات الفحص المتكررة لنفس الشجرة الموثوقة. | لا تشارك فهرسًا واحدًا عبر مستودعات غير مرتبطة أو مهام غير موثوقة. |
| أقسام المزوّد أو المستودع | فحص متزامن للنطاق وإعادة محاولات مستقلة. | حافظ على غلاف طرفي واحد ورمز خروج خام واحد لكل قسم. لا تجمع النتائج وتتجاهل حالة التغطية. |
--verify-concurrency و --verify-rate و --verify-batch | تحديد حدود فحوصات المزوّد المباشرة بشكل مستقل عن فحص الملفات. | يرسل التحقق طلبات مشتقة من بيانات الاعتماد. حدود معدل المزوّد، وليس عدد وحدات المعالجة المركزية، هي التي تمتلك هذا التزامن. |
| الخفي الجماعي | تدفقات الدليل أو السجل أو الأرشيف أو البعيد أو السحابي بمقياس تيرابايت على عامل Unix واحد. | كل إطار محدود بـ 8 MiB و1,024 كتلة. يسلسل الخفي حالة الأجزاء ويعيد إيصال تنفيذ CPU/GPU دقيقًا. |
--fast أو الافتراضي أو --deep أو --precision | اختيار سياسة صريحة لتكلفة الاكتشاف والاستدعاء. | هذه الإعدادات المسبقة متنافية وتغيّر التغطية. إنها ليست مقابض سرعة قابلة للتبديل. |
افحص السياسة المُحلّة باستخدام keyhog config --effective. استخدم --profile
لقياس مراحل الفحص الثابتة وتشغيل المشغّل الكامل قبل تغيير
عناصر التحكم في القارئ أو الدفعة أو عمق القناة. يسجّل التقرير منخفض الحمل
المصدر والخلفية والذاكرة المؤقتة وعبء العمل والخيوط والإدخال وانتقالات الحالة وزمن وحدة المعالجة المركزية
والذاكرة القصوى وSHA-256 الثنائي الدقيق وSHA-256 للميزات المفعّلة وهدف الثلاثي وملف
البناء والمُجمِّع والمُخصِّص وSHA-256 للخلفية المرتبطة وSHA-256 لمجموعة الكاشف
وBLAKE3 للكاشف المفعّل وBLAKE3 للخطة المُجمَّعة وأصل الكاشف المُجزَّأ
وBLAKE3 للتكوين المُحلّ بالكامل وBLAKE3 لسياسة الأداء والإعداد المسبق
وحالة الحماية المطبّقة ومهايئات المصدر وBLAKE3 لهدف المصدر المُجزَّأ
وBLAKE3 لقسم المصدر المُجزَّأ وبايتات المصدر الخام وتفرّع وحدة المصدر
والبايتات المشتقة من فك الترميز والبايتات المُنجزة لإرسال الخلفية وحاويات الحجم/التفرّع
المستقرة. تبقى نطاقات البايت التي لا يستطيع مهايئ المصدر الخاص بها تمييزها بعد
غير متاحة صراحةً بدلًا من أن تصبح أصفارًا مُقاسة. لا يسجّل التقرير
محتوى المصدر أو قيم بيانات الاعتماد أو المسارات الخام أو عناوين URL الخام أو قيم
التكوين الخام. استخدم --perf-trace فقط للعدادات التشخيصية الباهظة لكل نمط وللخلفية.
أبقِ عناصر التحكم المتقدمة في خط الأنابيب غير مضبوطة ما لم يُظهر قياس قابل للتكرار على
العامل المستهدف تحسنًا.
لإجراء فحص متكرر كامل للمستودع:```sh
keyhog scan . --incremental
--format json-envelope --output keyhog.json
للمشغّل المشترك حيث يتم تخصيص أربعة عمال ماسح ضوئي وعامل قارئ واحد للمهمة:```sh
keyhog scan . --threads 4 --reader-threads 1 \
--format json-envelope --output keyhog.json
الأمر الثاني هو ميزانية موارد، وليس قيمة مثلى عامة. قم بقياس المضيف الهدف قبل اختيار أعداد العمال الصريحة.
بالنسبة إلى الاسترداد العميق والفرز الشامل للنظام، استخدم أدلتهما المخصصة لأن نطاق تغطيتهما وقواعد إكمالهما تختلفان عن الفحص العادي للمستودع.
معايير أداء ماسح الأسرار
تقارن هذه اللوحات سياسة الكشف، وطلبات تنفيذ CPU وGPU، وسلوك ذاكرة التخزين المؤقت التزايدية، وطلبات الخفي الدافئ. كل قيمة مولّدة من لقطة المعايير المفحوصة. تربط اللقطة إصدار الماسح، وملخص الملف التنفيذي، وملخص الكاشف، والمجموعة، والمضيف، والطابع الزمني للتشغيل. استخدم دليل المعايير الكامل لتوثيق المنافسين والاستدعاء لكل فئة.
دقة الكشف
فحص KeyHog KeyHog v0.5.70 مجموعة المرآة: 15,000 نموذجًا، و3,000 إيجابية مُعلَّمة، و2,431,242 بايت إدخال. تم استبعاد بيان مفاتيح الإجابة من شجرة الفحص. يستخدم الصف السياسة الافتراضية على مسار Hyperscan/SIMD الصريح على AMD Ryzen 9 9950X 16-Core Processor.
| الدقة | الاستدعاء | F1 | الإيجابيات الحقيقية | الإيجابيات الكاذبة | السلبيات الكاذبة |
|---|---|---|---|---|---|
| 0.9651 | 0.9027 | 0.9328 | 2,708 | 98 | 292 |
كانت شجرة المصدر المتتبَّعة نظيفة.
مسارات التنفيذ، والإعدادات المسبقة، والذاكرة المؤقتة
تم القياس على AMD Ryzen 9 9950X 16-Core Processor مع NVIDIA GeForce RTX 5090، و32 نواة منطقية، و15,000 نموذجًا، و3,000 إيجابية مُعلَّمة، و2,431,242 بايت إدخال. الماسح: KeyHog v0.5.70. كانت شجرة المصدر المتتبَّعة نظيفة.
الفحص الكامل حسب مسار التنفيذ
تستخدم جميع الصفوف سياسة الكشف الافتراضية مع ذاكرة مؤقتة تزايدية وخفي معطّل. يسجل الصف التلقائي السياسة المطلوبة، لكن نتيجة المعيار لا تربط المسار المستمر المحدد، لذا فهي ليست دليل توجيه. تتضمن صفوف GPU الاستحواذ وبدء تشغيل الماسح الكامل على هذه المجموعة الصغيرة؛ وهي ليست قياسات عبور نواة GPU.
| المسار المطلوب | الوقت الفعلي | الإنتاجية | ذروة RSS | F1 |
|---|---|---|---|---|
| Hyperscan/SIMD | 860 ms | 2.70 MB/s | 416 MiB | 0.9328 |
| Pure-Rust CPU | 903 ms | 2.57 MB/s | 509 MiB | 0.9328 |
| CUDA | 2.03 s | 1.14 MB/s | 963 MiB | 0.9328 |
| WGPU | 1.97 s | 1.18 MB/s | 1264 MiB | 0.9328 |
| تلقائي | 1.46 s | 1.59 MB/s | 634 MiB | 0.9328 |
سياسة الكشف على Hyperscan/SIMD
يظل المسار والذاكرة المؤقتة وحالة الخفي والمجموعة والمضيف ثابتة. تغيّر الإعدادات المسبقة عمل الكشف، لذا قارن الدقة والاستدعاء بالإضافة إلى الوقت.
| السياسة | الوقت الفعلي | الدقة | الاستدعاء | F1 | النتائج |
|---|---|---|---|---|---|
| سريع | 737 ms | 0.9700 | 0.8837 | 0.9248 | 2,738 |
| افتراضي | 860 ms | 0.9651 | 0.9027 | 0.9328 | 2,816 |
| عميق | 861 ms | 0.9645 | 0.9067 | 0.9347 | 2,845 |
| دقة عالية | 849 ms | 0.9590 | 0.6397 | 0.7674 | 2,001 |
إعادة تشغيل دافئة تزايدية
يملأ المعيار فهرس BLAKE3 Merkle، ثم يوقّت الفحص الثاني المتطابق. تتغير الشجرة الاصطناعية الصغيرة قليلًا لأن بدء تشغيل الماسح يهيمن؛ قم بقياس مستودعك قبل الادعاء بتسريع.
| سياسة Hyperscan/SIMD الافتراضية | الوقت الفعلي | الإنتاجية | ذروة RSS |
|---|---|---|---|
| ذاكرة مؤقتة معطلة | 860 ms | 2.70 MB/s | 416 MiB |
| ذاكرة مؤقتة تزايدية دافئة | 617 ms | 3.76 MB/s | 457 MiB |
طلبات الخفي الدافئ
تم فحص ملف عادي حتمي واحد بحجم 8 MiB (sha256:afafbe7b6487fd62866f510e7c281a9e7bfeaa8dc585d7b0478c92ee6c4f5ef5) مرة واحدة داخل العملية ومرة عبر خفي مملوك بعد طلب إحماء واحد. وقت الخفي هو طلب العميل؛ ينتمي RSS الخفي إلى الخادم المقيم.
| المسار الصريح | داخل العملية | خفي دافئ | دافئ / لمرة واحدة | RSS داخل العملية | RSS الخفي |
|---|---|---|---|---|---|
| Hyperscan/SIMD | 323 ms | 106 ms | 0.33× | 63 MiB | 74 MiB |
| Pure-Rust CPU | 278 ms | 109 ms | 0.39× | 62 MiB | 66 MiB |
| CUDA | 1.65 s | 232 ms | 0.14× | 674 MiB | 666 MiB |
| WGPU | 1.33 s | 237 ms | 0.18× | 596 MiB | 600 MiB |
تغطي هذه الصفوف مسار الملف الواحد الدافئ. يقبل المسار الجماعي أيضًا دفعات دليل محدودة ومصادر بعيدة؛ يُقاس مسار نظام الملفات التزايدي الخاص به بشكل منفصل.
توسيع CPU، والقارئ، والتخزين، والحجم، والتقسيم
تم إنشاؤه بواسطة make -C benchmarks readme-scaling من benchmarks/reports/readme-scaling.json. أجرى الإطار 3 تجارب مقيسة بعد إحماء واحد مع توجيه simd صريح وخفي معطّل. يستخدم توسيع العمال ذاكرة تخزين مؤقتة دافئة للعميل لعزل عمل CPU. تطلب صفوف القارئ وحجم المجموعة والتخزين والتقسيم إخلاء صفحات نظيفة مع posix_fadvise حيث يدعم النظام الأساسي ذلك؛ تسجل اللقطة السياسة في كل صف. كل عبء عمل حتمي بالبايت وخالٍ من النتائج.
المضيف: AMD Ryzen 9 9950X 16-Core Processor، 32 نواة منطقية فعّالة، 94,140 MiB ذاكرة وصول عشوائي، Linux 6.17.0-19-generic. الدليل: clean، ثنائي 274b045489c4.
توسيع عمال الفحص
| العمال | خيوط القارئ | متوسط الوقت الفعلي | p95 الوقت الفعلي | الإنتاجية | التسريع | الكفاءة | متوسط ذروة RSS |
|---|---|---|---|---|---|---|---|
| 1 | تلقائي | 8,134.4 ms | 8,135.4 ms | 7.9 MiB/s | 1.00x | 100.0% | 47.0 MiB |
| 2 | تلقائي | 4,398.2 ms | 6,906.7 ms | 14.6 MiB/s | 1.85x | 92.5% | 50.3 MiB |
| 4 | تلقائي | 2,392.6 ms | 6,245.2 ms | 26.7 MiB/s | 3.40x | 85.0% | 57.2 MiB |
| 8 | تلقائي | 1,816.3 ms | 6,117.6 ms | 35.2 MiB/s | 4.48x | 56.0% | 63.4 MiB |
| 16 | تلقائي | 1,428.5 ms | 6,867.7 ms | 44.8 MiB/s | 5.69x | 35.6% | 78.4 MiB |
| 32 | تلقائي | 1,862.8 ms | 5,939.1 ms | 34.4 MiB/s | 4.37x | 13.6% | 126.7 MiB |
توسيع قارئ نظام الملفات
| عمال الفحص | خيوط القارئ | متوسط الوقت الفعلي | p95 الوقت الفعلي | الإنتاجية | نسبة إلى قارئ واحد | متوسط ذروة RSS |
|---|---|---|---|---|---|---|
| 32 | 1 | 1,898.7 ms | 1,922.1 ms | 33.7 MiB/s | 1.00x | 121.3 MiB |
| 32 | 2 | 1,881.7 ms | 1,887.5 ms | 34.0 MiB/s | 1.01x | 122.8 MiB |
| 32 | 4 | 1,874.2 ms | 1,891.2 ms | 34.1 MiB/s | 1.01x | 126.6 MiB |
| 32 | 8 | 1,873.2 ms | 1,885.7 ms | 34.2 MiB/s | 1.01x | 133.4 MiB |
| 32 | 16 | 1,856.8 ms | 1,868.5 ms | 34.5 MiB/s | 1.02x | 153.9 MiB |
| 32 | 32 | 1,877.3 ms | 1,880.4 ms | 34.1 MiB/s | 1.01x | 179.5 MiB |
توسيع حجم المجموعة
| المجموعة | الملفات | البايتات الدقيقة | متوسط الوقت الفعلي | p95 الوقت الفعلي | الإنتاجية | متوسط ذروة RSS |
|---|---|---|---|---|---|---|
| صغيرة | 256 | 8 MiB | 869.9 ms | 886.1 ms | 9.2 MiB/s | 111.1 MiB |
| متوسطة | 1,024 | 64 MiB | 1,859.9 ms | 1,874.8 ms | 34.4 MiB/s | 126.3 MiB |
| كبيرة | 2,048 | 256 MiB | 5,214.9 ms | 5,321.7 ms | 49.1 MiB/s | 137.1 MiB |
توسيع التخزين
| فئة التخزين | نظام الملفات | معرف الجهاز | متوسط الوقت الفعلي | p95 الوقت الفعلي | الإنتاجية | نسبة إلى التخزين الأول | متوسط ذروة RSS |
|---|---|---|---|---|---|---|---|
| مساحة العمل | ext4 | 66305 | 1,847.4 ms | 1,863.4 ms | 34.6 MiB/s | 1.00x | 127.0 MiB |
| مؤقت محلي | tmpfs | 116 | 1,870.8 ms | 1,887.3 ms | 34.2 MiB/s | 0.99x | 124.9 MiB |
توسيع التقسيم المتزامن
| العمليات | العمال لكل عملية | إجمالي العمال | إجمالي الملفات | إجمالي البايتات | متوسط الوقت الفعلي | الإنتاجية الإجمالية | التسريع | متوسط مجموع ذروة RSS |
|---|---|---|---|---|---|---|---|---|
| 1 | 32 | 32 | 256 | 8 MiB | 871.9 ms | 9.2 MiB/s | 1.00x | 111.5 MiB |
| 2 | 16 | 32 | 512 | 16 MiB | 404.6 ms | 39.5 MiB/s | 4.31x | 134.0 MiB |
| 4 | 8 | 32 | 1,024 | 32 MiB | 571.1 ms | 56.0 MiB/s | 6.11x | 227.2 MiB |
هذه الصفوف قياسات، وليست ثوابت ضبط عامة. شغّل المولّد على المضيف الهدف والتخزين. استخدم نقطة الانحناء حيث تتوقف الإنتاجية عن التحسن، ثم احجز CPU والذاكرة لمشغّل CI أو طبقة التنسيق.
أعد إنتاج جميع مجموعات المعايير الأربع باستخدام make -C benchmarks readme-matrix.
يقيس الأمر المصفوفة المطلوبة ويفشل إذا كان أي صف مطلوب من CPU،
أو Hyperscan، أو CUDA، أو Metal، أو WGPU، أو إعداد مسبق، أو ذاكرة مؤقتة، أو خفي، أو خيط، أو قارئ، أو تخزين، أو حجم مجموعة،
أو تقسيم غير متاح. استخدم
make -C benchmarks readme-matrix-check للتحقق من أن اللقطتين والتقارير
وREADME متطابقة.
اختر تكوين فحص
ابدأ بالسياسة الافتراضية والتوجيه التلقائي المعاير. غيّر محورًا واحدًا فقط عندما تتطلب سير العمل ذلك:
| سير العمل | سياسة الكشف | التنفيذ وإعادة الاستخدام | تحكم إضافي |
|---|---|---|---|
| أول فحص للمستودع | افتراضي | auto معاير؛ --daemon=auto | راجع جميع النتائج قبل إضافة عمليات القمع. |
| فحص شجري محلي متكرر أو فحص CI | افتراضي | auto معاير؛ --incremental | احتفظ بالذاكرة المؤقتة التزايدية فقط بين فحوصات نفس الشجرة الموثوقة. |
| حلقة تغذية راجعة قصيرة | --fast | auto معاير؛ --incremental اختياري | اقبل تغطية فك ترميز وإنتروبيا وML مخفضة. شغّل السياسة الافتراضية قبل الدمج. |
| استرداد بأعلى استدعاء | --deep | داخل العملية | العميق متنافٍ مع السريع والدقة العالية، وغير مؤهل للخفي. |
| جرد كبير منخفض الضوضاء | --precision | داخل العملية لمجموعات المستودعات والتاريخ والمصادر السحابية | يرفع الإعداد المسبق حدود الثقة ويعطل اكتشاف الإنتروبيا. قد يفوت بيانات اعتماد منخفضة الثقة. |
| جرد دليل أو تاريخ أو أرشيف أو بعيد أو سحابي بمقياس TB على Unix | افتراضي | keyhog daemon start --mass، ثم --daemon=mass | تبقى الدفعات محدودة عند 8 MiB و1,024 قطعة. احتفظ بتقرير التغطية الطرفي وإيصال تنفيذ GPU. |
| تحقق حي من بيانات الاعتماد | افتراضي | داخل العملية | أضف --verify صراحةً. يرسل التحقق طلبات مشتقة من بيانات الاعتماد إلى المزودين. |
| فحص Linux بدون تبديل | افتراضي بالإضافة إلى --lockdown | داخل العملية؛ ذاكرة مؤقتة تزايدية معطلة | يرفض وضع القفل التحقق والأسرار النصية الصريحة والوضع السريع والمفاتيح التي تقلل الاكتمال. |
--fast و--deep و--precision إعدادات كشف مسبقة متنافية.
--lockdown وضع تنفيذ فاشل-مغلق، وليس إعدادًا مسبقًا رابعًا. قيم
--backend الصريحة هي تشخيصات وتجاوزات معايير. لا تحل محل
الدليل المستمر الأسرع-الصحيح المستخدم في التوجيه التلقائي. راجع
التكوين،
معايرة التوجيه التلقائي،
الخفي والفحوصات الدافئة،
والتقوية للعقود الكاملة.
كيف يعمل KeyHog
يجمع KeyHog كاشفاته البالغ عددها 934 في خطة تشغيل واستخراج مشتركة،
ويفك ترميز الترميزات المتداخلة قبل المطابقة، ويطبق تسجيلًا وأدلة
وقمعًا لكل كاشف. يتوفر Pure-Rust CPU (cpu-fallback) دائمًا.
يستخدم مسار Hyperscan (simd-regex) Hyperscan عند وجود تلك الميزة؛
تستخدم البنيات المحمولة مسار CPU. CUDA (gpu-cuda-region-presence) وMetal
(gpu-metal-region-presence) وWGPU (gpu-wgpu-region-presence) نظراء
في محدد توجيه تلقائي مدعوم بالأدلة، وليس سلسلة تراجع. تقيس المعايرة
كل نظير مؤهل وتحتفظ بالمسار الأسرع الذي تطابق نتائجه الكاملة
مسار المرجع للثنائي الدقيق وحالة الكاشف والتكوين
والمضيف والمسرع وفئة عبء العمل. يوقف قرار مفقود أو قديم أو غير صالح أو غير مكتمل
فحصًا تلقائيًا قبل التنفيذ ويبلغ عن كيفية إعادة المعايرة.
لا يستبدل خلفية أخرى بصمت أبدًا.
راجع البنية لخريطة المستودع واتجاه التبعيات وخط أنابيب البايتات-إلى-النتائج ونقاط دخول التنميط. راجع الخلفيات والتوجيه لعقود التنفيذ ومعايرة التوجيه التلقائي للتكافؤ وهوية عبء العمل ودورة حياة الذاكرة المؤقتة وإجراءات الإصلاح.
التوثيق الكامل: santhreal.github.io/keyhog - التثبيت، أول فحص، تنسيقات الإخراج، داخليات الكشف، عمليات القمع، التحقق، تكامل pre-commit + CI، مرجع CLI، التوجيه التلقائي، رموز الخروج، متغيرات البيئة، والمساهمة. المصدر تحت docs/.
تثبيت KeyHog
ثبّت إصدار crates.io الحالي:```sh cargo install keyhog --locked
قم ببناء نسخة المستودع عندما تحتاج إلى تغيير غير مُصدر:```sh
cargo install --path crates/cli --locked
أكّد البنية المثبّتة:```sh keyhog --version --full keyhog doctor
استخدم [دليل التثبيت](https://santhreal.github.io/keyhog/install.html) لمتطلبات سلسلة أدوات Rust، وملفات تعريف الميزات، والاعتماديات الخاصة بوقت التشغيل لكل منصة.
## ما يكتشفه
934 كاشفًا مدمجًا مع تحقق غير متصل بالإنترنت مملوك للكاشف ومرافقات:
- **مزودو السحابة:** AWS (مفتاح الوصول + السر + التحقق من STS)،
Azure (مفتاح الاشتراك، مفتاح حساب التخزين، SAS)، GCP (حساب الخدمة،
مفتاح API)، Cloudflare، Heroku، Vercel، Supabase.
- **معالجات الدفع:** Stripe، Braintree، Razorpay، Paddle، Plaid،
Square، وPayPal، مع فحوصات مملوكة للكاشف ومرافقات اختيارية أو إلزامية.
يتطلب سر مفتاح Razorpay معرف المفتاح القريب منه.
- **منصات المصدر:** رموز GitHub PAT (مع مجموع CRC32)، رموز GitLab،
كلمات مرور تطبيقات Bitbucket، رموز npm (مع مجموع اختباري)، Gitea / Forgejo
/ Codeberg.
- **المصادقة / الدخول الموحد:** Okta، Auth0، Clerk، JumpCloud، Kinde.
- **الاتصالات:** Slack، Discord، Twilio، SendGrid، Postmark، Mailgun،
Resend، Loops.
- **الذكاء الاصطناعي / التعلم الآلي:** OpenAI (sk-/sk-proj-)، Anthropic، Google AI Studio،
Cohere، Mistral، HuggingFace، Replicate. تتضمن بيانات اعتماد منظمة HuggingFace
كلاً من الصيغة الحالية `hf_` ورموز `api_org_` القديمة.
- **مديرو كلمات المرور:** مفاتيح سرية لحساب 1Password (`A3-` متبوعة
بخمسة أو ستة مكونات أبجدية رقمية كبيرة مقسمة).
- **قواعد البيانات:** سلاسل اتصال Postgres، MongoDB Atlas، دور خدمة Supabase،
PlanetScale، Neon، Turso، MySQL، عناوين Redis.
- **الاكتشاف العام + الانتروبيا:** `API_KEY=<كتلة عالية الانتروبيا>` يلتقط
بيانات اعتماد بدون كاشف مسمى، مقيدة بعتبات انتروبيا حسب السياق
+ تسجيل ML.
- **المواد التشفيرية:** مفاتيح خاصة RSA / EC / SSH، كتل PGP خاصة،
أسرار توقيع JWT.
يُشحن كل كاشف كـ [ملف TOML](https://github.com/santhreal/keyhog/blob/main/detectors) (بيانات، وليس كود):
بيانات وصفية للخدمة، أنماط regex، كلمات مفتاحية، أدوات تحقق غير متصلة، سياسة انتروبيا وML،
حقول مرافقة، ومعالج تحقق. إضافة كاشف جديد هي تغيير TOML واحد قابل للمراجعة؛
[دليل المساهمين](https://github.com/santhreal/keyhog/blob/main/CONTRIBUTING.md) يشرح ذلك خطوة بخطوة.
`keyhog explain <id>` يعرض المواصفات الكاملة لأي كاشف: الأنماط، الكلمات المفتاحية،
نقطة التحقق، بالإضافة إلى دليل تدوير مرتبط بالخدمة وإصلاح خطوة بخطوة،
بحيث لا يكون الاكتشاف صندوقًا أسود أبدًا:
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/7654/0fc64959950abfa39c0ba81a1f5fbde3fe17a57169d2edca38cb0f248c834470.gif" alt="keyhog explain github-classic-pat: تفريغ مواصفات الكاشف (النمط ghp_[A-Za-z0-9]{36}، الكلمة المفتاحية، عنوان التحقق) متبوعًا بدليل تدوير github والإصلاح خطوة بخطوة" width="860" />
</p>
تصفح إنشاء الكاشفات وفحصها في
[مرجع الكاشفات](https://github.com/santhreal/keyhog/blob/main/docs/src/detectors.md)، أو استعلم عن المجموعة المثبتة باستخدام
`keyhog detectors --search <مصطلح> --verbose`.
## لماذا استدعاء أعلى، وإيجابيات كاذبة أقل
- **فحص عبر فك التشفير.** ملفات Kubernetes `Secret`، دفاتر Jupyter
الملاحظات، حمولات JWT، بيئات مغلفة بـ base64، قيم Helm، وكتل `auth:` في docker-config.
يعامل المعالج الأولي المنظم إجراءات Helm المتوازنة كقيم وقت عرض خاملة
ويغلق محددات Jupyter المفقودة في نهاية الملف،
بحيث تظل البايتات الحرفية وخلايا الكود الكاملة مغطاة. يفك تشفير القيم المنظمة
في مكانها ويغذي كل كاشف لاحق بالنص الصريح. لا تحتاج الكاشفات
إلى إعادة تنفيذ فك التشفير كل منها على حدة. يستعيد الفحص الممكّن لفك التشفير أيضًا
تعبيرات XOR لمصفوفة البايتات في JavaScript وAES-256-CBC الخالية من الآثار الجانبية عندما
تكون جميع مواد الاسترداد مضمّنة، بما في ذلك أغلفة عبارات المرور المملحة الصارمة CryptoJS/OpenSSL.
لا ينفذ KeyHog المصدر أبدًا.
- **إعادة تجميع متعددة الأسطر.** استمرار `"sk-proj-" + \` في JavaScript،
سلاسل YAML متعددة الأسطر، استمرار الشرطة المائلة العكسية في Makefile،
مخرجات Helm / Jinja المقولبة، كلها تُعاد تجميعها قبل مطابقة regex.
- **التحقق من المرافقات.** المرافقات الإلزامية تقيّد الكاشفات عالية الضوضاء. يتم تخطي
مفتاح Twilio API بدون سره. المرافقات الاختيارية تثري تسجيل الأدلة أو التحقق.
لا يتطلب اكتشاف مفتاح الوصول AWS سره، لكن السر مطلوب للتحقق المباشر.
- **الحل عبر الكاشفات.** يمكن لملف TOML للكاشف أن يتطلب أو يرفض أو يضمّن
نتائج محدودة من كاشف آخر. يظل الحل حتميًا عبر ترتيب الإدخال،
والأهداف غير الصالحة أو التناقضات أو حلقات التبعية تفشل في تجميع المجموعة.
- **أحكام الأدلة.** يحمل كل اكتشاف طبقة `review` أو `likely` أو
`confirmed` دقيقة بالإضافة إلى رمز سبب أساسي. المجموع الاختباري الجوهري أو إثبات القواعد،
والمرافقات الإلزامية، والتحقق المباشر تنتج أدلة مؤكدة؛
الشكل القوي الخاص بالبائع في دور يحمل بيانات اعتماد ينتج أدلة محتملة؛
المراسي الضعيفة، والتعيينات العامة، والمرشحات القائمة على الانتروبيا فقط، وسياقات
الاختبار أو التوثيق أو القواعد أو المعرفات تبقى أدلة مراجعة.
`evidence_score` اختياري يكمل الحكم عند قياسه.
العتبة الافتراضية `0.40` تتحكم في أرضية الثقة الداخلية للماسح
وتبقى قابلة للتكوين مع `--min-confidence`.
- **معايرة بايزية لكل كاشف.** `keyhog calibrate --fp generic-api-key`
يكتب توزيعًا خلفيًا Beta(α,β). تستخدمه عمليات الفحص فقط عند `--calibration-cache`
أو `[system].calibration_cache` يشير إلى ذلك الملف، لذا يكون ضبط الثقة
صريحًا وقابلًا للتكرار بدلاً من الاعتماد على حالة ذاكرة تخزين مؤقت عشوائية للمضيف.
## الأداء
استخدم الإطار القابل للتكرار في [`benchmarks/`](https://github.com/santhreal/keyhog/blob/main/benchmarks) لمقارنة KeyHog،
Betterleaks، Kingfisher، Nosey Parker، TruffleHog، وTitus تحت عقد تسجيل واحد.
يستبعد الإطار بيان الحقيقة الأساسي من كل شجرة فحص.
تبقى الجداول المولدة فارغة حتى توجد عمليات تشغيل بالمخطط الحالي. نفّذ
`make -C benchmarks report` بعد القياس. لا تعدّل الجداول المولدة
يدويًا.
### لوحة صدارة الاكتشاف
<!-- BENCH:leaderboard:start -->
#### مجموعة مرآة صناعية بشكل SecretBench
المجموعة: **mirror** - 15000 عنصر اختبار، 3000 إيجابي مُعلَّم، 2,431,242 بايت. تم تسجيل كل ماسح بشكل متطابق (قاعدة تداخل SecretBench)؛ تم استبعاد بيان الإجابة الرئيسي من شجرة الفحص.
| الترتيب | الماسح | F1 | الدقة | الاستدعاء | النتائج | الوقت | ذروة RSS |
|---|---|---|---|---|---|---|---|
| 1 | **KeyHog** | **0.9328** | 0.9651 | 0.9027 | 2816 | 1.05s | 416 MB |
| 2 | TruffleHog | 0.5294 | 1.0000 | 0.3600 | 1080 | 1.59s | 300 MB |
| 3 | Kingfisher | 0.4683 | 0.3877 | 0.5913 | 5255 | 4.81s | 402 MB |
| 4 | Titus | 0.4207 | 0.3381 | 0.5567 | 5151 | 2.86s | 115 MB |
| 5 | Nosey Parker | 0.4186 | 0.3511 | 0.5183 | 4529 | 0.82s | 285 MB |
| 6 | Betterleaks | 0.3498 | 0.2241 | 0.7970 | 11113 | 0.74s | 198 MB |
#### مجموعة قواعد المنافس المحلية / قواعد الملعب الخاص
المجموعة: **homefield** - 2399 عنصر اختبار مُجمَّع من مجموعات قواعد الحقيقة الأرضية للمنافسين (قواعد Betterleaks وKingfisher؛ 1,057 إيجابي مُعلَّم، 1,342 سلبي، 772,974 بايت). تقييم متعدد الأدوات على الحقيقة الأرضية للمنافسين.
| الترتيب | الماسح | F1 | الدقة | الاستدعاء | النتائج | الوقت | ذروة RSS |
|---|---|---|---|---|---|---|---|
| 1 | **KeyHog** | **0.9214** | 0.9582 | 0.8874 | 979 | 0.72s | 384 MB |
| 2 | Betterleaks | 0.9056 | 0.9130 | 0.8984 | 1040 | 0.58s | 192 MB |
| 3 | Kingfisher | 0.8842 | 0.9250 | 0.8468 | 968 | 2.14s | 390 MB |
| 4 | TruffleHog | 0.4812 | 0.9850 | 0.3226 | 345 | 1.22s | 280 MB |
| 5 | Titus | 0.4635 | 0.3810 | 0.5913 | 1640 | 2.15s | 110 MB |
| 6 | Nosey Parker | 0.4520 | 0.3950 | 0.5280 | 1412 | 0.68s | 265 MB |
### مصدر النتائج
| الماسح | إصدار الماسح / بصمة الملف التنفيذي | هوية المجموعة | هوية المضيف | تاريخ التشغيل |
|---|---|---|---|---|
| KeyHog | الإصدار: KeyHog v0.5.70<br>الالتزام: d1eb2e09eb2c289181d93d719ce3f62411aeaf2c<br>مجموعة الكاشفات: 926 (926-4168e2c6c93a16ca)<br>هدف البناء: x86_64-linux<br>إصدار نموذج ML: moe-v1-246a05b92bec9aa3<br>بطاقة نموذج ML: مسجلة 2026-07-15؛ الميزات 55؛ F1 صناعي 0.971 / P 0.945 / R 0.999؛ F1 حقيقي 0.832 / P 0.753 / R 0.931 / [email protected] 0.938؛ كاشفات صفر الاستدعاء 2/32؛ تفاضل ستة ماسحات غير متاح<br>SHA-256 للملف التنفيذي: `2899ee53789bff9c531f72645f6c8380a7c873230dfb2b6857079467bc8d2dcd` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:29:39Z |
| TruffleHog | الإصدار: trufflehog 3.96.0<br>SHA-256 للملف التنفيذي: `6eb1f98fb890bf9361d8833c061e122dcb4f14fb7b71c65e603b7c096153c724` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:29:58Z |
| Kingfisher | الإصدار: kingfisher 1.94.0<br>SHA-256 للملف التنفيذي: `a49f8e9838d7f1da1e9f328a4dbc45a16996bce5078cde3ff1b8ad422d8ab07a` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:29:50Z |
| Titus | الإصدار: Titus v1.1.20 (منفذ Go لـ NoseyParker)<br>SHA-256 للملف التنفيذي: `0b9c126a6c280ba28c6ed8795f88bf9bd793164c15959a34921f47a7ed276bcf` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:30:03Z |
| Nosey Parker | الإصدار: noseyparker 0.24.0 تكوين البناء: الطابع الزمني للبناء: 2025-05-08T21:11:15.600909923Z الطابع الزمني للالتزام: 2025-05-08T17:04:47.000000000-04:00 فرع الالتزام: HEAD SHA للالتزام: 61fa4ca67e4ded1b47b3b9ecce618ae91f1ff2fe ميزات Cargo: color_backtrace,default,disable_trace,github,log,mimalloc,parquet,release التصحيح: true التحسين: 3 الهدف الثلاثي: x86_64-unknown-linux-gnu نظام البناء: نظام التشغيل: Ubuntu إصدار نظام التشغيل: Linux (Ubuntu 22.04) بائع وحدة المعالجة: AuthenticAMD علامة وحدة المعالجة: AMD EPYC 7763 64-Core Processor نوى وحدة المعالجة: 2 إصدار rustc: 1.86.0 قناة rustc: stable مضيف rustc الثلاثي: x86_64-unknown-linux-gnu تاريخ التزام rustc: 2025-03-31 SHA التزام rustc: 05f9846f893b09a1be1fc8560e33fc3c815cfecb إصدار LLVM لـ rustc: 19.1<br>SHA-256 للملف التنفيذي: `42d6e88bf77904866a9dda49d7cf333501e76b62e9054b112e67f81dc88e2b71` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:29:53Z |
| Betterleaks | الإصدار: betterleaks version dev<br>SHA-256 للملف التنفيذي: `466f7d34e1ebcf12ecd5939494f509c17125e54416226976fced2f046da56ba4` | mirror؛ 15,000 عنصر اختبار؛ 3,000 إيجابي مُعلَّم؛ 2,431,242 بايت | SHA-256/12 لاسم المضيف: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core Processor | 2026-08-11T01:29:43Z |
<!-- BENCH:leaderboard:end -->
### السرعة والذاكرة
<!-- BENCH:perf:start -->
#### مجموعة مرآة صناعية بشكل SecretBench
| الماسح | التكوين | المجموعة | الوقت | الإنتاجية | ذروة RSS |
|---|---|---|---|---|---|
| Betterleaks | `default-nocache-nodaemon-no-validate` | mirror | 0.74s | 3.1 MB/s | 198 MB |
| Nosey Parker | `default-nocache-nodaemon-no-git-history` | mirror | 0.82s | 2.8 MB/s | 285 MB |
| KeyHog | `simd-nocache-nodaemon-full` | mirror | 1.05s | 2.2 MB/s | 416 MB |
| TruffleHog | `default-nocache-nodaemon-no-verify` | mirror | 1.59s | 1.5 MB/s | 300 MB |
| Titus | `default-nocache-nodaemon-no-validate` | mirror | 2.86s | 0.8 MB/s | 115 MB |
| Kingfisher | `default-nocache-nodaemon-low-no-validate` | mirror | 4.81s | 0.5 MB/s | 402 MB |
#### مجموعة قواعد المنافس المحلية / قواعد الملعب الخاص
| الماسح | التكوين | المجموعة | الوقت | الإنتاجية | ذروة RSS |
|---|---|---|---|---|---|
| Betterleaks | `default-nocache-nodaemon-no-validate` | homefield | 0.58s | 1.3 MB/s | 192 MB |
| Nosey Parker | `default-nocache-nodaemon-no-git-history` | homefield | 0.68s | 1.1 MB/s | 265 MB |
| KeyHog | `simd-nocache-nodaemon-full` | homefield | 0.72s | 1.1 MB/s | 384 MB |
| TruffleHog | `default-nocache-nodaemon-no-verify` | homefield | 1.22s | 0.6 MB/s | 280 MB |
| Titus | `default-nocache-nodaemon-no-validate` | homefield | 2.15s | 0.4 MB/s | 110 MB |
| Kingfisher | `default-nocache-nodaemon-low-no-validate` | homefield | 2.14s | 0.4 MB/s | 390 MB |
<!-- BENCH:perf:end -->
### مقارنة الاستدعاء حسب الفئة
<!-- BENCH:gaps:start -->
_شريحة استدعاء تشخيصية فقط. تبقى الدقة الإجمالية وF1 هي عقد المقارنة؛ تُحتسب الإيجابيات الكاذبة في فئاتها المسجلة._
| الفئة | KeyHog P/R/F1 | KeyHog TP/FN | أفضل منافس P/R/F1 | فجوة الاستدعاء |
|---|---|---|---|---|
| `generic-high-entropy-string` | 1.000 / 0.434 / 0.606 | 73/95 | Betterleaks 1.000 / 0.798 / 0.887 | +0.363 |
<!-- BENCH:gaps:end -->
### قياسات الاسترداد الثابت المحدود
<!-- BENCH:recovery:start -->
التشغيل المحدد: الماسح **KeyHog** `KeyHog v0.5.70<br>الالتزام: d1eb2e09eb2c289181d93d719ce3f62411aeaf2c<br>مجموعة الكاشفات: 926 (926-4168e2c6c93a16ca)<br>هدف البناء: x86_64-linux<br>إصدار نموذج ML: moe-v1-246a05b92bec9aa3<br>بطاقة نموذج ML: مسجلة 2026-07-15؛ الميزات 55؛ F1 صناعي 0.971 / P 0.945 / R 0.999؛ F1 حقيقي 0.832 / P 0.753 / R 0.931 / [email protected] 0.938؛ كاشفات صفر الاستدعاء 2/32؛ تفاضل ستة ماسحات غير متاح`؛ المجموعة **mirror** (15,000 عنصر اختبار، 2,431,242 بايت)؛ مولدة `2026-08-11T01:29:39Z`؛ الأثر `mirror-keyhog-simd-nocache-nodaemon-full.json`.
مخطط القياسات: `static-recovery-v1`.
| التصنيف | العدد الدقيق |
|---|---:|
| مدعوم | 0 |
| غير مدعوم | 0 |
| خاطئ | 0 |
| سبب الرفض | العدد الدقيق |
|---|---:|
| _لا شيء_ | 0 |
<!-- BENCH:recovery:end -->
### أدلة Bloom الثنائية
<!-- BENCH:bloom:start -->
مخطط الأدلة: `bloom-evidence-v1`.
| الحقل | النتيجة الدقيقة |
|---|---|
| المجموعة | `samsung-creddata-fx-record-spans-v1` |
| مراجعة المجموعة | `f1de3f85dbdf42bf7b3467c0d273a4dfe44d56ee` |
| SHA-256 للمجموعة | `4f2de506f334521121bb5b4aef8a37bf0b8153a4f9115e7ba9392d0eed1757b9` |
| SHA-256 لعنصر الاختبار | `a0ff018dc0a64b2cc78b25999043d1a441afa0087070f4cd8d73ae82408a59b4` |
| SHA-256 للملف التنفيذي | `2899ee53789bff9c531f72645f6c8380a7c873230dfb2b6857079467bc8d2dcd` |
| SHA-256 لمجموعة كاشفات مساحة العمل | `d87e8b3d086e9ffa4c8a94f35a717ec710d5224e52e5b4fc7e71db30677609c9` |
| بصمة كاشفات الماسح | `8d789251e092959f` |
| SHA-256 لمجموعة الكاشفات | `3729bd72df768187420f37e08ab64cd2b5a8bac558002d8b0844f465e9a75711` |
| رفض Bloom | **110/51794 (0.21%)**؛ تم قبول 51684 |
| التوفر الخارجي | تم قياس 51794؛ 0 غير متاح صراحةً من 51794 معلنًا؛ الأسباب: |
| النتائج الممكّنة مقابل الملتف عليها | **متطابقة**؛ 977/977 نتيجة |
| SHA-256 لهوية النتيجة | `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` / `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` |
| كثافة/حالة Bloom | 1793/65536 خانة؛ `سليمة`؛ تشبع عند 39322 |
تربط هوية النتيجة الكاشف والملف والسطر ونطاق البايت وSHA-256 لبيانات الاعتماد؛ لا تُسجل بيانات الاعتماد النصية الصريحة أبدًا.
<!-- BENCH:bloom:end -->
إعادة الإنتاج: `make -C benchmarks canonical KEYHOG_BIN=/absolute/path/to/keyhog`
يعيد تشغيل مجموعة تشغيل mirror الدقيقة لـ KeyHog وBetterleaks وKingfisher وNosey Parker وTruffleHog و
Titus، بما في ذلك تفاضل CredData Bloom المرتبط بالملف التنفيذي،
و`make -C benchmarks report` يعيد توليد الجداول أعلاه و
`benchmarks/reports/`. راجع [`benchmarks/README.md`](https://github.com/santhreal/keyhog/blob/main/benchmarks/README.md)
للمجموعات (mirror، الملعب الخاص بالمنافسين، Samsung/CredData) ومصفوفة
الخلفية/الذاكرة المؤقتة/الخفي/نظام التشغيل/GPU.
## عمال خفي جماعيون مدعومون بـ GPU
يحافظ الخفي الجماعي Unix الاختياري على ماسح واحد مُجمَّع وحالته الخلفية المعايرة
دافئة. ترسل عمليات فحص نظام الملفات المحلي فقط الجذر الأساسي و
بيانات وصفية لسياسة المصدر؛ يقرأ الخفي الملفات ويجمّعها في عمليته الخاصة.
المصادر Git والثنائية والبعيدة والسحابية التي تتطلب بيانات اعتماد من جانب العميل
تستخدم إطارات أجزاء محدودة محمية.```sh
# Terminal 1
keyhog calibrate-autoroute --policy default
keyhog daemon start --mass
# Terminal 2, after the daemon prints its ready line
keyhog scan --daemon=mass /srv/inventory/team-a \
--format json-envelope --output team-a.json
keyhog daemon stop
--daemon=mass هو مسار إلزامي. لا يعيد المحاولة أبدًا داخل العملية. كل دفعة
محدودة بـ 8 MiB و1,024 قطعة، بغض النظر عن الحجم الإجمالي للمدخلات. حافظ على
غلاف التغطية، وحالة الخروج، وإيصال التنفيذ الطرفي لكل قسم من أقسام الجرد.
انظر دورة حياة الخفي، والتوجيه، والإيصالات وتقسيم الجرد.
فرز بيانات الاعتماد على مستوى النظام```sh
sudo keyhog scan-system --space 50G sudo keyhog scan-system --include-network --output system-findings.json
`scan-system` هو تدقيق محلي محدود النطاق للمضيف، وليس بديلاً عن تقسيم المخزون في المستودع أو السحابة. إنه يحدّد نطاقه بإجمالي البايتات الممسوحة وليس بالمسار: `--space` هو السقف، ويتم تخطي أنظمة الملفات المثبتة عبر الشبكة إلا إذا مررت `--include-network`. راجع سلوك التركيب، وأنظمة ملفات الشبكة، وسقف المساحة، والصلاحيات قبل تشغيله. انظر
[الفرز على مستوى النظام](https://santhreal.github.io/keyhog/guides/system-wide-triage.html).
## تقييد عمليات الفحص الحساسة محليًا
وضع `--lockdown` في لينكس هو وضع حماية للعمليات يُغلق عند الفشل:```sh
keyhog scan . --daemon=off --lockdown
يقفل الذاكرة الحالية والمستقبلية، ويعطّل تفريغ النواة والذاكرة المؤقتة التزايدية، ويبقى داخل العملية، ويرفض التحقق، والإخراج كنص صريح، والوضع السريع، والمفاتيح التي تقلل الاكتمال. يفشل على المنصات غير المدعومة أو عند عدم كفاية سعة الذاكرة المقفلة. انظر التقوية ومعالجة البيانات.
استخدام KeyHog كمكتبة Rust```rust
use keyhog_core::{Chunk, ChunkMetadata, RawMatch}; use keyhog_scanner::CompiledScanner;
let detectors = keyhog_core::load_embedded_detectors_or_fail()?; let scanner = CompiledScanner::compile(detectors)?; let findings = scanner.scan(&Chunk { data: "TOKEN=sk_live_EXAMPLE…".into(), metadata: ChunkMetadata::default(), })?; let report_safe: Vec<_> = findings.iter().map(RawMatch::to_redacted).collect();
الطرق الافتراضية للمكتبة هي مراجع CPU محمولة وحتمية. الطرق
الخلفية الصريحة تُرجع أخطاءً مُنمّطة بدلاً من إنهاء العملية أو
استبدال محرك آخر بصمت. يمكن أن تحتوي الأجزاء الخام والمطابقات على
نص عادي. قم بتحويلها باستخدام `RawMatch::to_redacted`، أو استخدم قيم
`VerifiedFinding` النهائية، قبل حدود JSON أو السجلات أو القرص أو الشبكة.
يحدد [دليل البنية](https://github.com/santhreal/keyhog/blob/main/docs/src/architecture.md) ملكية الصناديق،
وعقود الواجهة الخلفية، وإيصالات الاسترداد، ومساعدي المصدر، وحدود
الإبلاغ الآمنة. توثيق Rust على مستوى الصندوق يمتلك واجهة برمجة التطبيقات الكاملة.
## تكوين السياسة مع أولوية صريحة
توجد سياسة المستودع في `.keyhog.toml`:```toml
verify = false
[scan]
severity = "high"
incremental = true
[system]
gpu = "auto"
ترتيب الحل هو الإعدادات الافتراضية المدمجة، ثم تكوين المستخدم، ثم تكوين المستودع، ثم متغيرات البيئة حيثما كانت موثقة، ثم تجاوزات سطر الأوامر الصريحة في النهاية.
المفاتيح غير المعروفة والتركيبات غير الصالحة تفشل قبل الفحص. شغّل
keyhog config --effective لفحص السياسة المُحلّة دون كشف بيانات اعتماد الوكيل.
الإدخالات التي تتجاوز expires تفشل في تحميل قائمة السماح قبل الفحص.
راجع التكوين والأولوية لكل مفتاح ومتغيرات البيئة لبيانات الاعتماد ومدخلات وقت التشغيل.
البنية
يحافظ KeyHog على التنسيق عند الحافة والسلوك النطاقي في المكتبات:```text sources -> scanner -> suppression/evidence -> reporting -> optional verifier CLI and Action own process, transport, and exit semantics.
تعريفات الكاشف تبقى بيانات تحت `detectors/`. `keyhog-core` يملك
أنواع الكاشف والنتائج، و`keyhog-scanner` يملك خلفيات المطابقة والتنفيذ،
و`keyhog-sources` يملك اكتساب المدخلات، و`keyhog-verifier` يملك الفحوصات
المباشرة، و`keyhog-cli` يملك سير عمل المشغّل.
ابدأ بـ [دليل البنية](https://github.com/santhreal/keyhog/blob/main/docs/src/architecture.md) لخريطة المستودع،
واتجاه التبعيات، وخط أنابيب البايتات إلى النتائج، وملكية التوجيه،
ونقاط دخول التنميط.
## فحص التثبيت وتوسيعه```sh
keyhog detectors --search aws --verbose
keyhog explain aws-access-key
keyhog backend --autoroute --json
keyhog completion zsh
مرجع CLI
يسرد كل أمر وعلامة وقيمة افتراضية مولّدة وحالة خروج. استخدم
keyhog --help و keyhog <command> --help للحصول على النسخة المثبّتة الدقيقة.
المساهمة
- كاشف جديد؟ ضع ملف TOML في
detectors/وافتح طلب سحب (PR). دليل المساهمين (CONTRIBUTING.md) يحتوي على المخطط ومثالاً عملياً. - خطأ / سرّ مفقود / إيجابية كاذبة؟ سجّل مشكلة (issue) مع
شكل الاعتماد (credential) المنقّح ومعرّف الكاشف؛ كل تقرير يصبح
اختباراً دائماً تحت
crates/scanner/tests/contracts/. - سلوك الإصدارات؟ كل تشغيل CI ناجح على
mainيزيد رقم الإصدار التصحيحي (patch)، يولّد سجلات التغييرات، وينشر جميع الحزم الست على crates.io. أضف مقطعاً اختيارياً تحتchanges/لملاحظة دقيقة. يغطي دليل الإصدار المعاملة التلقائية واسترداد التحميل الفاشل. - مشكلة أمنية في KeyHog نفسه؟ لا تفتح مشكلة عامة؛
استخدم الإبلاغ الخاص عن الثغرات في GitHub.
إذا كان هذا النموذج غير متاح، أرسل بريداً إلى
[email protected]؛ PGP غير مطلوب.
سجل التغييرات. المشكلات المفتوحة.
الاعتمادات
يقف KeyHog على أعمال سابقة في فحص الأسرار. أفكار مستعارة من:
- TruffleHog: اتساع نطاق الكاشفات ودلالات التحقق
- Betterleaks: كفاءة الرموز وقمع الإيجابيات الكاذبة
- Titus: بيئة العمل في الفحص ومعايرة الخطورة
شكراً لهذه المشاريع ومساهميها.
الترخيص
الترخيص: MIT OR Apache-2.0.
الشروط: MIT و Apache-2.0. يغطي هذا الترخيص المزدوج الكود وملفات كاشفات TOML. الاستخدام التجاري والتضمين والاشتقاقات والخدمات المستضافة مسموح بها تحت أي من الترخيصين.
سجل النجوم
مولّد من ملاحظات UTC لعدد نجوم GitHub العام. يخزّن المستودع النقطة الأولى وكل انتقال لاحق في العدد. إعادة التشغيل في نفس اليوم تستبدل نقطة ذلك اليوم، والعدّادات غير المتغيرة لا تُنشئ أي التزام (commit).