Zurück zu den Updates
New releaseAug 27, 2026

keyhog v0.5.86

Open-Source-Geheimnisscanner in Rust

Teilen

KeyHog GPU-accelerated open-source secret scanner for code, Git history, cloud, containers, browser assets, and CI

KeyHog auf crates.io  KeyHog-Dokumentation  CI  MIT OR Apache-2.0  GitHub-Sterne und vom Repository verwaltete Stern-Historie

Website · Dokumentation · Architektur · Vyre-GPU-Engine

KeyHog: GPU-beschleunigter Secret-Scanner für Code, Cloud und CI

KeyHog ist ein Open-Source-Secret-Scanner in Rust, der durchgesickerte API-Schlüssel, Tokens, Passwörter und Anmeldedaten in Quellcode, Git-Historie, Containern, Cloud-Speicher, Browser-Assets, Kollaborationsinhalten und laufenden Systemen findet und verifiziert.

Die meisten Secret-Scanner bleiben bei CPU-Regex-Treffern in einem Repository-Checkout stehen. KeyHog kombiniert 934 dienstspezifische Detektoren, Decode-Durchlauf für versteckte Anmeldedaten, kontextbewusste Belege und Unterdrückung, Live-Verifizierung durch Anbieter sowie erstklassige CUDA-, Metal- und WGPU-Ausführung über Vyre. Die Kalibrierung misst jeden geeigneten Pure-Rust-CPU-, Hyperscan/SIMD- und GPU-Backend. Automatisches Routing nutzt dann die schnellste, in Parität bewiesene Route für den exakten Host und die Arbeitslastklasse.

GPU ist ein echtes BackendDie tatsächliche Angriffsfläche scannenSignal vom Rauschen trennenAuf das Ergebnis reagieren
CUDA, natives Metal und WGPU sind gemessene Partner, keine stille Fallback-Kette.Git-Historie, Docker-Layer, Archive, Cloud-Buckets, Source Maps, WASM, HAR-Aufzeichnungen, gehostete Git-Sammlungen und ganze Systeme scannen.base64, hex, URL, protobuf, mehrzeilige und strukturierte Konfiguration dekodieren, bevor Belege, Beispiel-Unterdrückung und Baselines angewendet werden.Berechtigte Anmeldedaten über Anbieter-APIs verifizieren, SARIF oder strukturierte Envelopes ausgeben und exakte Abdeckungs- und Exit-Semantik beibehalten.
cargo install --locked keyhog
keyhog scan .
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/7654/dfb768a9b8e8fa64082992f11d0b284d5ec6a199fc1eac85e0352fb20452186f.gif" alt="KeyHog-Scan, der Schweregrad, Beweise, Datei und Zeile, Behebung, Ergebnisse und Abdeckungsstatus anzeigt" width="900" />
</p>

## Ein Secret-Scanner, der um die GPU herum gebaut ist

