
आह shhgit! अपने कोड में रहस्य खोजें। आपके GitHub, GitLab और Bitbucket रिपॉजिटरी के लिए रहस्य पहचान।
किसी सार्वजनिक कोड रिपॉजिटरी में गलती से रहस्य लीक करना — उपयोगकर्ता नाम और पासवर्ड, API टोकन, या निजी कुंजियाँ — डेवलपर्स और सुरक्षा टीमों के लिए एक बुरा सपना है। धोखेबाज़ सिस्टम में पैर जमाने के लिए लगातार सार्वजनिक कोड रिपॉजिटरी को स्कैन करते हैं। कोड पहले से कहीं अधिक जुड़ा हुआ है, इसलिए अक्सर ये रहस्य निजी और संवेदनशील डेटा — क्लाउड बुनियादी ढाँचे, डेटाबेस सर्वर, भुगतान गेटवे और फ़ाइल भंडारण प्रणालियाँ — तक पहुँच प्रदान करते हैं।
shhgit इन रहस्यों को खोजने और आपको सचेत करने के लिए आपके कोड रिपॉजिटरी को लगातार स्कैन कर सकता है।
आपके पास दो विकल्प हैं। मैं पहले विकल्प की सिफारिश करूँगा क्योंकि यह आपको shhgit लाइव वेब इंटरफ़ेस तक पहुँच प्रदान करेगा। यदि आप केवल कमांड लाइन इंटरफ़ेस चाहते हैं तो दूसरे विकल्प का उपयोग करें।
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml फ़ाइल संपादित करें (जैसे अपने GitHub टोकन जोड़ना)docker-compose upध्यान दें: इस विधि में shhgit वेब इंटरफ़ेस शामिल नहीं है
go get github.com/eth0izzle/shhgit स्वचालित रूप से shhgit डाउनलोड और बिल्ड करेगा। या आप इस रिपॉजिटरी को क्लोन कर सकते हैं और go build -v -i चला सकते हैं।config.yaml फ़ाइल संपादित करें और नीचे उपयोग देखें।shhgit दो तरीकों से काम कर सकता है: GitHub, Gist, GitLab और BitBucket के सार्वजनिक API का उपभोग करके या किसी स्थानीय निर्देशिका में फ़ाइलों को प्रोसेस करके।
डिफ़ॉल्ट रूप से, shhgit पहले 'सार्वजनिक मोड' में चलेगा। GitHub और Gist के लिए, आपको एक एक्सेस टोकन प्राप्त करना और प्रदान करना होगा (देखें यह गाइड; इसके लिए किसी स्कोप या अनुमति की आवश्यकता नहीं है)। और फिर इसे config.yaml में github_access_tokens के अंतर्गत रखें। GitLab और BitBucket को किसी API टोकन की आवश्यकता नहीं है।
आप हस्ताक्षरों को छोड़ सकते हैं और अपनी स्वयं की कस्टम खोज क्वेरी के साथ shhgit का उपयोग कर सकते हैं, जैसे कि सभी AWS कुंजियाँ खोजने के लिए आप shhgit --search-query AWS_ACCESS_KEY_ID=AKIA का उपयोग कर सकते हैं। और स्थानीय मोड में चलाने (और शायद अपने CI पाइपलाइनों में एकीकृत करने) के लिए आप --local फ़्लैग पास कर सकते हैं (नीचे उपयोग देखें)।
--clone-repository-timeout
किसी रिपॉजिटरी को क्लोन करने में लगने वाला अधिकतम समय सेकंड में (डिफ़ॉल्ट 10)
--config-path
दिए गए निर्देशिका से config.yaml खोजता है। यदि सेट नहीं है, तो shhgit बाइनरी और वर्तमान निर्देशिका से खोजने का प्रयास करता है
--csv-path
यदि आप पाए गए रहस्यों को CSV में लिखना चाहते हैं तो एक पथ निर्दिष्ट करें। अक्षम करने के लिए खाली छोड़ें
--debug
डिबगिंग जानकारी प्रिंट करें
--entropy-threshold
फ़ाइलों में उच्च एन्ट्रॉपी स्ट्रिंग्स ढूँढता है। उच्च थ्रेशोल्ड = अधिक गुप्त रहस्य, निम्न थ्रेशोल्ड = अधिक झूठी सकारात्मकता। एन्ट्रॉपी जाँच अक्षम करने के लिए 0 पर सेट करें (डिफ़ॉल्ट 5.0)
--local
स्कैन करने के लिए स्थानीय निर्देशिका (पूर्ण पथ) निर्दिष्ट करें। दी गई निर्देशिका को केवल पुनरावर्ती रूप से स्कैन करता है। स्थानीय रन के लिए Github टोकन की आवश्यकता नहीं है।
--maximum-file-size
प्रोसेस करने के लिए अधिकतम फ़ाइल आकार KB में (डिफ़ॉल्ट 512)
--maximum-repository-size
डाउनलोड और प्रोसेस करने के लिए अधिकतम रिपॉजिटरी आकार KB में (डिफ़ॉल्ट 5120)
--minimum-stars
केवल इतने या अधिक स्टार वाले रिपॉजिटरी क्लोन करें। स्टार गिनती को अनदेखा करने के लिए 0 पर सेट करें (डिफ़ॉल्ट 0)
--path-checks
फ़ाइल नाम/पथ हस्ताक्षर जाँच अक्षम करने के लिए false पर सेट करें, यानी केवल regex पैटर्न मिलाएँ (डिफ़ॉल्ट true)
--process-gists
वास्तविक समय में Gists देखें और प्रोसेस करें। अक्षम करने के लिए false पर सेट करें (डिफ़ॉल्ट true)
--search-query
हस्ताक्षरों को अनदेखा करने और इस स्ट्रिंग वाली फ़ाइलों पर फ़िल्टर करने के लिए एक खोज स्ट्रिंग निर्दिष्ट करें (regex संगत)
--silent
त्रुटियों को छोड़कर सभी आउटपुट दबाएँ
--temp-directory
रिपॉजिटरी/मिलान संग्रहीत करने के लिए निर्देशिका (डिफ़ॉल्ट "%temp%\shhgit")
--threads
उपयोग करने के लिए समवर्ती थ्रेड्स की संख्या (डिफ़ॉल्ट तार्किक CPUs की संख्या)
config.yaml फ़ाइल में 7 तत्व हैं। एक डिफ़ॉल्ट प्रदान किया गया है।
github_access_tokens: # कम से कम एक टोकन प्रदान करें
- 'टोकन एक'
- 'टोकन दो'
webhook: '' # POST वेबहुक का URL।
webhook_payload: '' # वेबहुक URL पर POST करने के लिए पेलोड
blacklisted_strings: [] # अनदेखा करने के लिए स्ट्रिंग्स की सूची
blacklisted_extensions: [] # अनदेखा करने के लिए एक्सटेंशन की सूची
blacklisted_paths: [] # अनदेखा करने के लिए पथों की सूची
blacklisted_entropy_extensions: [] # एन्ट्रॉपी जाँच के लिए अनदेखा करने के लिए अतिरिक्त एक्सटेंशन
signatures: # जाँच करने के लिए हस्ताक्षरों की सूची
- part: '' # या तो filename, extension, path या contents
match: '' # सरल पाठ तुलना (यदि कोई regex तत्व नहीं है)
regex: '' # regex पैटर्न (यदि कोई match तत्व नहीं है)
name: '' # हस्ताक्षर का नाम
shhgit 150 हस्ताक्षरों के साथ आता है। आप config.yaml फ़ाइल संपादित करके उन्हें हटा या जोड़ सकते हैं।