
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 में सैकड़ों आक्रामक सुरक्षा अभियानों में रहस्य पाए हैं।
मुख्य विशेषताएं:
सामान्य कार्यप्रवाह तीन चरणों में है:
scan कमांड का उपयोग करके रुचि के इनपुट स्कैन करेंreport कमांड का उपयोग करके स्कैन परिणामों के विवरण रिपोर्ट करेंbrew install noseyparker
नवीनतम रिलीज़ पृष्ठ में x86_64/aarch64 Linux और macOS के लिए पूर्व-निर्मित बाइनरी हैं।
docker pull ghcr.io/praetorian-inc/noseyparker:latest
सबसे हालिया कमिट main टैग के माध्यम से भी उपलब्ध है।
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
सबसे हालिया कमिट main टैग के माध्यम से भी उपलब्ध है।
https://aur.archlinux.org/packages/noseyparker
Nosey Parker मूलतः Windows पर नहीं बनता है (#121)। WSL1 और मूल Linux रिलीज़ का उपयोग करके Windows पर चलाना संभव है।
इसे Ubuntu Linux और macOS के कई संस्करणों पर x86_64 और aarch64 दोनों पर परीक्षण किया गया है।
आवश्यक निर्भरताएँ:
cargo: अनुशंसित दृष्टिकोण: https://rustup.rs से स्थापित करेंcmake: vectorscan-sys क्रेट और कुछ अन्य निर्भरताओं के निर्माण के लिए आवश्यकboost: vectorscan-sys क्रेट के निर्माण के लिए आवश्यक (समर्थित संस्करण >=1.57)git: noseyparker CLI में संस्करण जानकारी एम्बेड करने के लिए आवश्यकpatch: vectorscan-sys क्रेट के निर्माण के लिए आवश्यकpkg-config: vectorscan-sys क्रेट के निर्माण के लिए आवश्यकnoseyparker बाइनरी को बिना तर्कों के चलाने से शीर्ष-स्तरीय सहायता प्रिंट होती है और बाहर निकल जाता है।
आप noseyparker COMMAND -h चलाकर किसी विशेष कमांड के लिए संक्षिप्त सहायता प्राप्त कर सकते हैं।
help कमांड या लंबे-रूप --help विकल्प के साथ अधिक विस्तृत सहायता उपलब्ध है।
पूर्व-निर्मित रिलीज़ में मैनपेज भी शामिल हैं जो कमांड-लाइन सहायता को एक ही स्थान पर एकत्रित करते हैं। ये मैनपेज मार्कडाउन प्रारूप में परिवर्तित होकर रिपॉजिटरी में यहाँ भी शामिल हैं।
यदि आपके पास कोई प्रश्न है जिसका उत्तर इस दस्तावेज़ीकरण द्वारा नहीं दिया गया है, तो कृपया चर्चा शुरू करें।
डेटास्टोर एक विशेष निर्देशिका है जिसका उपयोग Nosey Parker अपने निष्कर्षों को रिकॉर्ड करने और अपनी आंतरिक स्थिति बनाए रखने के लिए करता है।
यदि आवश्यक हो तो scan कमांड द्वारा डेटास्टोर अंतर्निहित रूप से बनाया जाएगा।
प्रत्येक स्कैन किए गए इनपुट को ब्लॉब कहा जाता है। प्रत्येक ब्लॉब का एक अद्वितीय ब्लॉब ID होता है, जो एक SHA-1 डाइजेस्ट है जिसकी गणना उसी तरह की जाती है जैसे git करता है।
प्रत्येक ब्लॉब से जुड़े एक या अधिक प्रोवेनेंस प्रविष्टियाँ होती हैं। प्रोवेनेंस प्रविष्टि मेटाडेटा है जो बताता है कि इनपुट कैसे खोजा गया, जैसे फाइलसिस्टम पर एक फ़ाइल या Git रिपॉजिटरी इतिहास में एक फ़ाइल।
Nosey Parker एक नियम-आधारित प्रणाली है जो रेगुलर एक्सप्रेशन का उपयोग करती है।
प्रत्येक नियम में कम से कम एक कैप्चर ग्रुप के साथ एक एकल पैटर्न होता है जो आसपास के संदर्भ से मैच सामग्री को अलग करता है।
आप noseyparker rules list के साथ उपलब्ध नियमों को सूचीबद्ध कर सकते हैं।
नियमों का एक संग्रह रूलसेट में व्यवस्थित होता है।
Nosey Parker के डिफ़ॉल्ट रूलसेट में ऐसे नियम शामिल हैं जो उन चीजों का पता लगाते हैं जो रहस्य प्रतीत होते हैं।
अन्य रूलसेट उपलब्ध हैं; आप उन्हें noseyparker rules list. से सूचीबद्ध कर सकते हैं।
जब कोई नियम का पैटर्न किसी इनपुट से मेल खाता है, तो यह एक मैच उत्पन्न करता है। एक मैच को विशिष्ट रूप से एक नियम, ब्लॉब ID, प्रारंभ बाइट ऑफ़सेट और अंत बाइट ऑफ़सेट द्वारा परिभाषित किया जाता है; इन फ़ील्ड का उपयोग एक अद्वितीय मैच पहचानकर्ता की गणना करने के लिए किया जाता है।
एक ही नियम और कैप्चर ग्रुप साझा करने वाले मैच एक निष्कर्ष में संयुक्त होते हैं। दूसरे शब्दों में, एक निष्कर्ष मैचों का एक समूह है। यह Nosey Parker की शीर्ष-स्तरीय रिपोर्टिंग इकाई है।
Docker इमेज का उपयोग करते समय, निम्नलिखित कमांड में noseyparker को एक Docker आह्वान से बदलें जो एक माउंटेड वॉल्यूम का उपयोग करता है:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGS>
Docker कंटेनर /scan को अपनी कार्यशील निर्देशिका के रूप में चलाता है, इसलिए कंटेनर में $PWD को /scan पर माउंट करने से टैब पूर्णता और आपके कमांड-लाइन आह्वान में सापेक्ष पथ काम करेंगे।

Nosey Parker में फ़ाइलों, निर्देशिकाओं और Git रिपॉजिटरी के पूरे इतिहास को स्कैन करने के लिए मूल समर्थन है।
उदाहरण के लिए, यदि आपके पास स्थानीय रूप से cpython.git पर 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 लाइन्स शामिल हैं, --format=FORMAT विकल्प के माध्यम से।
अधिक जानकारी के लिए noseyparker help summarize देखें।
GitHub उपयोगकर्ताओं या संगठनों से संबंधित रिपॉजिटरी के URL सूचीबद्ध करने के लिए github repos list कमांड का उपयोग करें।
यह कमांड 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 लाइन्स शामिल हैं, --format=FORMAT विकल्प के माध्यम से।
अधिक जानकारी के लिए noseyparker help github देखें।
Nosey Parker के कुछ तृतीय-पक्ष एकीकरण हैं:
यदि आपके पास एक एकीकरण है जिसे आप साझा करना चाहते हैं जो यहाँ सूचीबद्ध नहीं है, तो कृपया एक PR बनाएं।
चर्चा क्षेत्र में प्रश्न पूछें या विचार साझा करें।
योगदान का स्वागत है, विशेष रूप से नए regex नियमों का। नए regex नियम विकसित करना एक अलग दस्तावेज़ में विस्तृत है।
यदि आप महत्वपूर्ण कोड परिवर्तन करने पर विचार कर रहे हैं, तो कृपया पहले एक मुद्दा खोलें या चर्चा शुरू करें।
इस परियोजना में कई pre-commit हुक सक्षम हैं जिनका उपयोग करने के लिए आपको प्रोत्साहित किया जाता है।
उन्हें अपने स्थानीय रेपो में स्थापित करने के लिए, सुनिश्चित करें कि pre-commit स्थापित है और चलाएँ:
$ pre-commit install
ये जाँचें सरल त्रुटियों का शीघ्र पता लगाने में मदद करेंगी।
Nosey Parker Apache License, Version 2.0 के तहत लाइसेंस प्राप्त है।
sha256sum: डाइजेस्ट की गणना के लिए आवश्यक (अक्सर coreutils पैकेज द्वारा प्रदान किया जाता है)zsh: बिल्ड स्क्रिप्ट के लिए आवश्यकcreate-release.zsh स्क्रिप्ट का उपयोग करके निर्माण करें$ rm -rf release && ./scripts/create-release.zsh
यदि सफल होता है, तो यह release पर एक निर्देशिका संरचना उत्पन्न करेगा जो रिलीज़ आर्टिफैक्ट्स से भरी होगी।
कमांड-लाइन प्रोग्राम release/bin/noseyparker पर होगा।