
Nosey Parker هي أداة سطر أوامر تكتشف الأسرار والمعلومات الحساسة في البيانات النصية وتاريخ Git.
راجع إعلاننا على https://www.praetorian.com/blog/titus-open-source-secret-scanner/. يمكن العثور على مستودع Titus على https://github.com/praetorian-inc/titus
Nosey Parker هي أداة CLI تجد الأسرار والمعلومات الحساسة في البيانات النصية.
إنها في الأساس أداة شبيهة بـ grep ذات غرض خاص للكشف عن الأسرار.
صُممت للأمن الهجومي (مثل تمكين الحركة الجانبية في الفرق الحمراء)، ولكنها قد تكون مفيدة أيضًا لاختبار الأمن الدفاعي. لقد عثرت على أسرار في مئات المهام الأمنية الهجومية في Praetorian.
الميزات الرئيسية:
سير العمل النموذجي يتكون من ثلاث مراحل:
scanreportbrew install noseyparker
تحتوي صفحة الإصدار الأخير على ملفات تنفيذية مبنية مسبقًا لنظامي Linux وmacOS على معمارية x86_64/aarch64.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
يتوفر أحدث إيداع أيضًا عبر الوسم main.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
يتوفر أحدث إيداع أيضًا عبر الوسم main.
لا يتم بناء Nosey Parker أصليًا على Windows (#121). ولكن من الممكن تشغيله على Windows باستخدام WSL1 والإصدار الأصلي لنظام Linux.
تم اختبار هذا مع عدة إصدارات من Ubuntu Linux وmacOS على كل من x86_64 وaarch64.
التبعيات المطلوبة:
cargo: الطريقة الموصى بها: التثبيت من https://rustup.rscmake: مطلوب لبناء حزمة vectorscan-sys وبعض التبعيات الأخرىboost: مطلوب لبناء حزمة vectorscan-sys (الإصدار المدعوم >=1.57)git: مطلوب لتضمين معلومات الإصدار في واجهة CLI الخاصة بـ noseyparkerpatch: مطلوب لبناء حزمة vectorscan-syspkg-config: مطلوب لبناء حزمة vectorscan-syssha256sum: مطلوب لحساب التجميعات (غالبًا ما يتم توفيره بواسطة حزمة coreutils)zsh: مطلوب لبرامج البناء النصيةcreate-release.zsh النصي$ rm -rf release && ./scripts/create-release.zsh
إذا نجح الأمر، سينتج هيكل دليل في release مملوء بقطع الإصدار.
سيكون البرنامج سطر الأوامر في release/bin/noseyparker.
تشغيل الملف الثنائي noseyparker بدون وسائط يطبع المساعدة على المستوى الأعلى ويخرج.
يمكنك الحصول على مساعدة مختصرة لأمر معين عن طريق تشغيل noseyparker COMMAND -h.
تتوفر مساعدة أكثر تفصيلاً باستخدام الأمر help أو الخيار الطويل --help.
تتضمن الإصدارات المبنية مسبقًا أيضًا صفحات دليل تجمع المساعدة سطر الأوامر في مكان واحد. يتم تضمين هذه الصفحات المحولة إلى تنسيق Markdown أيضًا في المستودع هنا.
إذا كان لديك سؤال لم تجب عليه هذه الوثائق، فيرجى بدء مناقشة.
مخزن البيانات هو دليل خاص يستخدمه Nosey Parker لتسجيل نتائجه والحفاظ على حالته الداخلية.
سيتم إنشاء مخزن البيانات ضمنيًا بواسطة الأمر scan إذا لزم الأمر.
كل مدخل تم مسحه يسمى كتلة. لكل كتلة معرف كتلة فريد، وهو تجميع SHA-1 يتم حسابه بنفس طريقة حساب git.
لكل كتلة إدخالات مسببات واحدة أو أكثر مرتبطة بها. إدخال المسببات هو بيانات وصفية تصف كيف تم اكتشاف المدخل، مثل ملف على نظام الملفات أو ملف في تاريخ مستودع Git.
Nosey Parker هو نظام قائم على القواعد يستخدم تعبيرات منتظمة.
كل قاعدة لها نمط واحد مع مجموعة التقاط واحدة على الأقل تعزل محتوى التطابق من السياق المحيط.
يمكنك سرد القواعد المتاحة باستخدام noseyparker rules list.
يتم تنظيم مجموعة من القواعد في مجموعة قواعد.
تتضمن مجموعة القواعد الافتراضية لـ Nosey Parker قواعد تكتشف الأشياء التي تبدو وكأنها أسرار.
مجموعات قواعد أخرى متاحة؛ يمكنك سردها باستخدام noseyparker rules list.
عندما يتطابق نمط قاعدة مع مدخل، فإنه ينتج تطابقًا. يتم تعريف التطابق بشكل فريد بواسطة قاعدة ومعرف كتلة وإزاحة بايت بداية وإزاحة بايت نهاية؛ تُستخدم هذه الحقول لحساب معرف تطابق فريد.
يتم دمج التطابقات التي تشترك في قاعدة ومجموعات التقاط في نتيجة. بمعنى آخر، النتيجة هي مجموعة من التطابقات. هذه هي وحدة الإبلاغ العليا في Nosey Parker.
عند استخدام صورة Docker، استبدل noseyparker في الأوامر التالية باستدعاء Docker يستخدم وحدة تخزين مثبتة:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGS>
تعمل حاوية Docker مع /scan كدليل العمل الخاص بها، لذا فإن تثبيت $PWD في /scan داخل الحاوية سيجعل إكمال التبويب والمسارات النسبية في استدعاء سطر الأوامر الخاص بك تعمل.

يدعم Nosey Parker بشكل أصلي مسح الملفات والدلائل والتاريخ الكامل لمستودعات Git.
على سبيل المثال، إذا كان لديك نسخة Git من CPython محليًا في cpython.git، يمكنك مسحها باستخدام الأمر scan.
سينشئ Nosey Parker مخزن بيانات جديد في cpython.np ويحفظ نتائجه هناك.
(الاسم cpython.np غير ضروري، ويمكن أن يكون ما تريده.)
$ noseyparker scan -d cpython.np cpython.git
Scanned 19.19 GiB from 335,849 blobs in 17 seconds (1.11 GiB/s); 2,178/2,178 new matches
Rule Findings Matches Accepted Rejected Mixed Unlabeled
──────────────────────────────────────────────────────────────────────────────────────────────
Generic API Key 1 8 0 0 0 1
Generic Password 8 1,283 0 0 0 8
Generic Username and Password 2 40 0 0 0 2
HTTP Bearer Token 1 108 0 0 0 1
PEM-Encoded Private Key 61 151 0 0 0 61
netrc Credentials 27 588 0 0 0 27
Run the `report` command next to show finding details.
راجع noseyparker help scan لمزيد من التفاصيل.
على سبيل المثال، لمسح مستودع Nosey Parker نفسه:
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
راجع noseyparker help scan لمزيد من التفاصيل.
استخدم --github-user=USER أو --github-org=ORG. على سبيل المثال، لمسح المستودعات القابلة للوصول التابعة لمستخدم octocat:
noseyparker scan --datastore np.noseyparker --github-user octocat
ستستخدم هذه المحددات المدخلات رمز GitHub اختياريًا إذا كان متاحًا في متغير البيئة NP_GITHUB_TOKEN.
يوفر توفير رمز الوصول حدًا أعلى لمعدل API وقد يجعل مستودعات إضافية قابلة للوصول لك.
راجع noseyparker help scan لمزيد من التفاصيل.
راجع المشروع المرافق، Nosey Parker Explorer:



يقوم Nosey Parker بطباعة ملخص لنتائجه عند الانتهاء من المسح. يمكنك أيضًا تشغيل هذه الخطوة بشكل منفصل بعد المسح:
$ noseyparker summarize --datastore np.cpython
Rule Distinct Groups Total Matches
───────────────────────────────────────────────────────────
PEM-Encoded Private Key 1,076 1,192
Generic Secret 331 478
netrc Credentials 42 3,201
Generic API Key 2 31
md5crypt Hash 1 2
يتم دعم تنسيقات إخراج إضافية، بما في ذلك JSON وJSON lines، عبر الخيار --format=FORMAT.
راجع noseyparker help summarize لمزيد من التفاصيل.
استخدم الأمر github repos list لسرد روابط المستودعات التابعة لمستخدمي أو منظمات GitHub.
يستخدم هذا الأمر GitHub REST API لتعداد المستودعات التابعة للمستخدمين أو المنظمات.
على سبيل المثال:
$ noseyparker github repos list --user octocat
https://github.com/octocat/Hello-World.git
https://github.com/octocat/Spoon-Knife.git
https://github.com/octocat/boysenberry-repo-1.git
https://github.com/octocat/git-consortium.git
https://github.com/octocat/hello-worId.git
https://github.com/octocat/linguist.git
https://github.com/octocat/octocat.github.io.git
https://github.com/octocat/test-repo1.git
سيستخدم هذا الأمر رمز GitHub اختياريًا إذا كان متاحًا في متغير البيئة NP_GITHUB_TOKEN.
يوفر توفير رمز الوصول حدًا أعلى لمعدل API وقد يجعل مستودعات إضافية قابلة للوصول لك.
يتم دعم تنسيقات إخراج إضافية، بما في ذلك JSON وJSON lines، عبر الخيار --format=FORMAT.
راجع noseyparker help github لمزيد من التفاصيل.
لدى Nosey Parker بعض التكاملات من جهات خارجية:
إذا كان لديك تكامل ترغب في مشاركته غير مدرج هنا، فيرجى إنشاء PR.
اطرح أسئلة أو شارك أفكارًا في منطقة المناقشات.
نرحب بالمساهمات، خاصة قواعد regex الجديدة. تم تفصيل تطوير قواعد regex الجديدة في وثيقة منفصلة.
إذا كنت تفكر في إجراء تغييرات كبيرة على الكود، فيرجى فتح مشكلة أو بدء مناقشة أولاً.
يحتوي هذا المشروع على عدد من خطافات pre-commit الممكّنة التي يُشجع على استخدامها.
لتثبيتها في مستودعك المحلي، تأكد من أن pre-commit مثبت وقم بتشغيل:
$ pre-commit install
ستساعد هذه الفحوصات في الكشف السريع عن الأخطاء البسيطة.
Nosey Parker مرخصة بموجب رخصة Apache، الإصدار 2.0.