KeyHog übergibt nicht ein paar reguläre Ausdrücke an einen generischen Compute-Shader.
Sein GPU-Pfad basiert auf [Vyre](https://github.com/santhreal/vyre), einem Rust-GPU-
Compute-Substrat, das zusammen mit KeyHog entwickelt wurde. Detektor-Trigger werden zu
unveränderlichen, GPU-residenten Tabellen kompiliert. Begrenzte Quell-Batches erzeugen
vollständige Trefferpositionen für dieselbe Bestätigungs-, Unterdrückungs-, Beweis- und
Berichtspipeline, die auch von CPU- und Hyperscan-Routen verwendet wird.

- **Drei physische GPU-Peers.** CUDA, natives Metal und portables WGPU werden
  erfasst, gemessen und unabhängig gemeldet.
- **Exakte Ergebnisparität.** Die Kalibrierung lehnt einen Kandidaten ab, dessen
  Befundidentität von der Referenzroute abweicht. Eine schnellere falsche Antwort gelangt nie
  in die Routing-Tabelle.
- **Persistenter Routennachweis.** KeyHog zeichnet die Binärdatei, den Detektor-Korpus,
  die Konfiguration, die Workload-Klasse, den Host, den Beschleuniger, den Treiber und die
  gemessenen Zeitnachweise auf. Normale Scans führen im heißen Pfad kein Benchmarking durch.
- **Residente Ausführung.** Daemon-Worker halten kompilierte Detektor- und Beschleuniger-
  Zustände warm für wiederholte Datei-, Archiv-, Verlaufs-, Remote- und Cloud-Batches.
- **Keine versteckte CPU-Ausweichmöglichkeit.** Ein explizit ausgewählter Beschleuniger, der
  nicht initialisiert oder ausgelöst werden kann, schlägt sichtbar fehl, anstatt CPU-Befunde unter
  einem GPU-Label zurückzugeben.

Die Standardinstallation über crates.io verwendet die portable reine-Rust-CPU-Route, sodass sie
auf einem sauberen Rust-Host funktioniert. Aktivieren Sie die drei GPU-Peers, ohne Hyperscan zu erwerben:```sh
cargo install --locked keyhog --no-default-features --features portable,gpu

Aktivieren Sie den Hyperscan- oder Vectorscan-SIMD-Regex-Peer:```sh cargo install --locked keyhog --no-default-features --features portable,simd

Führen Sie die Produktions-Backend-Diagnose aus und prüfen Sie dann die gemessene Route:```sh
keyhog backend --self-test
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json

Der Backend-Leitfaden dokumentiert die residenten Tabellen, das begrenzte Dispatch-Modell, den Paritätsvertrag und reproduzierbare Crossover-Belege.

Erste Schritte

Installieren und Ihren ersten Scan ausführen

Die beiden obigen Befehle installieren die neueste crates.io-Version und scannen den aktuellen Baum mit der portablen reinen Rust-Route.

Pinnen Sie eine CI-Umgebung auf genau eine Version mit cargo install --locked --version '=0.5.86' keyhog. KeyHog erfordert Rust 1.89 oder neuer. Siehe den Installationsleitfaden für GPU-, Hyperscan-, CI-, portable und Quell-Build-Profile.

KeyHog beendet sich mit 1, wenn ein Befund die aktive Evidenzrichtlinie blockiert. Die Standardrichtlinie blockiert likely- und confirmed-Befunde, während review-Befunde mit Exit-Code 0 sichtbar bleiben; --evidence-policy paranoid blockiert jede Stufe. Prüfen Sie die genaue Evidenzstufe, den Grundcode, die Datei, die Zeile, den Detektor und die Behebung jedes Befunds. Andere Nicht-Null-Codes beschreiben Eingabe-, System-, Verifikations- oder Abdeckungsfehler; siehe die Exit-Code-Referenz.

Der vollständige Prozessvertrag lautet:

ExitBedeutung
0 ErfolgKein Befund blockiert die aktive Evidenzrichtlinie, und kein Abdeckungsfehler ist aufgetreten. Review-Stufen-Befunde können unter der Standardrichtlinie sichtbar bleiben.
1 blockierende BefundeMindestens ein Befund blockiert die aktive Evidenzrichtlinie, aber keiner wurde als live bestätigt.
2 BedienerfehlerBeheben Sie die Argumente, die Konfiguration, den Detektor-Korpus oder die vom Bediener korrigierbare Eingabe.
3 SystemfehlerReparieren oder wiederholen Sie den Runner. Dies umfasst Low-Level-I/O, fatale Daemon-Dienste, den inkrementellen Cache und explizit ausgewählte SIMD-Fehler.
4 Health-/Selbsttest-FehlerEin doctor- oder backend --self-test-Health-Check war nicht gesund.
10 Live-AnmeldedatenMindestens eine Anmeldedaten wurden als live bestätigt.
11 Scanner-PanikVerwerfen Sie das Scan-Ergebnis, da der Scanner-Zustand nicht vertrauenswürdig ist.
12 erforderlicher GPU-FehlerEin explizit ausgewählter oder erforderlicher GPU-Pfad konnte nicht ausgeführt werden.
13 unvollständige AbdeckungEine angeforderte Quelle schlug fehl oder die Eingabeabdeckung war unvollständig, und kein Befund-Ergebnis hatte Vorrang.
130 unterbrochenSIGINT oder Strg+C hat den Prozess unterbrochen.

Filtern, formatieren, gaten:

Erstellen Sie eine Baseline, bevor Sie sie als Filter verwenden:```sh keyhog scan . --create-baseline .keyhog-baseline.json keyhog scan . --baseline .keyhog-baseline.json --format json-envelope --output keyhog.json

Der erste Befehl erfasst geprüfte Befunde und beendet sich mit `0`, ohne sie
auszugeben. Committen Sie diese Datei und verwenden Sie dann den zweiten Befehl, um nur neue Befund-Identitäten
zu melden. Ein Baseline-Eintrag stimmt mit dem Detektor und dem Anmeldedatenwert überein,
niemals mit dem Dateipfad. Das Verschieben eines aufgezeichneten Geheimnisses lässt die Prüfung also nicht fehlschlagen, aber
das Rotieren schon. Geänderte Anmeldedaten und unvollständige Abdeckung bleiben sichtbar.
Der vollständige Pfad, einschließlich Monorepo-Partitionen, ist [Nur bei neuen
Geheimnissen fehlschlagen](https://santhreal.github.io/keyhog/workflows/ci.html#fail-only-on-new-secrets).

Verwenden Sie für den nächsten Scan das [Rezepte-
Kochbuch](https://santhreal.github.io/keyhog/recipes.html) oder die kopierbaren
Befehle unter [Den richtigen Workflow wählen](#den-richtigen-workflow-waehlen). Sie können
den Git-Verlauf, Container-Images, Cloud-Buckets, Repository-Sammlungen,
URLs und eine gesamte Maschine scannen, ohne die Werkzeuge zu wechseln.

### Repositories für schnelle Pre-Commit-Scans absichern

Registrieren Sie ein Repository beim permanenten KeyHog-Daemon für schnelle
Pre-Commit-Geheimniserkennung (erfordert Unix; unter Windows verwenden Sie den In-Process-`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

Siehe den Leitfaden für den permanenten Guard und den Pre-Commit-Workflow für die vollständige Konfiguration, den Lebenszyklus der Zustandsmaschine und die Hook-Automatisierung.

Zu GitHub Actions hinzufügen

Erstelle .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

Die Aktion scannt den ausgecheckten Baum, schlägt bei Befunden mit `high` oder
`critical` fehl, lädt SARIF in Code Scanning hoch und behält den Bericht als
Workflow-Artefakt. Fehler bei Installation, Abdeckung, Backend und
Berichtsveröffentlichung lassen den Job ebenfalls fehlschlagen.

Nutzen Sie den [GitHub-Action-Leitfaden](https://santhreal.github.io/keyhog/workflows/github-action.html)
für Eingaben, Ausgaben, Baseline-Übernahme, Monorepo-Partitionen, Verifizierung und
Fehlerverhalten. Nutzen Sie den [CI-Leitfaden](https://santhreal.github.io/keyhog/workflows/ci.html)
für GitLab, CircleCI, Jenkins, Buildkite und generische Shell-Jobs. Nutzen Sie den
[Massen-Scan-Leitfaden](https://santhreal.github.io/keyhog/guides/mass-scanning.html)
für Repository-Organisationen, gehostete Git-Gruppen, Cloud-Buckets und partitionierte
Inventare.

## Scan-Oberflächen, die andere Tools als separate Produkte behandeln

KeyHog scannt Bytes an der Grenze, an der sie leaken können, nicht nur getrackte Quelldateien.
Verwenden Sie einen Bericht pro Grenze, damit CI die exakte Abdeckung und den
Fehlerstatus behält.

| Expositionsoberfläche | Beispiel |
|---|---|
| Finales Paketartefakt | Führen Sie `npm pack` aus und scannen Sie dann das erzeugte `.tgz` mit `keyhog scan package.tgz`. Die Archiv-Expansion prüft generierte Dateien, Source Maps, Fixtures und Metadaten, die im erwarteten Quellbaum fehlen. |
| Bereitgestellte Browser-Anwendung | `keyhog scan --url https://app.example.com/assets/app.js` folgt begrenztem JavaScript, Source-Map-, WASM- und Antwort-Decoding, ohne den Scanner in einen unbegrenzten Crawler zu verwandeln. |
| GitHub-Issues, Pull Requests, Diskussionen, Wikis und Gists | `keyhog scan --github-collaboration owner/repo --github-all` scannt jede Kollaborationsoberfläche außerhalb des Checkouts. |
| KI-Agent- und MCP-Konfiguration | `keyhog scan ~/.config ~/.claude ~/.codex` wendet dieselbe Detektor-, Decode-, Evidenz- und Berichtspipeline auf lokale Tool-Konfiguration an. |
| Container-Image-Ebenen | `keyhog scan --docker-image registry.example.com/team/app:v1` scannt den Image-Inhalt, der ausgeführt wird, einschließlich Dateien, die während des Builds eingeführt wurden. |
| Cloud-Objekt-Inventare | `keyhog scan --s3-bucket BUCKET`, `--gcs-bucket BUCKET` oder `--azure-container-url URL` bewahrt Provider-Paginierung, Objekt- und Byte-Limit-Abdeckung im Terminalbericht. |
| Gesamter Entwicklungs-Host | `sudo keyhog scan-system --space 50G` entdeckt gemountete Dateisysteme und erreichbare Git-Historie unter einem harten Speicherbudget. |

Diese Routen teilen einen Erkennungs- und Berichtsvertrag. Ein quellenspezifischer
Fehler kann nicht stillschweigend zu einem engeren lokalen Scan werden.

## Wählen Sie den richtigen Workflow

Wählen Sie zuerst die Quellengrenze. Ein Preset ändert die Erkennungsarbeit, während ein
Backend die Ausführung ändert. Keines von beiden erweitert einen Working-Tree-Scan auf
Git-Historie, ein Provider-Inventar, Cloud-Speicher oder eine Host-Prüfung.

Es gibt keinen ehrlichen `scan everything`-Abkürzungsweg. Eine vollständige
Bestandsprüfung führt die relevanten Grenzen unten als separate Jobs aus und behält jeden
`json-envelope`-Bericht mit seinem rohen Exit-Code.

| Bedarf | Beginnen Sie mit | Durchsatz und Wiederverwendung | Abdeckungsgrenze |
|---|---|---|---|
| Schnelles lokales Feedback | `keyhog scan . --fast --incremental` | Wiederverwendet Hashes unveränderter Dateien. Das Fast-Preset überspringt Decode-, Entropie- und ML-Arbeit. | Führen Sie die Standardrichtlinie vor dem Merge aus, da Fast absichtlich enger ist. |
| Vollständiger Repository-Scan | `keyhog scan .` | Kalibriertes `auto` und der CPU-Core-Worker-Standard. Fügen Sie `--incremental` für wiederholte Scans desselben vertrauenswürdigen Baums hinzu. | Nur aktuelle Dateien. Es fügt keine Git-Historie hinzu. |
| Staged-Commit-Gate | `keyhog scan --git-staged` oder `keyhog hook install` | Liest exakte Index-Blobs, sodass unstagede Änderungen das Ergebnis nicht verändern können. | Nur gestagte Inhalte. Führen Sie einen Working-Tree-Scan separat aus, wenn lokale unstagede Bytes relevant sind. |
| Dauerhafter Repository-Wächter | `keyhog guard add . --mode repo` dann `keyhog guard status .` | Daemon-residentes Root-Registry mit einer 7-Zustands-Maschine, sauberem Attestations-Cache und Richtlinien-Identitätsverfolgung. | Erfordert einen laufenden Daemon. Der Wächter ergänzt, ersetzt aber nicht Staged- und Working-Tree-Scans. |
| GitHub-Pull-Request-Gate | `santhreal/keyhog@v0` | Die Aktion installiert, scannt, veröffentlicht SARIF und ein Artefakt und bewahrt dann den Status von KeyHog. | Ein ausgecheckter Pfad. Verwenden Sie Provider-Inventar-Scans für eine Organisation. |
| GitLab, Jenkins, Buildkite oder Shell-CI | `keyhog scan . --format json-envelope --output keyhog.json` | Persistieren Sie den Bericht und den Exit-Code bei Erfolg, Befunden und Fehlern. Verwenden Sie `--git-diff <base>` nur für ein explizit engeres Gate für geänderte Zeilen. | Die im Checkout vorhandenen Bytes oder der ausgewählte Diff. |
| Repository mit bekannten Befunden übernehmen | Erstellen Sie `.keyhog-baseline.json`, committen Sie es und scannen Sie dann mit `--baseline .keyhog-baseline.json`. | Vorhandene Identitäten bleiben in der Baseline sichtbar, während nur neue Befunde das Gate fehlschlagen lassen. | Eine Baseline unterdrückt keine geänderten Anmeldedaten oder unvollständige Abdeckung. |
| Rekursive Git-Wiederherstellung | `keyhog scan --deep --git-history . --git-blobs . --daemon=off` | Kalibrieren Sie die Deep-Richtlinie einmal pro Worker-Klasse. Führen Sie im Prozess aus. | Ein Repository. `--git-history` deckt nur die Abstammung des aktuellen Checkouts ab, sodass ein nie ausgecheckter Branch ohne Abdeckungslücke übersehen wird; `--git-blobs` erreicht auch verwaiste Blobs, amendierte Commits, Stashes, Notizen, annotierte Tag-Nachrichten und gepackte Referenzen. |
| Container- oder Archiv-Inspektion | `keyhog scan --docker-image registry/app:v1` oder `keyhog scan incoming/` | Behalten Sie einen Envelope-Bericht, damit übersprungene, beschädigte, verschlüsselte, unsichere oder zu große Mitglieder sichtbar bleiben. | Nur das ausgewählte Image oder der Dateisystempfad und unterstützte verschachtelte Formate. |
| URL-, Antwort- oder HAR-Inspektion | `keyhog scan --url https://api.example.com/config` oder `keyhog scan capture.har` | Verwenden Sie begrenzte Quelllimits und bewahren Sie den Terminal-Envelope. | Nur abgerufene Antworten oder Capture-Einträge. Dies ist kein Crawler. |
| Organisations- oder Cloud-Inventar | `keyhog scan --daemon=off --github-org acme --format json-envelope --output acme.json` | Partitionieren Sie nach Provider, Besitzer oder Bucket. Führen Sie unabhängige Partitionen gleichzeitig mit einem Bericht und Status pro Partition aus. | Ein ausgewähltes Provider-Inventar pro Job. Paginierungs- oder Objektlimits bleiben Abdeckungsgrenzen. |
| Bestätigen, ob förderfähige Befunde live sind | `keyhog scan . --verify` | Provider-Concurrency- und Ratenkontrollen sind von Scanner-Workern getrennt. | Sendet anmeldedatenbasierte Anfragen an deklarierte Provider-Endpunkte. Nicht jeder Detektor unterstützt Verifizierung. |
| Ganz-Host-Gesundheitsscan | `sudo keyhog scan-system --space 50G` | Verwendet standardmäßig alle CPU-Kerne und scannt entdeckte Git-Historie nach Dateisystemdaten. | Lokale gemountete Dateisysteme. Netzwerk-Mounts sind optional und die Speichergrenze ist hart. |
| GPU-gestütztes Verzeichnis, Historie, Archiv, Remote- oder Cloud-Inventar auf Unix | Kalibrieren Sie die Autoroute, starten Sie `keyhog daemon start --mass` und führen Sie dann `keyhog scan --daemon=mass <SOURCE>` aus. | Streamt begrenzte Batches durch einen kompilierten CPU-, Hyperscan-, CUDA-, Metal- oder WGPU-Worker. Fügen Sie `--incremental` für warme unveränderte Dateisystembäume hinzu. Die Terminal-Quittung meldet exakte Gesamt- und GPU-Batches, Chunks, Bytes, GPU-Anteil und Durchsatz. | Baselines, Verifizierung, Lockdown, Presets, Overlays und andere Scanner-Richtlinienänderungen werden vor der Erfassung abgelehnt. Inkrementeller Status gilt nur für daemon-lokale Dateisystem-Roots. |

### Jede unterstützte Quellengrenze scannen

Verwenden Sie einen Befehl pro Grenze. Behalten Sie einen `json-envelope`-Bericht und den rohen Exit-
Status für jede Inventarpartition.

| Quelle oder Anwendungsfall | Befehl |
|---|---|
| Mehrere lokale Roots | `keyhog scan services/api services/web deploy/` |
| Kontinuierlich geänderte Dateien | `keyhog watch services/api deploy/` |
| Gestagte Bytes, geänderte Zeilen, erreichbare Historie oder Blobs | `keyhog scan --git-staged`, `--git-diff main`, `--git-history .` oder `--git-blobs .` |
| Native Binärdateien und Firmware-Strings | `keyhog scan --binary firmware.bin` (ein einfacher Verzeichnisscan überspringt Binärdateien und endet trotzdem mit `0`) |
| Archive und komprimierte Quellen | `keyhog scan incoming/` (unterstützte Mitglieder expandieren automatisch) |
| Docker-Image-Ebenen | `keyhog scan --docker-image registry/app:v1` |
| JavaScript, Source Maps, WASM oder eine Endpunktantwort | `keyhog scan --url https://api.example.com/config` |
| HTTP-Anfrage- und Antwort-Captures | `keyhog scan capture.har` |
| GitHub-Issues, Pull Requests, Diskussionen, Wikis und Gists | `keyhog scan --github-collaboration owner/repo --github-all` |
| GitHub-, GitLab- oder Bitbucket-Inventare | `--github-org ORG`, `--gitlab-group GROUP` oder `--bitbucket-workspace WORKSPACE` |
| S3-, GCS- oder Azure-Blob-Inventare | `--s3-bucket BUCKET`, `--gcs-bucket BUCKET` oder `--azure-container-url URL` |
| Ein begrenzter Stream aus einem anderen Tool | `producer \| keyhog scan --stdin` (verwenden Sie `set -o pipefail`, damit ein fehlgeschlagener Producer seinen eigenen Fehler meldet, nicht einen Null-Byte-Scan) |

Ein einfacher Verzeichnisscan liest keine nativen Binärdateien. Jede wird zu einer
`binary (extension or content sniff)`-Abdeckungslücke, der Scan endet trotzdem mit `0`,
und `--no-default-excludes` ändert das nicht. Übergeben Sie daher `--binary`, wenn
kompilierte Artefakte im Umfang sind. Dieses Flag benötigt einen Build mit der `binary`-
Funktion, die die Standard-crates.io-Installation hat, die schlanke `ci`-Funktion jedoch nicht.

Die Extraktion nativer Binärdateien meldet vollständige Anmeldedaten, die den expliziten
Formvertrag eines benannten Detektors erfüllen. Sie unterdrückt kurze Präfix-Fragmente und
generische zuweisungsförmige Strings aus kompilierten Datensektionen, da diese Bytes keinen
Quellkontext behalten.

Endpunkt-Abruf ist begrenzt und SSRF-geprüft. Es ist kein Crawler. Private
Cloud-Endpunkte und Anmeldedaten-Weiterleitung erfordern ihre expliziten Vertrauensflags.
Provider-Token gehören in die dokumentierten Umgebungsvariablen, nicht in Prozessargumente.

Nutzen Sie den [Workflow-Wähler](https://santhreal.github.io/keyhog/capabilities.html)
für Quellen- und Richtliniendetails, den [GitHub-Action-
Leitfaden](https://santhreal.github.io/keyhog/workflows/github-action.html) für das
gepflegte Repository-Gate, den [direkten CI-
Leitfaden](https://santhreal.github.io/keyhog/workflows/ci.html) für dauerhafte Berichte
und Exit-Behandlung und den [Massen-Scan-
Leitfaden](https://santhreal.github.io/keyhog/guides/mass-scanning.html) für
Partitionierung und Aggregation. Das [Rezepte-
Kochbuch](https://santhreal.github.io/keyhog/recipes.html) deckt Container,
Archive, URLs, GitHub-Kollaborationsinhalte und Cloud-Quellen ab.

### Geschwindigkeit und Parallelität ohne Rätselraten

Beginnen Sie mit den Standardeinstellungen. Cargo kann KeyHog nach `cargo install` nicht ausführen, also
führen Sie die folgenden Befehle einmal nach der Installation eines Multi-Backend-Cargo-Builds und
erneut nach Änderungen am Host, Binary, Detektor-Korpus, Treiber oder den Workload-Klassen aus:```sh
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
ControlVerwenden fürDiese Invariante beibehalten
Kalibriertes --backend autoRoutine-CPU-, Hyperscan- oder GPU-Auswahl.Ein expliziter Backend ist ein diagnostischer Override, keine schnellere Standardeinstellung.
--threads <N>Reservieren von CPU-Kapazität auf einem gemeinsam genutzten Runner. Dedizierte Hosts sollten es normalerweise ungesetzt lassen, damit KeyHog die verfügbaren Kerne nutzt.Jeder Wert muss positiv sein. Mehrere gleichzeitige KeyHog-Prozesse besitzen jeweils einen Worker-Pool, also teile das Host-Budget über Partitionen auf.
--reader-threads <N>Gemessene Speicher-Pipelines, bei denen Reader-Arbeit, nicht das Scannen, der Engpass ist.Der Standardwert leitet sich vom Scan-Worker-Pool ab. Lasse ihn ungesetzt, bis Profiling einen Reader-Engpass zeigt.
--incremental und --incremental-cache <PATH>Wiederholte Scans desselben vertrauenswürdigen Baums.Teile einen Index nicht über unzusammenhängende Repositories oder nicht vertrauenswürdige Jobs.
Provider- oder Repository-PartitionenGleichzeitiges Estate-Scannen und unabhängige Wiederholungen.Bewahre eine Terminal-Envelope und den rohen Exit-Code pro Partition. Verkette keine Funde und verwerfe keinen Coverage-Zustand.
--verify-concurrency, --verify-rate und --verify-batchBegrenzen von Live-Provider-Prüfungen unabhängig vom Datei-Scannen.Verifizierung sendet credential-abgeleitete Anfragen. Provider-Ratenlimits, nicht die CPU-Anzahl, besitzen diese Nebenläufigkeit.
Massen-DaemonTB-große Verzeichnis-, Verlaufs-, Archiv-, Remote- oder Cloud-Streams auf einem Unix-Worker.Jeder Frame ist auf 8 MiB und 1.024 Chunks begrenzt. Der Daemon serialisiert Fragment-Zustand und gibt eine exakte CPU/GPU-Ausführungsquittung zurück.
--fast, Standard, --deep oder --precisionAuswahl einer expliziten Erkennungskosten- und Recall-Policy.Diese Presets schließen sich gegenseitig aus und ändern die Coverage. Sie sind keine austauschbaren Geschwindigkeitsregler.

Prüfe die aufgelöste Policy mit keyhog config --effective. Verwende --profile, um feste Scanner-Stufen und den vollständigen Operator-Lauf zu messen, bevor du Reader-, Batch- oder Kanal-Tiefen-Steuerungen änderst. Der Overhead-arme Bericht erfasst Quelle, Backend, Cache, Workload, Thread, Eingabe, Zustandsübergang, CPU-Zeit, Spitzenspeicher, exakte Binär-SHA-256, aktivierte-Funktion-SHA-256, Ziel-Triple, Build-Profil, Compiler, Allocator, verknüpftes-Backend-SHA-256, Detektor-Korpus-SHA-256, aktivierter-Detektor-BLAKE3, kompilierter-Plan-BLAKE3, gehashte Detektor-Provenienz, vollständige aufgelöste-Konfiguration-BLAKE3, Leistungs-Policy-BLAKE3, Preset, angewandter Schutz-Zustand, Quell-Adapter, gehashtes Quell-Ziel-BLAKE3, gehashte Quell-Partition-BLAKE3, rohe Quell-Bytes, Quell-Einheit-Fanout, dekodierungsabgeleitete Bytes, abgeschlossene Backend-Dispatch-Bytes und stabile Größen-/Fanout-Buckets. Byte-Domänen, die ihr Quell-Adapter noch nicht unterscheiden kann, bleiben explizit nicht verfügbar, statt zu gemessenen Nullen zu werden. Der Bericht erfasst keinen Quellinhalt, keine Credential-Werte, keine rohen Pfade, keine rohen URLs und keine rohen Konfigurationswerte. Verwende --perf-trace nur für teure Pro-Muster- und Backend-Diagnosezähler. Lasse erweiterte Pipeline-Steuerungen ungesetzt, es sei denn, eine reproduzierbare Messung auf dem Ziel-Worker zeigt eine Verbesserung.

Für einen wiederkehrenden vollständigen Repository-Scan:```sh keyhog scan . --incremental
--format json-envelope --output keyhog.json

Für einen gemeinsamen Runner, bei dem dem Job vier Scanner-Worker und ein
Reader-Worker zugewiesen sind:```sh
keyhog scan . --threads 4 --reader-threads 1 \
  --format json-envelope --output keyhog.json

Der zweite Befehl ist ein Ressourcenbudget, kein universelles Optimum. Miss den Zielhost, bevor du explizite Worker-Anzahlen wählst.

Für die Tiefenwiederherstellung und die systemweite Triage verwende deren dedizierte Anleitungen, da sich deren Abdeckung und Abschlussregeln von einem normalen Repository-Scan unterscheiden.

Benchmarks für Secret-Scanner

Diese Tafeln vergleichen Erkennungsrichtlinie, CPU- und GPU-Ausführungsanfragen, inkrementelles Cache-Verhalten und Warm-Daemon-Anfragen. Jeder Wert wird aus dem geprüften Benchmark-Snapshot generiert. Der Snapshot bindet die Scanner-Version, den ausführbaren Digest, den Detektor-Digest, das Korpus, den Host und den Ausführungszeitstempel. Verwende die vollständigen Benchmark-Nachweise für die Herkunft der Wettbewerber und den Rückruf pro Kategorie.

Erkennungsgenauigkeit

KeyHog KeyHog v0.5.70 scannte das Mirror-Korpus: 15.000 Fixtures, 3.000 markierte Positivfälle und 2.431.242 Eingabebytes. Das Antwortschlüssel-Manifest wurde vom Scan-Baum ausgeschlossen. Die Zeile verwendet die Standardrichtlinie auf der expliziten Hyperscan/SIMD-Route auf AMD Ryzen 9 9950X 16-Core Processor.

PräzisionRückrufF1Richtig positivFalsch positivFalsch negativ
0.96510.90270.93282.70898292

Der verfolgte Quellbaum war sauber.

Ausführungsrouten, Voreinstellungen und Cache

Gemessen auf AMD Ryzen 9 9950X 16-Core Processor mit NVIDIA GeForce RTX 5090, 32 logischen Kernen, 15.000 Fixtures, 3.000 markierten Positivfällen und 2.431.242 Eingabebytes. Scanner: KeyHog v0.5.70. Der verfolgte Quellbaum war sauber.

Vollständiger Scan nach Ausführungsroute

Alle Zeilen verwenden die Standard-Erkennungsrichtlinie mit inkrementellem Cache und deaktiviertem Daemon. Die automatische Zeile protokolliert die angeforderte Richtlinie, aber das Benchmark-Ergebnis bindet nicht die ausgewählte persistierte Route, daher ist es kein Routing-Nachweis. GPU-Zeilen umfassen die Akquise und den vollständigen Scanner-Start auf diesem kleinen Korpus; sie sind keine GPU-Kernel-Crossover-Messungen.

Angeforderte RouteWandDurchsatzSpitzen-RSSF1
Hyperscan/SIMD860 ms2,70 MB/s416 MiB0.9328
Pure-Rust-CPU903 ms2,57 MB/s509 MiB0.9328
CUDA2,03 s1,14 MB/s963 MiB0.9328
WGPU1,97 s1,18 MB/s1264 MiB0.9328
Automatisch1,46 s1,59 MB/s634 MiB0.9328

Erkennungsrichtlinie auf Hyperscan/SIMD

Die Route, der Cache, der Daemon-Zustand, das Korpus und der Host bleiben fest. Voreinstellungen ändern die Erkennungsarbeit, daher vergleiche Präzision und Rückruf sowie die Zeit.

RichtlinieWandPräzisionRückrufF1Befunde
Schnell737 ms0.97000.88370.92482.738
Standard860 ms0.96510.90270.93282.816
Tief861 ms0.96450.90670.93472.845
Präzision849 ms0.95900.63970.76742.001

Inkrementeller Warm-Wiederholungslauf

Das Benchmark füllt den BLAKE3-Merkle-Index und misst dann den zweiten identischen Scan. Der kleine synthetische Baum ändert sich wenig, da der Scanner-Start dominiert; miss dein Repository, bevor du eine Beschleunigung behauptest.

Hyperscan/SIMD-StandardrichtlinieWandDurchsatzSpitzen-RSS
Cache aus860 ms2,70 MB/s416 MiB
Warmer inkrementeller Cache617 ms3,76 MB/s457 MiB

Warm-Daemon-Anfragen

Eine deterministische reguläre 8-MiB-Datei (sha256:afafbe7b6487fd62866f510e7c281a9e7bfeaa8dc585d7b0478c92ee6c4f5ef5) wurde einmal im Prozess und einmal durch einen eigenen Daemon nach einer Aufwärm-Anfrage gescannt. Die Daemon-Zeit ist die Client-Anfrage; der Daemon-RSS gehört zum residenten Server.

Explizite RouteIm ProzessWarmer DaemonWarm / EinmaligRSS im ProzessDaemon-RSS
Hyperscan/SIMD323 ms106 ms0,33×63 MiB74 MiB
Pure-Rust-CPU278 ms109 ms0,39×62 MiB66 MiB
CUDA1,65 s232 ms0,14×674 MiB666 MiB
WGPU1,33 s237 ms0,18×596 MiB600 MiB

Diese Zeilen decken die warme Einzeldatei-Route ab. Die Massenroute akzeptiert auch begrenzte Verzeichnis- und Remote-Quellstapel; ihr inkrementeller Dateisystempfad wird separat gemessen.

CPU-, Reader-, Speicher-, Größen- und Partitions-Skalierung

Generiert von make -C benchmarks readme-scaling aus benchmarks/reports/readme-scaling.json. Die Testumgebung führte 3 gemessene Versuche nach 1 Aufwärmphase mit explizitem simd und deaktiviertem Daemon-Routing durch. Die Worker-Skalierung verwendet einen warmen Client-Seitencache, um CPU-Arbeit zu isolieren. Reader-, Korpusgrößen-, Speicher- und Partitionszeilen fordern saubere Seitenverdrängung mit posix_fadvise, wo die Plattform dies unterstützt; der Snapshot protokolliert die Richtlinie auf jeder Zeile. Jede Arbeitslast ist bytedeterministisch und befundfrei.

Host: AMD Ryzen 9 9950X 16-Core Processor, 32 effektive logische Kerne, 94.140 MiB RAM, Linux 6.17.0-19-generic. Nachweis: clean, Binärdatei 274b045489c4.

Scan-Worker-Skalierung

WorkerReader-ThreadsMedian-Wandp95-WandDurchsatzBeschleunigungEffizienzMedian-Spitzen-RSS
1auto8.134,4 ms8.135,4 ms7,9 MiB/s1,00x100,0%47,0 MiB
2auto4.398,2 ms6.906,7 ms14,6 MiB/s1,85x92,5%50,3 MiB
4auto2.392,6 ms6.245,2 ms26,7 MiB/s3,40x85,0%57,2 MiB
8auto1.816,3 ms6.117,6 ms35,2 MiB/s4,48x56,0%63,4 MiB
16auto1.428,5 ms6.867,7 ms44,8 MiB/s5,69x35,6%78,4 MiB
32auto1.862,8 ms5.939,1 ms34,4 MiB/s4,37x13,6%126,7 MiB

Dateisystem-Reader-Skalierung

Scan-WorkerReader-ThreadsMedian-Wandp95-WandDurchsatzRelativ zu 1 ReaderMedian-Spitzen-RSS
3211.898,7 ms1.922,1 ms33,7 MiB/s1,00x121,3 MiB
3221.881,7 ms1.887,5 ms34,0 MiB/s1,01x122,8 MiB
3241.874,2 ms1.891,2 ms34,1 MiB/s1,01x126,6 MiB
3281.873,2 ms1.885,7 ms34,2 MiB/s1,01x133,4 MiB
32161.856,8 ms1.868,5 ms34,5 MiB/s1,02x153,9 MiB
32321.877,3 ms1.880,4 ms34,1 MiB/s1,01x179,5 MiB

Korpusgrößen-Skalierung

KorpusDateienExakte BytesMedian-Wandp95-WandDurchsatzMedian-Spitzen-RSS
klein2568 MiB869,9 ms886,1 ms9,2 MiB/s111,1 MiB
mittel1.02464 MiB1.859,9 ms1.874,8 ms34,4 MiB/s126,3 MiB
groß2.048256 MiB5.214,9 ms5.321,7 ms49,1 MiB/s137,1 MiB

Speicher-Skalierung

SpeicherklasseDateisystemGeräte-IDMedian-Wandp95-WandDurchsatzRelativ zum ersten SpeicherMedian-Spitzen-RSS
Arbeitsbereichext4663051.847,4 ms1.863,4 ms34,6 MiB/s1,00x127,0 MiB
Lokal-temptmpfs1161.870,8 ms1.887,3 ms34,2 MiB/s0,99x124,9 MiB

Gleichzeitige Partitions-Skalierung

ProzesseWorker pro ProzessAggregierte WorkerGesamtdateienGesamtbytesMedian-WandAggregierter DurchsatzBeschleunigungMedian-Summen-Spitzen-RSS
132322568 MiB871,9 ms9,2 MiB/s1,00x111,5 MiB
2163251216 MiB404,6 ms39,5 MiB/s4,31x134,0 MiB
48321.02432 MiB571,1 ms56,0 MiB/s6,11x227,2 MiB

Diese Zeilen sind Messungen, keine universellen Abstimmungskonstanten. Führe den Generator auf dem Zielhost und Speicher aus. Verwende den Knickpunkt, an dem der Durchsatz aufhört sich zu verbessern, und reserviere dann CPU und Speicher für den CI-Runner oder die Orchestrierungsschicht.

Reproduziere alle vier Benchmark-Gruppen mit make -C benchmarks readme-matrix. Der Befehl misst die erforderliche Matrix und schlägt fehl, wenn eine angeforderte CPU-, Hyperscan-, CUDA-, Metal-, WGPU-, Voreinstellungs-, Cache-, Daemon-, Thread-, Reader-, Speicher-, Korpusgrößen- oder Partitionszeile nicht verfügbar ist. Verwende make -C benchmarks readme-matrix-check, um zu überprüfen, dass beide Snapshots, Berichte und README übereinstimmen.

Wähle eine Scan-Konfiguration

Beginne mit der Standardrichtlinie und kalibriertem automatischem Routing. Ändere nur eine Achse, wenn der Workflow es erfordert:

WorkflowErkennungsrichtlinieAusführung und WiederverwendungZusätzliche Kontrolle
Erster Repository-ScanStandardKalibriert auto; --daemon=autoÜberprüfe alle Befunde, bevor du Unterdrückungen hinzufügst.
Wiederholter lokaler Baum- oder CI-ScanStandardKalibriert auto; --incrementalPersistiere den inkrementellen Cache nur zwischen Scans desselben vertrauenswürdigen Baums.
Kurze Feedback-Schleife--fastKalibriert auto; optional --incrementalAkzeptiere reduzierte Dekodierungs-, Entropie- und ML-Abdeckung. Führe die Standardrichtlinie vor dem Merge aus.
Wiederherstellung mit höchstem Rückruf--deepIm ProzessTief ist gegenseitig ausschließlich mit schnell und präzision und nicht daemonfähig.
Großes Inventar mit geringerem Rauschen--precisionIm Prozess für Repository-Sammlungen, Verlauf und Cloud-QuellenDie Voreinstellung erhöht die Vertrauensschwellen und deaktiviert die Entropieerkennung. Sie kann Anmeldeinformationen mit geringerem Vertrauen übersehen.
TB-großes Verzeichnis-, Verlaufs-, Archiv-, Remote- oder Cloud-Inventar auf UnixStandardkeyhog daemon start --mass, dann --daemon=massStapel bleiben auf 8 MiB und 1.024 Blöcke begrenzt. Bewahre den Terminal-Abdeckungsbericht und den GPU-Ausführungsbeleg auf.
Live-Validierung von AnmeldeinformationenStandardIm ProzessFüge --verify explizit hinzu. Die Verifizierung sendet von Anmeldeinformationen abgeleitete Anfragen an Anbieter.
Linux-Scan ohne SwapStandard plus --lockdownIm Prozess; inkrementeller Cache deaktiviertLockdown verweigert Verifizierung, Klartextgeheimnisse, Schnellmodus und vollständigkeitsreduzierende Schalter.

--fast, --deep und --precision sind sich gegenseitig ausschließende Erkennungsvoreinstellungen. --lockdown ist ein Fail-Closed-Ausführungsmodus, keine vierte Voreinstellung. Explizite --backend-Werte sind Diagnose- und Benchmark-Overrides. Sie ersetzen nicht die persistierten schnellsten-korrekten Nachweise, die vom automatischen Routing verwendet werden. Siehe Konfiguration, Autoroute-Kalibrierung, Daemon und Warm-Scans und Härtung für die vollständigen Verträge.

Wie KeyHog funktioniert

KeyHog kompiliert seine 934 Detektoren in einen gemeinsamen Trigger- und Extraktionsplan, dekodiert verschachtelte Kodierungen vor dem Abgleich und wendet pro Detektor Bewertung, Nachweis und Unterdrückung an. Pure-Rust-CPU (cpu-fallback) ist immer verfügbar. Die Hyperscan-Route (simd-regex) verwendet Hyperscan, wenn dieses Feature vorhanden ist; portable Builds verwenden die CPU-Route. CUDA (gpu-cuda-region-presence), Metal (gpu-metal-region-presence) und WGPU (gpu-wgpu-region-presence) sind gleichberechtigte Partner in einem beweisgestützten Autoroute-Selektor, keine Fallback-Kette. Die Kalibrierung misst jeden berechtigten Partner und persistiert die schnellste Route, deren vollständige Befunde mit der Referenzroute für den exakten Binär-, Detektor- und Konfigurationszustand, Host, Beschleuniger und Arbeitslastklasse übereinstimmen. Eine fehlende, veraltete, ungültige oder unvollständige Entscheidung stoppt einen automatischen Scan vor der Ausführung und meldet, wie neu kalibriert werden soll. Sie ersetzt niemals stillschweigend ein anderes Backend.

Siehe Architektur für die Repository-Karte, Abhängigkeitsrichtung, Bytes-zu-Befund-Pipeline und Profilierungs-Einstiegspunkte. Siehe Backends und Routing für Ausführungsverträge und Autoroute-Kalibrierung für Parität, Arbeitslastidentität, Cache-Lebenszyklus und Reparaturverfahren.

Vollständige Dokumentation: santhreal.github.io/keyhog - Installation, erster Scan, Ausgabeformate, Erkennungsinterna, Unterdrückungen, Verifizierung, Pre-Commit- und CI-Integration, CLI-Referenz, Autoroute, Exit-Codes, Umgebungsvariablen und Mitwirken. Quelle unter docs/.


Installiere KeyHog

Installiere die aktuelle crates.io-Version:```sh cargo install keyhog --locked

Bauen Sie den Repository-Checkout, wenn Sie eine unveröffentlichte Änderung benötigen:```sh
cargo install --path crates/cli --locked

Bestätigen Sie die installierte Version:```sh keyhog --version --full keyhog doctor

Verwenden Sie die [Installationsanleitung](https://santhreal.github.io/keyhog/install.html) für
Rust-Toolchain-Anforderungen, Feature-Profile und plattformspezifische Laufzeitabhängigkeiten.


## Was es erkennt

934 eingebettete Detektoren mit detektor-eigener Offline-Validierung und Begleitern:

- **Cloud-Anbieter:** AWS (Zugriffsschlüssel + Secret + STS-Verifizierung),
  Azure (Abonnement-Schlüssel, Speicherkonto-Schlüssel, SAS), GCP (Dienstkonto,
  API-Schlüssel), Cloudflare, Heroku, Vercel, Supabase.
- **Zahlungsabwickler:** Stripe, Braintree, Razorpay, Paddle, Plaid,
  Square und PayPal, mit detektor-eigenen Prüfungen und optionalen oder erforderlichen
  Begleitern. Ein Razorpay-Schlüsselgeheimnis erfordert die nahegelegene Schlüssel-ID.
- **Quellcode-Forges:** GitHub-PATs (mit CRC32-Prüfsumme), GitLab-Tokens,
  Bitbucket-App-Passwörter, npm-Tokens (mit Prüfsumme), Gitea / Forgejo
  / Codeberg.
- **Auth / SSO:** Okta, Auth0, Clerk, JumpCloud, Kinde.
- **Kommunikation:** Slack, Discord, Twilio, SendGrid, Postmark, Mailgun,
  Resend, Loops.
- **KI / ML:** OpenAI (sk-/sk-proj-), Anthropic, Google AI Studio,
  Cohere, Mistral, HuggingFace, Replicate. HuggingFace-Organisations-
  Anmeldedaten umfassen sowohl die aktuelle `hf_`-Form als auch Legacy-`api_org_`-
  Tokens.
- **Passwortmanager:** 1Password-Kontogeheimschlüssel (`A3-` gefolgt von
  fünf oder sechs segmentierten Großbuchstaben-Alphanumerik-Komponenten).
- **Datenbanken:** Postgres-Verbindungszeichenfolgen, MongoDB Atlas, Supabase
  Service-Rolle, PlanetScale, Neon, Turso, MySQL, Redis-URLs.
- **Generisch + Entropie-Erkennung:** `API_KEY=<Hoch-Entropie-Blob>` erfasst
  Anmeldedaten ohne benannten Detektor, gesteuert durch kontextbezogene Entropie-
  Schwellenwerte + ML-Bewertung.
- **Kryptografisches Material:** RSA / EC / SSH-Private Keys, PGP-private
  Blöcke, JWT-Signaturgeheimnisse.

Jeder Detektor wird als [TOML-Datei](https://github.com/santhreal/keyhog/blob/main/detectors) (Daten, nicht Code) ausgeliefert:
Dienstmetadaten, Regex-Muster, Schlüsselwörter, Offline-Validatoren, Entropie- und ML-
Richtlinie, Begleitfelder und Verifizierungshandler. Das Hinzufügen eines neuen Detektors ist eine
einzelne überprüfbare TOML-Änderung;
der [Mitwirkenden-Leitfaden](https://github.com/santhreal/keyhog/blob/main/CONTRIBUTING.md) führt Schritt für Schritt hindurch.

`keyhog explain <id>` gibt die vollständige Spezifikation jedes Detektors aus: Muster, Schlüsselwörter,
Verifizierungsendpunkt sowie eine dienstschlüsselbezogene Rotation und eine Schritt-für-Schritt-
Sanierungsanleitung, sodass ein Fund nie eine Blackbox ist:

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/7654/0fc64959950abfa39c0ba81a1f5fbde3fe17a57169d2edca38cb0f248c834470.gif" alt="keyhog explain github-classic-pat: Detektor-Spezifikationsausgabe (Muster ghp_[A-Za-z0-9]{36}, Schlüsselwort, Verifizierungs-URL) gefolgt von der GitHub-Rotationsanleitung und Schritt-für-Schritt-Sanierung" width="860" />
</p>

Durchsuchen Sie die Detektor-Erstellung und -Inspektion in der
[Detektor-Referenz](https://github.com/santhreal/keyhog/blob/main/docs/src/detectors.md) oder fragen Sie den installierten Korpus mit
`keyhog detectors --search <Begriff> --verbose` ab.

## Warum höhere Trefferquote, weniger Fehlalarme

- **Dekodierungsdurchlauf-Scanning.** Kubernetes-`Secret`-Manifeste, Jupyter-
  Notebooks, JWT-Payloads, base64-umhüllte Umgebungen, Helm-Werte und docker-config-
  `auth:`-Blobs. Der strukturierte Vorprozessor behandelt ausgewogene Helm-Aktionen als
  träge Renderzeit-Werte und schließt fehlende Jupyter-Trennzeichen am Dateiende,
  sodass wörtliche Bytes und vollständige Code-Zellen abgedeckt bleiben. Er dekodiert strukturierte
  Werte an Ort und Stelle und speist jeden nachgelagerten Detektor mit dem Klartext. Detektoren
  müssen die Dekodierung nicht jeweils neu implementieren. Dekodierungsaktivierte Scans stellen auch
  nebenwirkungsfreie JavaScript-Byte-Array-XOR- und AES-256-CBC-Ausdrücke wieder her, wenn
  das gesamte Wiederherstellungsmaterial eingebettet ist, einschließlich strenger CryptoJS/OpenSSL-gesalzener
  Passphrase-Wrapper. KeyHog führt die Quelle niemals aus.
- **Mehrzeilige Wiederzusammenführung.** `"sk-proj-" + \`-Fortsetzung in JavaScript,
  YAML-Mehrzeilen-Strings, Makefile-Backslash-Fortsetzung, Helm /
  Jinja-vorlagenbasierte Ausgaben, alles vor dem Regex-Abgleich wieder zusammengeführt.
- **Begleitvalidierung.** Erforderliche Begleiter begrenzen Detektoren mit hohem Rauschen. Ein
  Twilio-API-Schlüssel ohne sein API-Geheimnis wird übersprungen. Optionale Begleiter reichern
  die Evidenzbewertung oder Verifizierung an. Die AWS-Zugriffsschlüssel-Erkennung erfordert nicht
  sein Geheimnis, aber das Geheimnis wird für die Live-Verifizierung benötigt.
- **Detektorübergreifende Auflösung.** Detektor-TOML kann begrenzte Funde eines anderen Detektors
  erfordern, ablehnen oder übernehmen. Die Auflösung bleibt deterministisch über die
  Eingabereihenfolge hinweg, und ungültige Ziele, Widersprüche oder Abhängigkeitszyklen führen zu einem
  Fehlschlag der Korpus-Kompilierung.
- **Evidenz-Befunde.** Jeder Fund trägt eine exakte `review`-, `likely`- oder
  `confirmed`-Stufe sowie einen kanonischen Grundcode. Intrinsische Prüfsummen- oder Grammatik-
  Nachweise, erforderliche Begleiter und Live-Verifizierung erzeugen bestätigte Evidenz;
  starke anbieter-spezifische Form in einer anmeldedaten-tragenden Rolle erzeugt wahrscheinliche
  Evidenz; schwache Anker, generische Zuweisungen, nur-Entropie-Kandidaten und
  Test-, Dokumentations-, Regel- oder Bezeichnerkontexte bleiben Review-Evidenz.
  Ein optionales `evidence_score` ergänzt den Befund, wenn gemessen.
  Der Standard-Schwellenwert `0.40` steuert die interne Konfidenzuntergrenze des Scanners
  und bleibt mit `--min-confidence` konfigurierbar.
- **Bayes'sche Kalibrierung pro Detektor.** `keyhog calibrate --fp generic-api-key`
  schreibt eine Beta(α,β)-A-posteriori-Verteilung. Scans verwenden sie nur, wenn `--calibration-cache`
  oder `[system].calibration_cache` auf diese Datei zeigt, sodass die Konfidenzabstimmung
  explizit und reproduzierbar ist, statt von zufälligem Host-Cache-Zustand abzuhängen.

## Leistung

Verwenden Sie die reproduzierbare Testumgebung in [`benchmarks/`](https://github.com/santhreal/keyhog/blob/main/benchmarks), um KeyHog,
Betterleaks, Kingfisher, Nosey Parker, TruffleHog und Titus unter einem einzigen Bewertungs-
vertrag zu vergleichen. Die Testumgebung schließt das Ground-Truth-Manifest aus jedem Scan-Baum aus.
Die generierten Tabellen bleiben leer, bis Läufe mit aktuellem Schema existieren. Führen Sie
`make -C benchmarks report` nach der Messung aus. Bearbeiten Sie generierte Tabellen nicht
von Hand.

### Erkennungs-Rangliste

<!-- BENCH:leaderboard:start -->
#### Synthetischer SecretBench-Form-Spiegelkorpus
Korpus: **mirror** - 15000 Fixtures, 3000 markierte Positive, 2.431.242 Bytes. Jeder Scanner wurde identisch bewertet (SecretBench-Überlappungsregel); das Antwortschlüssel-Manifest ist vom Scan-Baum ausgeschlossen.

| Rang | Scanner | F1 | Präzision | Trefferquote | Funde | Wandzeit | Spitzen-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 |

#### Wettbewerber-Heimfeld / Heimterritorium-Regelkorpus
Korpus: **homefield** - 2399 Fixtures aus den Ground-Truth-Regelsuiten der Wettbewerber geerntet (Betterleaks- und Kingfisher-Regeln; 1.057 markierte Positive, 1.342 Negative, 772.974 Bytes). Toolübergreifende Auswertung auf Wettbewerber-Ground-Truth.

| Rang | Scanner | F1 | Präzision | Trefferquote | Funde | Wandzeit | Spitzen-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 |
### Ergebnis-Herkunft

| Scanner | Scanner-Version / ausführbarer Digest | Korpus-Identität | Host-Identität | Laufdatum |
|---|---|---|---|---|
| KeyHog | Version: KeyHog v0.5.70<br>Commit: d1eb2e09eb2c289181d93d719ce3f62411aeaf2c<br>Detektor-Set: 926 (926-4168e2c6c93a16ca)<br>Build-Ziel: x86_64-linux<br>ML-Modellversion: moe-v1-246a05b92bec9aa3<br>ML-Modellkarte: aufgezeichnet 2026-07-15; Merkmale 55; synthetisch F1 0.971 / P 0.945 / R 0.999; real F1 0.832 / P 0.753 / R 0.931 / [email protected] 0.938; Null-Trefferquote-Detektoren 2/32; Sechs-Scanner-Differential nicht verfügbar<br>ausführbarer SHA-256: `2899ee53789bff9c531f72645f6c8380a7c873230dfb2b6857079467bc8d2dcd` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:29:39Z |
| TruffleHog | Version: trufflehog 3.96.0<br>ausführbarer SHA-256: `6eb1f98fb890bf9361d8833c061e122dcb4f14fb7b71c65e603b7c096153c724` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:29:58Z |
| Kingfisher | Version: kingfisher 1.94.0<br>ausführbarer SHA-256: `a49f8e9838d7f1da1e9f328a4dbc45a16996bce5078cde3ff1b8ad422d8ab07a` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:29:50Z |
| Titus | Version: Titus v1.1.20 (Go-Port von NoseyParker)<br>ausführbarer SHA-256: `0b9c126a6c280ba28c6ed8795f88bf9bd793164c15959a34921f47a7ed276bcf` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:30:03Z |
| Nosey Parker | Version: noseyparker 0.24.0 Build-Konfiguration: Build-Zeitstempel:    2025-05-08T21:11:15.600909923Z Commit-Zeitstempel:   2025-05-08T17:04:47.000000000-04:00 Commit-Zweig:      HEAD Commit-SHA:         61fa4ca67e4ded1b47b3b9ecce618ae91f1ff2fe Cargo-Funktionen:     color_backtrace,default,disable_trace,github,log,mimalloc,parquet,release Debug:              true Optimierung:       3 Ziel-Triple:      x86_64-unknown-linux-gnu Build-System: OS:                 Ubuntu OS-Version:         Linux (Ubuntu 22.04) CPU-Hersteller:         AuthenticAMD CPU-Marke:          AMD EPYC 7763 64-Core-Prozessor CPU-Kerne:          2 rustc-Version:      1.86.0 rustc-Kanal:      stable rustc-Host-Triple:  x86_64-unknown-linux-gnu rustc-Commit-Datum:  2025-03-31 rustc-Commit-SHA:   05f9846f893b09a1be1fc8560e33fc3c815cfecb rustc-LLVM-Version: 19.1<br>ausführbarer SHA-256: `42d6e88bf77904866a9dda49d7cf333501e76b62e9054b112e67f81dc88e2b71` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:29:53Z |
| Betterleaks | Version: betterleaks version dev<br>ausführbarer SHA-256: `466f7d34e1ebcf12ecd5939494f509c17125e54416226976fced2f046da56ba4` | mirror; 15.000 Fixtures; 3.000 markierte Positive; 2.431.242 Bytes | Hostname-SHA-256/12: `82fcd9288623`<br>Linux 6.17.0-19-generic<br>AMD Ryzen 9 9950X 16-Core-Prozessor | 2026-08-11T01:29:43Z |
<!-- BENCH:leaderboard:end -->

### Geschwindigkeit & Speicher

<!-- BENCH:perf:start -->
#### Synthetischer SecretBench-Form-Spiegelkorpus

| Scanner | Konfiguration | Korpus | Wandzeit | Durchsatz | Spitzen-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 |

#### Wettbewerber-Heimfeld / Heimterritorium-Regelkorpus

| Scanner | Konfiguration | Korpus | Wandzeit | Durchsatz | Spitzen-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 -->

### Trefferquoten-Vergleich pro Kategorie

<!-- BENCH:gaps:start -->
_Diagnostischer Trefferquoten-Ausschnitt nur. Gesamtpräzision und F1 bleiben der Vergleichsvertrag; Fehlalarme werden in ihren bewerteten Kategorien gezählt._

| Kategorie | KeyHog P/R/F1 | KeyHog TP/FN | Bester Wettbewerber P/R/F1 | Trefferquoten-Lücke |
|---|---|---|---|---|
| `generic-high-entropy-string` | 1.000 / 0.434 / 0.606 | 73/95 | Betterleaks 1.000 / 0.798 / 0.887 | +0.363 |
<!-- BENCH:gaps:end -->

### Telemetrie begrenzter statischer Wiederherstellung

<!-- BENCH:recovery:start -->
Ausgewählter Lauf: Scanner **KeyHog** `KeyHog v0.5.70<br>Commit: d1eb2e09eb2c289181d93d719ce3f62411aeaf2c<br>Detektor-Set: 926 (926-4168e2c6c93a16ca)<br>Build-Ziel: x86_64-linux<br>ML-Modellversion: moe-v1-246a05b92bec9aa3<br>ML-Modellkarte: aufgezeichnet 2026-07-15; Merkmale 55; synthetisch F1 0.971 / P 0.945 / R 0.999; real F1 0.832 / P 0.753 / R 0.931 / [email protected] 0.938; Null-Trefferquote-Detektoren 2/32; Sechs-Scanner-Differential nicht verfügbar`; Korpus **mirror** (15.000 Fixtures, 2.431.242 Bytes); generiert `2026-08-11T01:29:39Z`; Artefakt `mirror-keyhog-simd-nocache-nodaemon-full.json`.

Telemetrie-Schema: `static-recovery-v1`.

| Einstufung | Exakte Anzahl |
|---|---:|
| Unterstützt | 0 |
| Nicht unterstützt | 0 |
| Fehlerhaft | 0 |

| Ablehnungsgrund | Exakte Anzahl |
|---|---:|
| _keiner_ | 0 |
<!-- BENCH:recovery:end -->

### Bigram-Bloom-Evidenz

<!-- BENCH:bloom:start -->
Evidenz-Schema: `bloom-evidence-v1`.

| Feld | Exaktes Ergebnis |
|---|---|
| Korpus | `samsung-creddata-fx-record-spans-v1` |
| Korpus-Revision | `f1de3f85dbdf42bf7b3467c0d273a4dfe44d56ee` |
| Korpus-SHA-256 | `4f2de506f334521121bb5b4aef8a37bf0b8153a4f9115e7ba9392d0eed1757b9` |
| Fixture-SHA-256 | `a0ff018dc0a64b2cc78b25999043d1a441afa0087070f4cd8d73ae82408a59b4` |
| Ausführbarer SHA-256 | `2899ee53789bff9c531f72645f6c8380a7c873230dfb2b6857079467bc8d2dcd` |
| Arbeitsbereich-Detektorkorpus-SHA-256 | `d87e8b3d086e9ffa4c8a94f35a717ec710d5224e52e5b4fc7e71db30677609c9` |
| Scanner-Detektor-Digest | `8d789251e092959f` |
| Detektorkorpus-SHA-256 | `3729bd72df768187420f37e08ab64cd2b5a8bac558002d8b0844f465e9a75711` |
| Bloom-Ablehnung | **110/51794 (0.21%)**; 51684 zugelassen |
| Externe Verfügbarkeit | 51794 gemessen; 0 explizit nicht verfügbar von 51794 deklariert; Gründe:  |
| Aktivierte vs. umgangene Funde | **IDENTISCH**; 977/977 Funde |
| Fund-Identitäts-SHA-256 | `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` / `1517bad01ab5228e85b7f4fd44e72226aa3f195bc18a67d58b7a6364b6bf6e0e` |
| Bloom-Dichte/Zustand | 1793/65536 Slots; `healthy`; Sättigung bei 39322 |

Die Fund-Identität bindet Detektor, Datei, Zeile, Byte-Spanne und Anmeldedaten-SHA-256; Klartext-Anmeldedaten werden niemals aufgezeichnet.
<!-- BENCH:bloom:end -->

Reproduzieren: `make -C benchmarks canonical KEYHOG_BIN=/absolute/path/to/keyhog`
führt den exakten KeyHog-, Betterleaks-, Kingfisher-, Nosey-Parker-, TruffleHog- und
Titus-Spiegellauf-Satz erneut aus, einschließlich des ausführungsgebundenen CredData-Bloom-Differentials,
`make -C benchmarks report` regeneriert die obigen Tabellen und
`benchmarks/reports/`. Siehe [`benchmarks/README.md`](https://github.com/santhreal/keyhog/blob/main/benchmarks/README.md)
für die Korpora (mirror, Wettbewerber-Heimterritorium, Samsung/CredData) und die
Backend/Cache/Daemon/OS/GPU-Matrix.

## GPU-gestützte Massen-Daemon-Worker

Der optionale Unix-Massen-Daemon hält einen kompilierten Scanner und seinen kalibrierten
Backend-Zustand warm. Lokale Dateisystem-Scans senden nur kanonische Root- und
Quellenrichtlinien-Metadaten; der Daemon liest und stapelt die Dateien in seinem eigenen
Prozess. Git-, Binär-, Remote- und Cloud-Quellen, die clientseitige
Anmeldedaten erfordern, verwenden geschützte begrenzte Chunk-Frames.```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 ist eine erforderliche Route. Sie wiederholt nie innerhalb des Prozesses. Jeder Batch ist auf 8 MiB und 1.024 Chunks begrenzt, unabhängig von der Gesamtgröße der Eingabe. Bewahren Sie die Abdeckungshülle, den Exit-Status und den Terminal-Ausführungsbeleg für jede Inventarpartition auf.

Siehe Daemon-Lebenszyklus, Routing und Belege und Inventarpartitionierung.

Systemweite Anmeldedaten-Triage```sh

sudo keyhog scan-system --space 50G sudo keyhog scan-system --include-network --output system-findings.json

`scan-system` ist eine begrenzte lokale Host-Prüfung, kein Ersatz für Repository- oder
Cloud-Inventar-Partitionierung. Es begrenzt sich selbst durch die insgesamt gescannten Bytes und nicht
durch den Pfad: `--space` ist die Obergrenze, und netzwerkgebundene Dateisysteme werden
übersprungen, es sei denn, Sie übergeben `--include-network`. Überprüfen Sie Mount-, Netzwerkdateisystem-,
Speicherplatz-Obergrenzen- und Privilegienverhalten, bevor Sie es ausführen. Siehe
[systemweite Triage](https://santhreal.github.io/keyhog/guides/system-wide-triage.html).

## Sensible lokale Scans sperren

Linux `--lockdown` ist ein Fail-Closed-Prozessschutzmodus:```sh
keyhog scan . --daemon=off --lockdown

Es sperrt den aktuellen und zukünftigen Speicher, deaktiviert Core-Dumps und den inkrementellen Cache, bleibt im Prozess und verweigert Verifizierung, Klartextausgabe, den schnellen Modus und Schalter, die die Vollständigkeit reduzieren. Es schlägt auf nicht unterstützten Plattformen oder bei unzureichender Kapazität für gesperrten Speicher fehl. Siehe Härtung und Datenverarbeitung.

KeyHog als Rust-Bibliothek verwenden```rust

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();

Die Standard-Bibliotheksmethoden sind deterministische portable CPU-Referenzen. Explizite
Backend-Methoden geben typisierte Fehler zurück, anstatt den Prozess zu beenden oder
still einen anderen Engine zu substituieren. Rohe Chunks und Treffer können
Klartext enthalten. Konvertieren Sie diese mit `RawMatch::to_redacted` oder verwenden Sie finale
`VerifiedFinding`-Werte, bevor JSON, Logs, Datenträger oder Netzwerkgrenzen überschritten werden.

Der [Architektur-Leitfaden](https://github.com/santhreal/keyhog/blob/main/docs/src/architecture.md) definiert Crate-Eigentum,
Backend-Verträge, Wiederherstellungsbelege, Quell-Helfer und sichere Berichterstattungs-
grenzen. Die Rust-Dokumentation auf Crate-Ebene besitzt die vollständige API.

## Richtlinie mit expliziter Priorität konfigurieren

Die Repository-Richtlinie liegt in `.keyhog.toml`:```toml
verify = false

[scan]
severity = "high"
incremental = true

[system]
gpu = "auto"

Die Auflösungsreihenfolge ist: integrierte Standardwerte, Benutzerkonfiguration, Repository-Konfiguration, Umgebung, sofern dokumentiert, und schließlich explizite CLI-Überschreibungen. Unbekannte Schlüssel und ungültige Kombinationen schlagen vor dem Scannen fehl. Führen Sie keyhog config --effective aus, um die aufgelöste Richtlinie zu prüfen, ohne Proxy-Anmeldeinformationen offenzulegen. Einträge nach expires schlagen beim Laden der Zulassungsliste vor dem Scannen fehl.

Siehe Konfiguration und Rangfolge für jeden Schlüssel und Umgebungsvariablen für Anmeldeinformationen und Laufzeiteingaben.

Architektur

KeyHog hält die Orchestrierung an der Grenze und das Domänenverhalten in Bibliotheken:```text sources -> scanner -> suppression/evidence -> reporting -> optional verifier CLI and Action own process, transport, and exit semantics.

Detektor-Definitionen bleiben Daten unter `detectors/`. `keyhog-core` besitzt
die Detektor- und Fundtypen, `keyhog-scanner` besitzt die Matching- und Ausführungs-
Backends, `keyhog-sources` besitzt die Eingabeerfassung, `keyhog-verifier` besitzt die Live-
Prüfungen, und `keyhog-cli` besitzt die Operator-Workflows.

Beginnen Sie mit dem [Architektur-Leitfaden](https://github.com/santhreal/keyhog/blob/main/docs/src/architecture.md) für die Repository-
Karte, Abhängigkeitsrichtung, Bytes-bis-Fund-Pipeline, Routing-Zuständigkeit und
Profiling-Einstiegspunkte.

## Installation prüfen und erweitern```sh
keyhog detectors --search aws --verbose
keyhog explain aws-access-key
keyhog backend --autoroute --json
keyhog completion zsh

Die CLI-Referenz listet jeden Befehl, jedes Flag, jeden generierten Standardwert und jeden Exit-Status auf. Verwende keyhog --help und keyhog <command> --help für die exakt installierte Version.

Mitwirken

  • Neuer Detektor? Lege eine TOML-Datei in detectors/ ab und erstelle einen PR. Der Mitwirkenden-Leitfaden (CONTRIBUTING.md) enthält das Schema und ein ausgearbeitetes Beispiel.
  • Fehler / übersehenes Geheimnis / falsch-positiv? Melde ein Issue mit der geschwärzten Anmeldedaten-Form und der Detektor-ID; jeder Bericht wird zu einer dauerhaften Test-Fixture unter crates/scanner/tests/contracts/.
  • Release-Verhalten? Jeder erfolgreiche main-CI-Lauf erhöht die Patch-Version, generiert Changelogs und veröffentlicht alle sechs Crates auf crates.io. Füge für einen präzisen Hinweis optional ein Fragment unter changes/ hinzu. Der Release-Leitfaden behandelt die automatische Transaktion und die Wiederherstellung nach fehlgeschlagenen Uploads.
  • Sicherheitsproblem in KeyHog selbst? Öffne kein öffentliches Issue; nutze die private Schwachstellenmeldung von GitHub. Falls dieses Formular nicht verfügbar ist, sende eine E-Mail an [email protected]; PGP ist nicht erforderlich.

Changelog. Offene Issues.

Danksagungen

KeyHog baut auf früheren Secret-Scanning-Arbeiten auf. Ideen übernommen von:

  • TruffleHog: Detektor-Breite und Verifizierungssemantik
  • Betterleaks: Token-Effizienz und Unterdrückung falsch-positiver Ergebnisse
  • Titus: Scan-Ergonomie und Schweregrad-Kalibrierung

Dank an diese Projekte und ihre Mitwirkenden.

Lizenz

Lizenz: MIT OR Apache-2.0.

Bedingungen: MIT und Apache-2.0. Diese Dual-Lizenz deckt den Code und die Detektor-TOMLs ab. Kommerzielle Nutzung, Einbettung, Forks und gehostete Dienste sind unter beiden Lizenzen gestattet.


Stern-Verlauf

KeyHog GitHub-Stern-Verlauf aus repository-eigenen Beobachtungen

Generiert aus UTC-Beobachtungen der öffentlichen GitHub-Sternanzahl. Das Repository speichert den ersten Punkt und jeden späteren Zählübergang. Wiederholungen am selben Tag ersetzen den Punkt des Tages, und unveränderte Zählungen erzeugen keinen Commit.

Kategorien