रस्ट में ओपन-सोर्स सीक्रेट स्कैनर
KeyHog Rust में लिखा एक ओपन-सोर्स गुप्त स्कैनर है जो स्रोत कोड, Git इतिहास, कंटेनरों, क्लाउड स्टोरेज, ब्राउज़र एसेट्स, सहयोग सामग्री और चालू सिस्टमों में लीक हुई API कुंजियों, टोकनों, पासवर्डों और क्रेडेंशियल्स को खोजता और सत्यापित करता है।
अधिकांश गुप्त स्कैनर रिपॉजिटरी चेकआउट में CPU regex मिलान पर ही रुक जाते हैं। KeyHog 934 सेवा-विशिष्ट डिटेक्टरों, छिपे हुए क्रेडेंशियल्स के लिए डिकोड-थ्रू, संदर्भ-जागरूक साक्ष्य और दमन, लाइव प्रदाता सत्यापन, और Vyre के माध्यम से प्रथम श्रेणी के CUDA, Metal और WGPU निष्पादन को जोड़ता है। कैलिब्रेशन हर पात्र शुद्ध-Rust CPU, Hyperscan/SIMD और GPU बैकएंड को मापता है। स्वचालित रूटिंग फिर सटीक होस्ट और कार्यभार वर्ग के लिए सबसे तेज़ समानता-सिद्ध मार्ग का उपयोग करती है।
| GPU एक वास्तविक बैकएंड है | वास्तविक आक्रमण सतह को स्कैन करें | शोर से संकेत को अलग करें | परिणाम पर कार्रवाई करें |
|---|---|---|---|
| CUDA, नेटिव Metal और WGPU मापे गए सहकर्मी हैं, न कि एक मूक फ़ॉलबैक श्रृंखला। | Git इतिहास, Docker परतें, अभिलेखागार, क्लाउड बकेट, स्रोत मानचित्र, WASM, HAR कैप्चर, होस्ट किए गए Git संग्रह और संपूर्ण सिस्टम स्कैन करें। | साक्ष्य, उदाहरण दमन और बेसलाइन लागू करने से पहले base64, hex, URL, protobuf, बहु-पंक्ति और संरचित कॉन्फ़िगरेशन को डिकोड करें। | पात्र क्रेडेंशियल्स को प्रदाता API से सत्यापित करें, 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>
## GPU के आसपास निर्मित एक सीक्रेट स्कैनर
KeyHog कुछ नियमित एक्सप्रेशन को एक सामान्य कंप्यूट शेडर को नहीं सौंपता।
इसका GPU पथ [Vyre](https://github.com/santhreal/vyre) पर बनाया गया है, जो एक Rust GPU
कंप्यूट सब्सट्रेट है जिसे KeyHog के साथ विकसित किया गया है। डिटेक्टर ट्रिगर
अपरिवर्तनीय GPU-निवासी तालिकाओं में संकलित होते हैं। बाउंडेड सोर्स बैच पूर्ण मैच
स्थितियाँ उत्पन्न करते हैं, जो उसी पुष्टि, दमन, साक्ष्य और रिपोर्टिंग
पाइपलाइन के लिए होती हैं जो CPU और Hyperscan मार्गों द्वारा उपयोग की जाती हैं।
- **तीन भौतिक GPU सहकर्मी।** CUDA, नेटिव Metal और पोर्टेबल WGPU को
स्वतंत्र रूप से प्राप्त, मापा और रिपोर्ट किया जाता है।
- **सटीक परिणाम समानता।** कैलिब्रेशन उस उम्मीदवार को अस्वीकार करता है जिसकी खोज
पहचान संदर्भ मार्ग से भिन्न होती है। एक तेज़ गलत उत्तर कभी भी रूटिंग
तालिका में प्रवेश नहीं करता।
- **स्थायी मार्ग साक्ष्य।** KeyHog बाइनरी, डिटेक्टर कॉर्पस,
कॉन्फ़िगरेशन, वर्कलोड वर्ग, होस्ट, एक्सेलेरेटर, ड्राइवर और मापा समय
साक्ष्य रिकॉर्ड करता है। सामान्य स्कैन हॉट पथ में बेंचमार्क नहीं करते।
- **निवासी निष्पादन।** डेमॉन वर्कर संकलित डिटेक्टर और एक्सेलेरेटर
स्थिति को बार-बार फ़ाइल, आर्काइव, इतिहास, रिमोट और क्लाउड बैचों के लिए गर्म रखते हैं।
- **कोई छिपा हुआ CPU एस्केप हैच नहीं।** एक स्पष्ट रूप से चयनित एक्सेलेरेटर जो
आरंभ या डिस्पैच नहीं कर सकता, GPU लेबल के तहत CPU परिणाम लौटाने के बजाय दृश्य रूप से विफल होता है।
डिफ़ॉल्ट crates.io इंस्टॉल पोर्टेबल शुद्ध-Rust CPU मार्ग का उपयोग करता है, इसलिए यह
एक साफ Rust होस्ट पर काम करता है। Hyperscan प्राप्त किए बिना तीनों GPU सहकर्मियों को सक्षम करें:```sh
cargo install --locked keyhog --no-default-features --features portable,gpu
Hyperscan या Vectorscan SIMD regex peer सक्षम करें:```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 सिस्टम त्रुटि | रनर की मरम्मत करें या पुनः प्रयास करें। इसमें निम्न-स्तरीय I/O, घातक डेमॉन सेवा, इंक्रीमेंटल-कैश, और स्पष्ट रूप से चयनित 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` के साथ बाहर निकलता है। उस फ़ाइल को कमिट करें, फिर केवल नई खोजी गई पहचानों की रिपोर्ट करने के लिए दूसरे कमांड का उपयोग करें। एक बेसलाइन प्रविष्टि डिटेक्टर और क्रेडेंशियल मान पर मेल खाती है, कभी भी फ़ाइल पथ पर नहीं, इसलिए किसी रिकॉर्ड किए गए रहस्य को स्थानांतरित करने से गेट विफल नहीं होता, लेकिन उसे घुमाने से होता है। बदले गए क्रेडेंशियल और अधूरा कवरेज दृश्यमान रहते हैं। मोनोरेपो विभाजन सहित पूरा पथ, [Fail only on new secrets](https://santhreal.github.io/keyhog/workflows/ci.html#fail-only-on-new-secrets) पर है।
अगले स्कैन के लिए, [recipes cookbook](https://santhreal.github.io/keyhog/recipes.html) या [Choose the right workflow](#choose-the-right-workflow) में कॉपी करने योग्य कमांड का उपयोग करें। आप टूल बदले बिना Git इतिहास, कंटेनर इमेज, क्लाउड बकेट, रिपॉजिटरी संग्रह, URL और पूरी मशीन को स्कैन कर सकते हैं।
### तेज़ pre-commit स्कैन के लिए रिपॉजिटरी की सुरक्षा करें
तेज़ pre-commit रहस्य पहचान के लिए एक रिपॉजिटरी को स्थायी 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
perpetual guard guide और pre-commit workflow पूर्ण कॉन्फ़िगरेशन, स्टेट मशीन लाइफसाइकिल और हुक ऑटोमेशन के लिए देखें।
.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 पर अपलोड करता है, और रिपोर्ट को वर्कफ़्लो आर्टिफैक्ट के रूप में बनाए रखता है। इंस्टॉलेशन, कवरेज, बैकएंड, और रिपोर्ट-प्रकाशन विफलताएँ भी जॉब को विफल करती हैं।
इनपुट, आउटपुट, बेसलाइन अपनाने, मोनोरेपो विभाजन, सत्यापन, और विफलता व्यवहार के लिए [GitHub Action गाइड](https://santhreal.github.io/keyhog/workflows/github-action.html) का उपयोग करें। GitLab, CircleCI, Jenkins, Buildkite, और सामान्य शेल जॉब के लिए [CI गाइड](https://santhreal.github.io/keyhog/workflows/ci.html) का उपयोग करें। रिपॉजिटरी संगठनों, होस्टेड Git समूहों, क्लाउड बकेट, और विभाजित इन्वेंट्री के लिए [मास-स्कैनिंग गाइड](https://santhreal.github.io/keyhog/guides/mass-scanning.html) का उपयोग करें।
## स्कैन सतहें जिन्हें अन्य टूल अलग उत्पादों के रूप में मानते हैं
KeyHog बाइट्स को उस सीमा पर स्कैन करता है जहाँ वे लीक हो सकते हैं, न कि केवल ट्रैक किए गए स्रोत फ़ाइलों को। प्रति सीमा एक रिपोर्ट का उपयोग करें ताकि CI सटीक कवरेज और विफलता स्थिति बनाए रखे।
| एक्सपोज़र सतह | उदाहरण |
|---|---|
| अंतिम पैकेज आर्टिफैक्ट | `npm pack` चलाएँ, फिर उत्पादित `.tgz` को `keyhog scan package.tgz` के साथ स्कैन करें। आर्काइव विस्तार उत्पन्न फ़ाइलों, स्रोत मैप्स, फिक्स्चर, और मेटाडेटा की जाँच करता है जो अपेक्षित स्रोत ट्री से अनुपस्थित हैं। |
| तैनात ब्राउज़र एप्लिकेशन | `keyhog scan --url https://app.example.com/assets/app.js` बाउंडेड JavaScript, स्रोत-मैप, WASM, और प्रतिक्रिया डिकोडिंग का अनुसरण करता है बिना स्कैनर को अनबाउंडेड क्रॉलर में बदले। |
| GitHub issues, pull requests, discussions, wikis, और 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` | अपरिवर्तित-फ़ाइल हैश का पुन: उपयोग करता है। फास्ट प्रीसेट डिकोड, एन्ट्रॉपी, और ML कार्य को छोड़ देता है। | मर्ज से पहले डिफ़ॉल्ट नीति चलाएँ क्योंकि फास्ट जानबूझकर संकीर्ण है। |
| पूर्ण रिपॉजिटरी स्कैन | `keyhog scan .` | कैलिब्रेटेड `auto` और CPU-कोर वर्कर डिफ़ॉल्ट। समान विश्वसनीय ट्री के बार-बार स्कैन के लिए `--incremental` जोड़ें। | केवल वर्तमान फ़ाइलें। यह Git इतिहास नहीं जोड़ता। |
| स्टेज्ड कमिट गेट | `keyhog scan --git-staged` या `keyhog hook install` | सटीक इंडेक्स ब्लॉब्स पढ़ता है, इसलिए अनस्टेज्ड संपादन परिणाम नहीं बदल सकते। | केवल स्टेज्ड सामग्री। जब स्थानीय अनस्टेज्ड बाइट्स मायने रखते हैं तो वर्किंग-ट्री स्कैन अलग से चलाएँ। |
| स्थायी रिपॉजिटरी गार्ड | `keyhog guard add . --mode repo` फिर `keyhog guard status .` | डेमॉन-निवासी रूट रजिस्ट्री 7-स्थिति मशीन, स्वच्छ प्रमाणीकरण कैश, और नीति पहचान ट्रैकिंग के साथ। | चल रहे डेमॉन की आवश्यकता है। गार्ड स्टेज्ड और वर्किंग-ट्री स्कैन को पूरक करता है, प्रतिस्थापित नहीं करता। |
| GitHub pull-request गेट | `santhreal/keyhog@v0` | एक्शन इंस्टॉल करता है, स्कैन करता है, SARIF और एक आर्टिफैक्ट प्रकाशित करता है, फिर KeyHog की स्थिति को संरक्षित करता है। | एक चेक-आउट पथ। संगठन के लिए प्रोवाइडर इन्वेंट्री स्कैनिंग का उपयोग करें। |
| GitLab, Jenkins, Buildkite, या शेल CI | `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` डैंगलिंग ब्लॉब्स, संशोधित-दूर कमिट्स, स्टैश, नोट्स, एनोटेटेड टैग संदेश, और पैक्ड रेफ्स तक भी पहुँचता है। |
| कंटेनर या आर्काइव निरीक्षण | `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 इतिहास को स्कैन करता है। | स्थानीय माउंटेड फाइलसिस्टम। नेटवर्क माउंट ऑप्ट-इन हैं और स्पेस सीलिंग हार्ड है। |
| Unix पर GPU-समर्थित निर्देशिका, इतिहास, आर्काइव, रिमोट, या क्लाउड इन्वेंट्री | ऑटोरूट कैलिब्रेट करें, `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 issues, pull requests, discussions, wikis, और 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 `cargo install` के बाद KeyHog को निष्पादित नहीं कर सकता, इसलिए मल्टी-बैकएंड Cargo बिल्ड स्थापित करने के बाद और होस्ट, बाइनरी, डिटेक्टर कॉर्पस, ड्राइवर, या वर्कलोड क्लासेस बदलने के बाद नीचे दिए गए कमांड एक बार चलाएँ:```sh
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
| नियंत्रण | इसके लिए उपयोग करें | यह अपरिवर्तनीय रखें |
|---|---|---|
कैलिब्रेटेड --backend auto | नियमित CPU, Hyperscan, या GPU चयन। | एक स्पष्ट बैकएंड एक डायग्नोस्टिक ओवरराइड है, तेज़ डिफ़ॉल्ट नहीं। |
--threads <N> | साझा रनर पर CPU क्षमता आरक्षित करना। समर्पित होस्ट को सामान्यतः इसे अनसेट छोड़ना चाहिए ताकि KeyHog उपलब्ध कोर का उपयोग कर सके। | हर मान धनात्मक होना चाहिए। कई समवर्ती KeyHog प्रक्रियाएँ प्रत्येक एक वर्कर पूल की मालिक होती हैं, इसलिए होस्ट बजट को विभाजनों में बाँटें। |
--reader-threads <N> | मापी गई स्टोरेज पाइपलाइनें जहाँ रीडर कार्य, स्कैनिंग नहीं, बाधा है। | डिफ़ॉल्ट स्कैन वर्कर पूल से प्राप्त होता है। इसे तब तक अनसेट छोड़ें जब तक प्रोफाइलिंग रीडर बाधा न दिखाए। |
--incremental और --incremental-cache <PATH> | एक ही विश्वसनीय ट्री की बार-बार स्कैन। | एक इंडेक्स को असंबंधित रिपॉजिटरी या अविश्वसनीय कार्यों में साझा न करें। |
| प्रदाता या रिपॉजिटरी विभाजन | समवर्ती एस्टेट स्कैनिंग और स्वतंत्र पुनः प्रयास। | प्रति विभाजन एक टर्मिनल एनवेलप और कच्चा निकास कोड बनाए रखें। निष्कर्षों को संयोजित न करें और कवरेज स्थिति को त्यागें नहीं। |
--verify-concurrency, --verify-rate, और --verify-batch | फ़ाइल स्कैनिंग से स्वतंत्र रूप से लाइव प्रदाता जाँचों को सीमित करना। | सत्यापन क्रेडेंशियल-व्युत्पन्न अनुरोध भेजता है। प्रदाता दर सीमाएँ, CPU गिनती नहीं, इस समवर्तीता की मालिक हैं। |
| मास डेमन | एक Unix वर्कर पर TB-स्केल निर्देशिका, इतिहास, संग्रह, रिमोट, या क्लाउड स्ट्रीम। | प्रत्येक फ्रेम 8 MiB और 1,024 चंक तक सीमित है। डेमन फ्रैगमेंट स्थिति को क्रमबद्ध करता है और एक सटीक CPU/GPU निष्पादन रसीद लौटाता है। |
--fast, डिफ़ॉल्ट, --deep, या --precision | एक स्पष्ट डिटेक्शन-लागत और रिकॉल नीति चुनना। | ये प्रीसेट परस्पर अनन्य हैं और कवरेज बदलते हैं। ये विनिमेय गति नॉब नहीं हैं। |
keyhog config --effective के साथ समाधान की गई नीति का निरीक्षण करें। रीडर, बैच, या चैनल-डेप्थ नियंत्रण बदलने से पहले --profile का उपयोग करके निश्चित स्कैनर चरणों और पूर्ण ऑपरेटर रन को मापें। कम-ओवरहेड रिपोर्ट स्रोत, बैकएंड, कैश, वर्कलोड, थ्रेड, इनपुट, स्टेट-ट्रांज़िशन, CPU-समय, पीक मेमोरी, सटीक बाइनरी 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 इनपुट बाइट्स। उत्तर-कुंजी मैनिफेस्ट को स्कैन ट्री से बाहर रखा गया था। पंक्ति AMD Ryzen 9 9950X 16-Core Processor पर स्पष्ट Hyperscan/SIMD मार्ग पर डिफ़ॉल्ट पॉलिसी का उपयोग करती है।
| Precision | Recall | F1 | True positives | False positives | False negatives |
|---|---|---|---|---|---|
| 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 कर्नेल क्रॉसओवर माप नहीं हैं।
| Requested route | Wall | Throughput | Peak 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 |
| Automatic | 1.46 s | 1.59 MB/s | 634 MiB | 0.9328 |
मार्ग, कैश, डेमन स्थिति, कॉर्पस, और होस्ट स्थिर रहते हैं। प्रीसेट डिटेक्शन कार्य को बदलते हैं, इसलिए समय के साथ-साथ precision और recall की तुलना करें।
| Policy | Wall | Precision | Recall | F1 | Findings |
|---|---|---|---|---|---|
| Fast | 737 ms | 0.9700 | 0.8837 | 0.9248 | 2,738 |
| Default | 860 ms | 0.9651 | 0.9027 | 0.9328 | 2,816 |
| Deep | 861 ms | 0.9645 | 0.9067 | 0.9347 | 2,845 |
| Precision | 849 ms | 0.9590 | 0.6397 | 0.7674 | 2,001 |
बेंचमार्क BLAKE3 Merkle इंडेक्स को आबाद करता है, फिर दूसरे समान स्कैन का समय निर्धारित करता है। छोटा सिंथेटिक ट्री थोड़ा बदलता है क्योंकि स्कैनर स्टार्टअप हावी होता है; स्पीडअप का दावा करने से पहले अपने रिपॉजिटरी को मापें।
| Hyperscan/SIMD default policy | Wall | Throughput | Peak RSS |
|---|---|---|---|
| Cache off | 860 ms | 2.70 MB/s | 416 MiB |
| Warm incremental cache | 617 ms | 3.76 MB/s | 457 MiB |
एक निर्धारक 8 MiB नियमित फ़ाइल (sha256:afafbe7b6487fd62866f510e7c281a9e7bfeaa8dc585d7b0478c92ee6c4f5ef5) को एक बार प्रक्रिया में और एक बार एक स्वामित्व वाले डेमन के माध्यम से एक वार्मअप अनुरोध के बाद स्कैन किया गया। डेमन समय क्लाइंट अनुरोध है; डेमन RSS निवासी सर्वर से संबंधित है।
| Explicit route | In process | Warm daemon | Warm / one-shot | In-process RSS | Daemon 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 |
ये पंक्तियाँ वार्म सिंगल-फ़ाइल मार्ग को कवर करती हैं। मास मार्ग सीमित निर्देशिका और दूरस्थ-स्रोत बैचों को भी स्वीकार करता है; इसका इंक्रीमेंटल फाइलसिस्टम पथ अलग से मापा जाता है।
benchmarks/reports/readme-scaling.json से make -C benchmarks readme-scaling द्वारा उत्पन्न। हार्नेस ने स्पष्ट simd और डेमन रूटिंग बंद के साथ 1 वार्म-अप के बाद 3 मापे गए परीक्षण चलाए। वर्कर स्केलिंग CPU कार्य को अलग करने के लिए वार्म क्लाइंट पेज कैश का उपयोग करती है। रीडर, कॉर्पस-आकार, स्टोरेज, और विभाजन पंक्तियाँ साफ-पेज निष्कासन को posix_fadvise के साथ अनुरोध करती हैं जहाँ प्लेटफ़ॉर्म इसका समर्थन करता है; स्नैपशॉट हर पंक्ति पर पॉलिसी रिकॉर्ड करता है। हर वर्कलोड बाइट-निर्धारक और फाइंडिंग-मुक्त है।
होस्ट: AMD Ryzen 9 9950X 16-Core Processor, 32 प्रभावी लॉजिकल कोर, 94,140 MiB RAM, Linux 6.17.0-19-generic। साक्ष्य: clean, बाइनरी 274b045489c4।
| Workers | Reader threads | Median wall | p95 wall | Throughput | Speedup | Efficiency | Median peak RSS |
|---|---|---|---|---|---|---|---|
| 1 | auto | 8,134.4 ms | 8,135.4 ms | 7.9 MiB/s | 1.00x | 100.0% | 47.0 MiB |
| 2 | auto | 4,398.2 ms | 6,906.7 ms | 14.6 MiB/s | 1.85x | 92.5% | 50.3 MiB |
| 4 | auto | 2,392.6 ms | 6,245.2 ms | 26.7 MiB/s | 3.40x | 85.0% | 57.2 MiB |
| 8 | auto | 1,816.3 ms | 6,117.6 ms | 35.2 MiB/s | 4.48x | 56.0% | 63.4 MiB |
| 16 | auto | 1,428.5 ms | 6,867.7 ms | 44.8 MiB/s | 5.69x | 35.6% | 78.4 MiB |
| 32 | auto | 1,862.8 ms | 5,939.1 ms | 34.4 MiB/s | 4.37x | 13.6% | 126.7 MiB |
| Scan workers | Reader threads | Median wall | p95 wall | Throughput | Relative to 1 reader | Median peak 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 |
| Corpus | Files | Exact bytes | Median wall | p95 wall | Throughput | Median peak RSS |
|---|---|---|---|---|---|---|
| small | 256 | 8 MiB | 869.9 ms | 886.1 ms | 9.2 MiB/s | 111.1 MiB |
| medium | 1,024 | 64 MiB | 1,859.9 ms | 1,874.8 ms | 34.4 MiB/s | 126.3 MiB |
| large | 2,048 | 256 MiB | 5,214.9 ms | 5,321.7 ms | 49.1 MiB/s | 137.1 MiB |
| Storage class | Filesystem | Device ID | Median wall | p95 wall | Throughput | Relative to first storage | Median peak RSS |
|---|---|---|---|---|---|---|---|
| workspace | ext4 | 66305 | 1,847.4 ms | 1,863.4 ms | 34.6 MiB/s | 1.00x | 127.0 MiB |
| local-temp | tmpfs | 116 | 1,870.8 ms | 1,887.3 ms | 34.2 MiB/s | 0.99x | 124.9 MiB |
| Processes | Workers per process | Aggregate workers | Total files | Total bytes | Median wall | Aggregate throughput | Speedup | Median summed peak 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 |
ये पंक्तियाँ माप हैं, सार्वभौमिक ट्यूनिंग स्थिरांक नहीं। जनरेटर को लक्ष्य होस्ट और स्टोरेज पर चलाएं। उस घुटने का उपयोग करें जहाँ थ्रूपुट में सुधार रुक जाता है, फिर CI रनर या ऑर्केस्ट्रेशन परत के लिए CPU और मेमोरी आरक्षित करें।
सभी चार बेंचमार्क समूहों को make -C benchmarks readme-matrix के साथ पुन: उत्पन्न करें।
कमांड आवश्यक मैट्रिक्स को मापता है और विफल हो जाता है यदि कोई अनुरोधित CPU,
Hyperscan, CUDA, Metal, WGPU, प्रीसेट, कैश, डेमन, थ्रेड, रीडर, स्टोरेज, कॉर्पस
आकार, या विभाजन पंक्ति अनुपलब्ध है। यह सत्यापित करने के लिए
make -C benchmarks readme-matrix-check का उपयोग करें कि दोनों स्नैपशॉट, रिपोर्ट,
और README सहमत हैं।
डिफ़ॉल्ट पॉलिसी और कैलिब्रेटेड स्वचालित रूटिंग से शुरू करें। केवल एक अक्ष बदलें जब वर्कफ़्लो को इसकी आवश्यकता हो:
| Workflow | Detection policy | Execution and reuse | Additional control |
|---|---|---|---|
| पहला रिपॉजिटरी स्कैन | Default | कैलिब्रेटेड auto; --daemon=auto | सप्रेशन जोड़ने से पहले सभी फाइंडिंग की समीक्षा करें। |
| बार-बार स्थानीय ट्री या CI स्कैन | Default | कैलिब्रेटेड auto; --incremental | इंक्रीमेंटल कैश को केवल उसी विश्वसनीय ट्री के स्कैन के बीच बनाए रखें। |
| छोटा फीडबैक लूप | --fast | कैलिब्रेटेड auto; वैकल्पिक --incremental | कम डिकोड, एन्ट्रॉपी, और ML कवरेज स्वीकार करें। मर्ज से पहले डिफ़ॉल्ट पॉलिसी चलाएं। |
| उच्चतम-रिकॉल पुनर्प्राप्ति | --deep | प्रक्रिया में | Deep fast और precision के साथ परस्पर अनन्य है, और डेमन के योग्य नहीं है। |
| कम-शोर बड़ी इन्वेंट्री | --precision | रिपॉजिटरी संग्रह, इतिहास, और क्लाउड स्रोतों के लिए प्रक्रिया में | प्रीसेट कॉन्फिडेंस फ्लोर बढ़ाता है और एन्ट्रॉपी डिस्कवरी अक्षम करता है। यह कम-कॉन्फिडेंस क्रेडेंशियल्स को मिस कर सकता है। |
| Unix पर TB-स्केल निर्देशिका, इतिहास, संग्रह, दूरस्थ, या क्लाउड इन्वेंट्री | Default | keyhog daemon start --mass, फिर --daemon=mass | बैच 8 MiB और 1,024 चंक्स पर सीमित रहते हैं। टर्मिनल कवरेज रिपोर्ट और GPU निष्पादन रसीद को संरक्षित करें। |
| लाइव क्रेडेंशियल सत्यापन | Default | प्रक्रिया में | स्पष्ट रूप से --verify जोड़ें। सत्यापन प्रदाताओं को क्रेडेंशियल-व्युत्पन्न अनुरोध भेजता है। |
| Linux नो-स्वैप स्कैन | Default प्लस --lockdown | प्रक्रिया में; इंक्रीमेंटल कैश अक्षम | Lockdown सत्यापन, प्लेनटेक्स्ट सीक्रेट, फास्ट मोड, और पूर्णता-कम करने वाले स्विच को अस्वीकार करता है। |
--fast, --deep, और --precision परस्पर अनन्य डिटेक्शन प्रीसेट हैं।
--lockdown एक फेल-क्लोज्ड निष्पादन मोड है, चौथा प्रीसेट नहीं। स्पष्ट
--backend मान डायग्नोस्टिक्स और बेंचमार्क ओवरराइड हैं। वे स्वचालित रूटिंग द्वारा उपयोग किए गए बनाए रखा सबसे-तेज़-सही साक्ष्य को प्रतिस्थापित नहीं करते हैं। पूर्ण
अनुबंधों के लिए Configuration,
autoroute calibration,
daemon and warm scans,
और hardening देखें।
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) एक प्रूफ-समर्थित
ऑटोरूट चयनकर्ता में सहकर्मी हैं, फॉलबैक श्रृंखला नहीं। कैलिब्रेशन हर योग्य सहकर्मी को मापता है
और सबसे तेज़ मार्ग को बनाए रखता है जिसके पूर्ण फाइंडिंग सटीक बाइनरी, डिटेक्टर और कॉन्फ़िगरेशन स्थिति,
होस्ट, एक्सेलेरेटर, और वर्कलोड वर्ग के लिए संदर्भ मार्ग से मेल खाते हैं। एक अनुपलब्ध, पुराना, अमान्य, या अपूर्ण
निर्णय निष्पादन से पहले एक स्वचालित स्कैन को रोकता है और रीकैलिब्रेट करने का तरीका रिपोर्ट करता है।
यह कभी भी चुपचाप किसी अन्य बैकएंड को प्रतिस्थापित नहीं करता है।
रिपॉजिटरी मैप, निर्भरता दिशा, बाइट्स-से-फाइंडिंग पाइपलाइन, और प्रोफाइलिंग एंट्रीपॉइंट के लिए Architecture देखें। निष्पादन अनुबंधों के लिए Backends and routing और समता, वर्कलोड पहचान, कैश जीवनचक्र, और मरम्मत प्रक्रियाओं के लिए Autoroute calibration देखें।
पूर्ण दस्तावेज़ीकरण: santhreal.github.io/keyhog - इंस्टॉल, पहला स्कैन, आउटपुट प्रारूप, डिटेक्शन इंटर्नल, सप्रेशन, सत्यापन, pre-commit + CI एकीकरण, CLI संदर्भ, autoroute, एग्जिट कोड, env vars, और योगदान। स्रोत docs/ के अंतर्गत।
वर्तमान 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 की सीक्रेट के लिए उसके पास की की ID आवश्यक है।
- **सोर्स फोर्ज:** GitHub PAT (CRC32 चेकसम के साथ), GitLab टोकन,
Bitbucket ऐप पासवर्ड, npm टोकन (चेकसम के साथ), Gitea / Forgejo
/ Codeberg।
- **Auth / SSO:** Okta, Auth0, Clerk, JumpCloud, Kinde।
- **संचार:** Slack, Discord, Twilio, SendGrid, Postmark, Mailgun,
Resend, Loops।
- **AI / ML:** 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 URL।
- **जेनेरिक + एन्ट्रॉपी खोज:** `API_KEY=<high-entropy-blob>` उन
क्रेडेंशियल्स को पकड़ता है जिनका कोई नामित डिटेक्टर नहीं है, जो प्रति-संदर्भ एन्ट्रॉपी
थ्रेशोल्ड + 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: detector spec dump (pattern ghp_[A-Za-z0-9]{36}, keyword, verification URL) followed by the github rotation guide and step-by-step remediation" width="860" />
</p>
डिटेक्टर लेखन और निरीक्षण को [डिटेक्टर संदर्भ](https://github.com/santhreal/keyhog/blob/main/docs/src/detectors.md) में ब्राउज़ करें, या इंस्टॉल किए गए कॉर्पस को
`keyhog detectors --search <term> --verbose` से क्वेरी करें।
## उच्च रिकॉल, कम फ़ॉल्स पॉज़िटिव क्यों
- **डिकोड-थ्रू स्कैनिंग।** Kubernetes `Secret` मैनिफेस्ट, Jupyter
नोटबुक, JWT पेलोड, base64-लिपटे env, Helm मान और docker-config
`auth:` ब्लॉब। संरचित प्रीप्रोसेसर संतुलित Helm एक्शन को
निष्क्रिय रेंडर-टाइम मान मानता है और फ़ाइल के अंत में लापता Jupyter डिलिमिटर बंद करता है,
ताकि शाब्दिक बाइट्स और पूर्ण कोड सेल कवर रहें। यह संरचित मानों को
स्थान पर डिकोड करता है और हर डाउनस्ट्रीम डिटेक्टर को प्लेनटेक्स्ट देता है। डिटेक्टरों को
प्रत्येक को डिकोडिंग को फिर से लागू करने की आवश्यकता नहीं है। डिकोड-सक्षम स्कैन साइड-इफ़ेक्ट-मुक्त JavaScript बाइट-ऐरे XOR और AES-256-CBC एक्सप्रेशन भी पुनर्प्राप्त करते हैं जब
सभी पुनर्प्राप्ति सामग्री एम्बेडेड होती है, जिसमें सख्त CryptoJS/OpenSSL साल्टेड
पासफ़्रेज़ रैपर शामिल हैं। KeyHog स्रोत को कभी निष्पादित नहीं करता।
- **मल्टीलाइन पुनर्संयोजन।** JavaScript में `"sk-proj-" + \` निरंतरता,
YAML मल्टी-लाइन स्ट्रिंग, Makefile बैकस्लैश-निरंतरता, Helm /
Jinja टेम्पलेटेड आउटपुट, सभी regex मिलान से पहले पुनर्संयोजित।
- **साथी सत्यापन।** आवश्यक साथी उच्च-शोर डिटेक्टरों को गेट करते हैं। एक
Twilio API की बिना उसके API सीक्रेट के छोड़ दी जाती है। वैकल्पिक साथी
साक्ष्य स्कोरिंग या सत्यापन को समृद्ध करते हैं। AWS एक्सेस-की डिटेक्शन के लिए
उसका सीक्रेट आवश्यक नहीं है, लेकिन लाइव सत्यापन के लिए सीक्रेट आवश्यक है।
- **क्रॉस-डिटेक्टर समाधान।** डिटेक्टर TOML किसी अन्य डिटेक्टर से बाउंडेड
खोजों को आवश्यक, अस्वीकार या समाहित कर सकता है। समाधान इनपुट क्रम में नियतात्मक रहता है,
और अमान्य लक्ष्य, विरोधाभास या निर्भरता चक्र कॉर्पस संकलन को विफल करते हैं।
- **साक्ष्य निर्णय।** हर खोज एक सटीक `review`, `likely`, या
`confirmed` स्तर और एक विहित कारण कोड रखती है। आंतरिक चेकसम या व्याकरण
प्रमाण, आवश्यक साथी और लाइव सत्यापन confirmed साक्ष्य उत्पन्न करते हैं;
क्रेडेंशियल-धारक भूमिका में मजबूत विक्रेता-विशिष्ट आकार likely साक्ष्य उत्पन्न करता है;
कमजोर एंकर, जेनेरिक असाइनमेंट, एन्ट्रॉपी-केवल उम्मीदवार और
परीक्षण, दस्तावेज़ीकरण, नियम या पहचानकर्ता संदर्भ review साक्ष्य बने रहते हैं।
एक वैकल्पिक `evidence_score` मापे जाने पर निर्णय को पूरक करता है।
डिफ़ॉल्ट थ्रेशोल्ड `0.40` स्कैनर की आंतरिक आत्मविश्वास मंज़िल को नियंत्रित करता है
और `--min-confidence` के साथ कॉन्फ़िगर करने योग्य रहता है।
- **बायेसियन प्रति-डिटेक्टर कैलिब्रेशन।** `keyhog calibrate --fp generic-api-key`
एक Beta(α,β) पोस्टीरियर लिखता है। स्कैन इसे केवल तब उपयोग करते हैं जब `--calibration-cache`
या `[system].calibration_cache` उस फ़ाइल की ओर इशारा करता है, ताकि आत्मविश्वास ट्यूनिंग
स्पष्ट और प्रतिलिपि-योग्य हो, न कि आवारा होस्ट कैश स्थिति पर निर्भर।
## प्रदर्शन
KeyHog, Betterleaks, Kingfisher, Nosey Parker, TruffleHog और Titus की तुलना एक स्कोरिंग
अनुबंध के तहत करने के लिए [`benchmarks/`](https://github.com/santhreal/keyhog/blob/main/benchmarks) में प्रतिलिपि-योग्य हार्नेस का उपयोग करें।
हार्नेस हर स्कैन ट्री से ग्राउंड-ट्रुथ मैनिफेस्ट को बाहर करता है।
जब तक वर्तमान-स्कीमा रन मौजूद न हों, उत्पन्न तालिकाएँ खाली रहती हैं। माप के बाद
`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** - प्रतियोगी ग्राउंड-ट्रुथ नियम सूट (Betterleaks और Kingfisher नियम; 1,057 लेबल किए गए पॉज़िटिव, 1,342 नेगेटिव, 772,974 बाइट्स) से काटे गए 2399 फिक्स्चर। प्रतियोगी ग्राउंड ट्रुथ पर क्रॉस-टूल मूल्यांकन।
| रैंक | स्कैनर | 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 (NoseyParker का Go पोर्ट)<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 बिल्ड सिस्टम: OS: Ubuntu OS संस्करण: Linux (Ubuntu 22.04) CPU विक्रेता: AuthenticAMD CPU ब्रांड: AMD EPYC 7763 64-Core Processor CPU कोर: 2 rustc संस्करण: 1.86.0 rustc चैनल: stable rustc होस्ट ट्रिपल: x86_64-unknown-linux-gnu rustc कमिट तिथि: 2025-03-31 rustc कमिट SHA: 05f9846f893b09a1be1fc8560e33fc3c815cfecb rustc LLVM संस्करण: 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 संस्करण 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 -->
### बिग्राम ब्लूम साक्ष्य
<!-- 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` |
| ब्लूम अस्वीकृति | **110/51794 (0.21%)**; 51684 स्वीकृत |
| बाहरी उपलब्धता | 51794 मापा गया; 51794 घोषित में से 0 स्पष्ट रूप से अनुपलब्ध; कारण: |
| सक्षम बनाम बायपास खोजें | **समान**; 977/977 खोजें |
| खोज पहचान SHA-256 | `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` / `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` |
| ब्लूम घनत्व/स्थिति | 1793/65536 स्लॉट; `healthy`; 39322 पर संतृप्ति |
खोज पहचान डिटेक्टर, फ़ाइल, पंक्ति, बाइट स्पैन और क्रेडेंशियल SHA-256 को बांधती है; प्लेनटेक्स्ट क्रेडेंशियल कभी दर्ज नहीं किए जाते।
<!-- BENCH:bloom:end -->
पुनरुत्पादन: `make -C benchmarks canonical KEYHOG_BIN=/absolute/path/to/keyhog`
सटीक KeyHog, Betterleaks, Kingfisher, Nosey Parker, TruffleHog और
Titus मिरर रन सेट को फिर से चलाता है, जिसमें निष्पादन-योग्य-बद्ध CredData Bloom डिफरेंशियल शामिल है,
`make -C benchmarks report` ऊपर की तालिकाओं और
`benchmarks/reports/` को पुनर्जीवित करता है। कॉर्पोरा (mirror, प्रतियोगी होम-टर्फ, Samsung/CredData) और
बैकएंड/कैश/डेमन/OS/GPU मैट्रिक्स के लिए [`benchmarks/README.md`](https://github.com/santhreal/keyhog/blob/main/benchmarks/README.md) देखें।
## 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 चंक तक सीमित है, कुल इनपुट आकार से स्वतंत्र। प्रत्येक इन्वेंट्री विभाजन के लिए कवरेज एनवलप, निकास स्थिति, और टर्मिनल निष्पादन रसीद को संरक्षित करें।
sudo keyhog scan-system --space 50G sudo keyhog scan-system --include-network --output system-findings.json
`scan-system` एक सीमित स्थानीय-होस्ट ऑडिट है, न कि रिपॉजिटरी या क्लाउड इन्वेंट्री विभाजन का विकल्प। यह पथ के बजाय स्कैन किए गए कुल बाइट्स द्वारा स्वयं को सीमित करता है: `--space` सीमा है, और नेटवर्क-माउंटेड फाइलसिस्टम तब तक छोड़ दिए जाते हैं जब तक आप `--include-network` पास नहीं करते। इसे चलाने से पहले माउंट, नेटवर्क-फाइलसिस्टम, स्पेस-सीलिंग और विशेषाधिकार व्यवहार की समीक्षा करें। देखें
[system-wide triage](https://santhreal.github.io/keyhog/guides/system-wide-triage.html).
## संवेदनशील स्थानीय स्कैन को लॉक डाउन करें
Linux `--lockdown` एक फेल-क्लोज्ड प्रोसेस-प्रोटेक्शन मोड है:```sh
keyhog scan . --daemon=off --lockdown
यह वर्तमान और भविष्य की मेमोरी को लॉक करता है, कोर डंप और इंक्रीमेंटल कैश को अक्षम करता है, प्रोसेस में बना रहता है, और सत्यापन, प्लेनटेक्स्ट आउटपुट, फास्ट मोड, और पूर्णता-घटाने वाले स्विच को अस्वीकार करता है। यह असमर्थित प्लेटफ़ॉर्म या अपर्याप्त लॉक-मेमोरी क्षमता पर विफल हो जाता है। देखें हार्डनिंग और डेटा हैंडलिंग।
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 संदर्भ हैं। स्पष्ट
बैकएंड विधियाँ प्रक्रिया को समाप्त करने या किसी अन्य इंजन को चुपचाप
प्रतिस्थापित करने के बजाय टाइप किए गए त्रुटियाँ लौटाती हैं। कच्चे चंक और मिलान
सादा पाठ (plaintext) रख सकते हैं। JSON, लॉग, डिस्क, या नेटवर्क सीमाओं से पहले
उन्हें `RawMatch::to_redacted` से परिवर्तित करें, या अंतिम
`VerifiedFinding` मानों का उपयोग करें।
[आर्किटेक्चर गाइड](https://github.com/santhreal/keyhog/blob/main/docs/src/architecture.md) क्रेट स्वामित्व,
बैकएंड अनुबंध, पुनर्प्राप्ति रसीदें, स्रोत सहायक, और सुरक्षित रिपोर्टिंग
सीमाओं को परिभाषित करता है। क्रेट-स्तरीय Rust दस्तावेज़ीकरण संपूर्ण API का स्वामी है।
## स्पष्ट प्राथमिकता के साथ नीति कॉन्फ़िगर करें
रिपॉजिटरी नीति `.keyhog.toml` में रहती है:```toml
verify = false
[scan]
severity = "high"
incremental = true
[system]
gpu = "auto"
समाधान क्रम अंतर्निहित डिफ़ॉल्ट, उपयोगकर्ता कॉन्फ़िगरेशन, रिपॉजिटरी
कॉन्फ़िगरेशन, जहाँ प्रलेखित है वहाँ पर्यावरण, और फिर स्पष्ट CLI ओवरराइड होता है।
अज्ञात कुंजियाँ और अमान्य संयोजन स्कैनिंग से पहले विफल हो जाते हैं। प्रॉक्सी
क्रेडेंशियल्स को उजागर किए बिना समाधान की गई नीति का निरीक्षण करने के लिए
keyhog config --effective चलाएँ।
expires से आगे की प्रविष्टियाँ स्कैनिंग से पहले allowlist लोड को विफल कर देती हैं।
हर कुंजी के लिए कॉन्फ़िगरेशन और प्राथमिकता देखें और क्रेडेंशियल तथा रनटाइम इनपुट के लिए पर्यावरण चर देखें।
KeyHog ऑर्केस्ट्रेशन को किनारे पर रखता है और डोमेन व्यवहार को लाइब्रेरीज़ में रखता है:```text sources -> scanner -> suppression/evidence -> reporting -> optional verifier CLI and Action own process, transport, and exit semantics.
Detector परिभाषाएँ `detectors/` के अंतर्गत डेटा के रूप में बनी रहती हैं। `keyhog-core` detector और finding प्रकारों का स्वामी है, `keyhog-scanner` मिलान और निष्पादन बैकएंड का स्वामी है, `keyhog-sources` इनपुट अधिग्रहण का स्वामी है, `keyhog-verifier` लाइव जाँचों का स्वामी है, और `keyhog-cli` ऑपरेटर वर्कफ़्लो का स्वामी है।
रिपॉजिटरी मानचित्र, निर्भरता दिशा, bytes-to-finding पाइपलाइन, रूटिंग स्वामित्व, और प्रोफाइलिंग एंट्रीपॉइंट के लिए [आर्किटेक्चर गाइड](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 का उपयोग करें।
detectors/ में एक TOML डालें और
PR खोलें। योगदानकर्ता गाइड (CONTRIBUTING.md)
में स्कीमा और एक काम किया हुआ उदाहरण है।crates/scanner/tests/contracts/ के अंतर्गत एक स्थायी टेस्ट फिक्स्चर बन जाती है।main CI रन पैच
संस्करण बढ़ाता है, चेंजलॉग उत्पन्न करता है, और सभी छह क्रेट्स को crates.io पर प्रकाशित करता है।
सटीक नोट के लिए changes/ के अंतर्गत एक वैकल्पिक फ्रैगमेंट जोड़ें।
रिलीज़ गाइड स्वचालित
लेनदेन और असफल-अपलोड पुनर्प्राप्ति को कवर करता है।[email protected] पर ईमेल करें; PGP आवश्यक नहीं है।KeyHog पिछले सीक्रेट-स्कैनिंग कार्य पर आधारित है। विचार निम्न से उधार लिए गए:
इन परियोजनाओं और उनके योगदानकर्ताओं को धन्यवाद।
लाइसेंस: MIT OR Apache-2.0।
शर्तें: MIT और Apache-2.0। यह दोहरा लाइसेंस कोड और डिटेक्टर TOML को कवर करता है। व्यावसायिक उपयोग, एम्बेडिंग, फ़ोर्क और होस्टेड सेवाओं की किसी भी लाइसेंस के तहत अनुमति है।
GitHub के सार्वजनिक स्टार काउंट के UTC अवलोकनों से उत्पन्न। रिपॉजिटरी पहला बिंदु और प्रत्येक बाद का काउंट संक्रमण संग्रहीत करता है। उसी दिन के पुनः चलाने से उस दिन का बिंदु बदल जाता है, और अपरिवर्तित काउंट कोई कमिट नहीं बनाते।