
أداة سطر أوامر صغيرة مكتوبة بلغة Rust تزيل الأسرار من الحافظة عند الطلب.
أداة CLI صغيرة مكتوبة بلغة Rust تُزيل الأسرار من الحافظة عند الطلب. اربط اختصاراً، وحدد نصاً، واضغط الاختصار - وستحمل الحافظة نسخة منقّحة. لا يتم اعتراض Ctrl+C / Ctrl+V العادي أبداً.
Linux - أمر واحد، دون أي إعداد إضافي:
curl -sSf https://secretstripper.download/install.sh | bash
الاختصار الافتراضي: Ctrl+Alt+X.
macOS - يتطلب أداة مساعدة لمرة واحدة للاختصارات العامة (skhd أو Hammerspoon). راجع إعداد macOS لمعرفة الأذونات واستكشاف الأخطاء وإصلاحها.
brew install koekeishiya/formulae/skhd
curl -sSf https://secretstripper.download/install.sh | bash
# Grant skhd Accessibility: System Settings -> Privacy & Security -> Accessibility
skhd --restart-service
الاختصار الافتراضي: Cmd+Shift+C.
Windows (PowerShell) - يتطلب AutoHotkey v2. راجع إعداد Windows لمعرفة الخطوات الكاملة.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
الاختصار الافتراضي: Ctrl+Alt+C.
من crates.io (Rust) - تنطبق نفس المتطلبات الخاصة بكل نظام تشغيل (skhd على macOS، وAutoHotkey على Windows):
cargo install secret-stripper && secret-stripper init
من المصدر (git):
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
بعد التثبيت، حدد نصاً واضغط على الاختصار. على Linux تتم قراءة تحديد PRIMARY مباشرة، لذا يمكنك تخطي Ctrl+C. الصق باستخدام Ctrl+V (Cmd+V على macOS).
نفّذ secret-stripper menu لضبط الإعدادات، أو secret-stripper --help لعرض جميع الأوامر.
لا توجد طريقة تثبيت دون إعداد مسبق لتسجيل اختصار عام حقيقي على macOS بدون عملية مقيمة. تبقى Secret Stripper نفسها أحادية التشغيل، لذا تفوّض التقاط الاختصارات إلى إحدى أداتين معروفتين: skhd (خفيفة ومُوصى بها) أو Hammerspoon (أثقل وقابلة للبرمجة النصية). إذا لم يكن أي منهما مثبتاً، يتراجع init إلى طباعة تعليمات الربط اليدوية.
ثبّت skhd عبر Homebrew:
brew install koekeishiya/formulae/skhd
شغّل secret-stripper init. يكتب ~/.skhdrc، وعامل LaunchAgent الخاص بـ launchd لفحص التحديث اليومي، وملف الإعدادات. يتضمن الإخراج سطر «DE binding»: OK إذا تم اكتشاف skhd / Hammerspoon، وFAILED مع تلميحات التثبيت إذا لم يتم.
امنح skhd إذن الوصول (Accessibility). يحتاج skhd إلى هذا لاعتراض الاختصارات العامة، وإلا فلن يلتقط شيئاً بصمت. افتح System Settings -> Privacy & Security -> Accessibility، وانقر على +، وأضف /usr/local/bin/skhd، وافعّله. إذا كان skhd يعمل بالفعل، فأعد تشغيله حتى يسري الإذن الجديد:
skhd --restart-service
اختبر الاختصار:
echo "[email protected]" | pbcopy
# Press your chord (default: Cmd+Shift+C)
pbpaste # expect: [REDACTED]
بديل Hammerspoon: نفّذ brew install --cask hammerspoon، وافتحه مرة واحدة لمنح إذن الوصول، ثم شغّل secret-stripper init - يكتب الربط في ~/.hammerspoon/init.lua بدلاً من ~/.skhdrc.
الاختصار الافتراضي: Cmd+Shift+C. غالباً ما تستحوذ تطبيقات macOS على اختصارات مفتاح Cmd، لذا إذا تعارض مع شيء تستخدمه (أدوات مطوري المتصفح، Finder «Copy Path»، إلخ)، فأعد الربط من secret-stripper menu -> Rebind Hotkey. خياران أكثر أماناً إذا أردت التخطيط مسبقاً: Cmd+Option+X أو Cmd+Ctrl+X.
لا توجد طريقة تثبيت دون إعداد مسبق لتسجيل اختصار عام حقيقي على Windows. نفس القيد الموجود على macOS - تفوّض Secret Stripper التقاط الاختصارات إلى AutoHotkey v2 (المكافئ لـ skhd على Windows). يستخدم AutoHotkey واجهة برمجة Win32 RegisterHotKey داخلياً، وهو الآلية الوحيدة التي توصّل الاختصار بشكل موثوق عبر النوافذ النشطة والتطبيقات بملء الشاشة والعمليات ذات الصلاحيات المرتفعة. AutoHotkey مطلوب - يلغي init مع تلميح تثبيت إذا تعذر العثور عليه.
ثبّت AutoHotkey عبر winget:
winget install AutoHotkey.AutoHotkey
تثبّت الحزمة AutoHotkey v2 في C:\Program Files\AutoHotkey\v2\.
شغّل secret-stripper init. يكتب %APPDATA%\secret-stripper\secret-stripper.ahk، ويضع ملف .lnk عند بدء التشغيل ليعيد AHK تشغيل السكربت عند كل تسجيل دخول، ويبدأ عملية AHK فوراً ليكون الاختصار فعالاً دون تسجيل خروج.
اختبر الاختصار:
Set-Clipboard "[email protected]"
# Press your chord (default: Ctrl+Alt+C)
Get-Clipboard # expect: [REDACTED]
Ctrl+Alt+<key> (مع إمكانية إضافة Shift)؛ ويُرفض أي اختصار آخر.Ctrl+C، ثم الاختصار).schtasks يومية في الساعة 11:00..ahk وملف .lnk الخاص ببدء التشغيل. سكربتات AHK الأخرى التي تشغّلها تبقى دون مساس.للقائمة الكاملة للفئات ومستويات الخطورة والأنماط، راجع DETECTION_COVERAGE.md.
اختر كيفية استبدال الأسرار المكتشفة من secret-stripper menu -> نمط التنقيح:
ينطبق الإعداد نفسه على مشغل الاختصار، والأمر الفرعي redact في خط الأنابيب، وغلاف paste-guard لواجهات الذكاء الاصطناعي النصية.
تعيش الأسرار غالباً في لقطات الشاشة، وليس فقط في النص - لقطة طرفية، لوحة إعدادات، لوحة تحكم API. عند تشغيل الاختصار وكانت الحافظة تحمل صورة بدلاً من نص، يقوم Secret Stripper بإجراء OCR على الصورة، ويشغّل نفس المكتشف الذي يستخدمه للنص، ويرسم مربعاً أسود معتماً فوق الكلمات التي تحتوي سراً فقط. تُكتب الصورة المنقّحة مرة أخرى إلى الحافظة. تُترك الأجزاء النظيفة من الصورة دون لمس - لا تُسوَّد لقطة الشاشة بالكامل أبداً.
مدعوم على Linux فقط - لكل من X11 وWayland. على macOS وWindows، يظل الاختصار ينفّذ تنقيح النص؛ وتُترك صورة الحافظة دون لمس.
عند وجود صورة في الحافظة، ينقّح الاختصار الصورة حتى لو كان لديك نص محدد - لذا فإن screenshot -> hotkey يعمل مباشرة.
يتطلب وجود واجهة سطر الأوامر OCR tesseract في PATH. وهي تبعية تشغيل اختيارية: كل شيء آخر يعمل بدونها.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
يفشل بأمان (fails closed): إذا كان tesseract مفقوداً، أو تعذرت قراءة الصورة، أو تعذر تحديد موقع السر المكتشف، تُترك الحافظة دون لمس وتصلك إشعار - لا يتم تمرير الصورة الأصلية بصمت أو مسحها أبداً. يجعل OCR هذا المسار أبطأ من مسار النص الفوري (ما يقارب نصف ثانية إلى بضع ثوانٍ للقطة شاشة كاملة)، لذا انتظر الإشعار قبل اللصق.
تنقيح الصور معطّل افتراضياً. فعّله من secret-stripper menu -> إعدادات الاكتشاف -> تنقيح لقطات الشاشة، أو عيّن enable_image_scan = true في config.toml.
يبحث secret-stripper init عن أدوات الذكاء الاصطناعي الطرفية المثبتة (Claude Code، Codex CLI، aider، Gemini CLI، Continue، opencode) ويطبع كتلة أسماء مستعارة (alias) جاهزة للنسخ. يوجّه كل اسم مستعار الأداة عبر paste-guard، وهو غلاف PTY يعترض عمليات اللصق من الحافظة وينقّح الأسرار قبل وصولها إلى موجه الذكاء الاصطناعي - لا تتأثر الكتابة والمخرجات العادية. انسخ المقتطف إلى إعدادات الصدفة لديك (~/.zshrc، ~/.bashrc، ~/.config/fish/config.fish، أو ملف PowerShell الشخصي) وافتح صدفة جديدة:
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
لا يكتب Secret Stripper أبداً إلى ملف rc الخاص بالصدفة من تلقاء نفسه. لإيقاف التوجيه عبر paste-guard، احذف الكتلة بين سطري التعليق المتقطع.
النطاق. paste-guard غلاف لكل عملية - يفلتر فقط عمليات اللصق في الأمر الواحد الذي شغّلته عليه. الاستخدام اليومي لـ ssh وpsql وvim وkubectl وموجه الصدفة الخام وتطبيقات الواجهة الرسومية وحافظة النظام - كلها دون لمس تماماً. يمكنك أيضاً إضافة أسماء مستعارة لأدوات غير الذكاء الاصطناعي يدوياً (عروض حية على psql / mysql، تسجيلات شاشة) - تغليف الأوامر النهائية أمر جيد، أما تغليف صدفة كاملة فعادة لا يكون كذلك.
يمكنك أيضاً تمرير نص عشوائي عبر المحرك نفسه:
cat secrets.log | secret-stripper redact > clean.log
القيود. يجب أن يدعم طرفيّك اللصق المقوّس (Bracketed paste) (كل محاكٍ حديث يدعمه، بما في ذلك الطرفية المدمجة في VSCode وتمرير tmux)؛ لا تُعدَّل الأسرار المكتوبة يدوياً أبداً، فقط الملصوقة؛ تتجاوز حمولات اللصق التي تزيد عن 1 MiB دون تنقيح.
راجع CONTRIBUTING.md لمعرفة اصطلاحات البناء والاختبار والفحص (lint) والالتزامات (commit).
| النظام | الحالة | الخلفية المستخدمة للاختصارات |
|---|
| Linux | ✅ مدعوم | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (MATE schema), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ مدعوم | skhd (~/.skhdrc) أو Hammerspoon (~/.hammerspoon/init.lua)؛ تعليمات يدوية إذا لم يكن أي منهما مثبتاً |
| Windows | ✅ مدعوم | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) - ثبّته عبر winget install AutoHotkey.AutoHotkey |
| الفئة | أمثلة |
|---|
| 🔴 أسرار السحابة | مفاتيح AWS، مفاتيح Google API، بيانات اعتماد Azure، رموز OpenAI، مفاتيح Stripe، مفاتيح Heroku API |
| 🔴 رموز المصادقة | رموز GitHub، رموز GitLab، رموز Slack، رموز Discord، رموز JWT، رموز bearer، رموز NPM |
| 🔴 المفاتيح التشفيرية | المفاتيح الخاصة RSA/EC/OpenSSH، المفاتيح الخاصة PGP، المفاتيح العامة SSH |
| 🔴 المعلومات الشخصية (PII) | أرقام بطاقات الائتمان، أرقام الضمان الاجتماعي، أرقام الهواتف، عناوين البريد الإلكتروني، أرقام جوازات السفر |
| 🟠 سلاسل الاتصال | PostgreSQL، MongoDB، Redis، MySQL، عناوين JDBC URL مع بيانات اعتماد |
| 🟡 الاستدلال (Heuristic) | سلاسل غير اعتيادية، ملفات env تحتوي أسراراً، ملفات JSON بحقول كلمات مرور، محتوى بترميز base64 |
| 🟢 آمن | نص عادي، رسائل بريد إلكتروني، مستندات - لا تنبيهات خاطئة |
| النمط | المخرج لـ aws=AKIAIOSFODNN7EXAMPLE |
|---|
| Marker (افتراضي) | aws=[REDACTED] - يستخدم سلسلة علامة قابلة للتخصيص (ثمانية قوالب جاهزة + مخصص) |
| Drop | aws= - يزيل البايتات المطابقة بالكامل |
| Typed | aws=[AWS_ACCESS_KEY_ID] - يستبدل كل مقطع بوسم مشتق من اسم النمط المطابق |
| Placeholder | aws=AKIAIOSFODNN7EXAMPLE - يستبدل بقيمة عينة واقعية لكنها مزيفة للنمط المطابق (البريد الإلكتروني يصبح [email protected]، ومفتاح Stripe يصبح sk_test_4eC39HqLyjWDarjtT1zdp7dc) |