
Nosey Parker ist ein Kommandozeilen-Tool, das Geheimnisse und vertrauliche Informationen in Textdaten und Git-Verläufen findet.
Siehe unseren Ankündigungsbeitrag https://www.praetorian.com/blog/titus-open-source-secret-scanner/. Das Titus-Repo finden Sie unter https://github.com/praetorian-inc/titus
Nosey Parker ist ein CLI-Tool, das Geheimnisse und sensible Informationen in Textdaten findet.
Es ist im Wesentlichen ein spezielles, grep-ähnliches Werkzeug zur Erkennung von Geheimnissen.
Es wurde für offensive Sicherheit entwickelt (z. B. zur Ermöglichung lateraler Bewegung in Red Teams), kann aber auch für defensive Sicherheitstests nützlich sein. Es hat in Hunderten von offensiven Sicherheitseinsätzen bei Praetorian Geheimnisse gefunden.
Hauptfunktionen:
Der typische Workflow besteht aus drei Phasen:
scanreportbrew install noseyparker
Die letzte Release-Seite enthält vorgefertigte Binärdateien für x86_64/aarch64 Linux und macOS.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
Der aktuellste Commit ist auch über das main-Tag verfügbar.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
Der aktuellste Commit ist auch über das main-Tag verfügbar.
https://aur.archlinux.org/packages/noseyparker
Nosey Parker lässt sich nicht nativ unter Windows erstellen (#121). Es ist möglich, es unter Windows mit WSL1 und der nativen Linux-Version auszuführen.
Dies wurde mit mehreren Versionen von Ubuntu Linux und macOS sowohl auf x86_64 als auch aarch64 getestet.
Erforderliche Abhängigkeiten:
cargo: empfohlener Ansatz: Installation von https://rustup.rscmake: wird zum Erstellen der vectorscan-sys-Crate und einiger anderer Abhängigkeiten benötigtboost: wird zum Erstellen der vectorscan-sys-Crate benötigt (unterstützte Version >=1.57)git: wird zum Einbetten von Versionsinformationen in das noseyparker-CLI benötigtpatch: wird zum Erstellen der vectorscan-sys-Crate benötigtpkg-config: wird zum Erstellen der -Crate benötigtDas Ausführen der noseyparker-Binärdatei ohne Argumente zeigt die Hilfe der obersten Ebene an und beendet sich.
Sie können eine verkürzte Hilfe für einen bestimmten Befehl erhalten, indem Sie noseyparker BEFEHL -h ausführen.
Ausführlichere Hilfe ist mit dem Befehl help oder der Langform --help verfügbar.
Die vorgefertigten Releases enthalten auch Manpages, die die Befehlszeilenhilfe an einem Ort zusammenfassen. Diese in das Markdown-Format konvertierten Manpages sind ebenfalls im Repository hier enthalten.
Wenn Sie eine Frage haben, die in dieser Dokumentation nicht beantwortet wird, starten Sie bitte eine Diskussion.
Der Datenspeicher ist ein spezielles Verzeichnis, das Nosey Parker verwendet, um seine Ergebnisse aufzuzeichnen und seinen internen Zustand zu verwalten.
Ein Datenspeicher wird bei Bedarf automatisch vom Befehl scan erstellt.
Jede gescannte Eingabe wird als Blob bezeichnet. Jeder Blob hat eine eindeutige Blob-ID, einen SHA-1-Digest, der auf die gleiche Weise wie git berechnet wird.
Jeder Blob hat einen oder mehrere zugehörige Provenienz-Einträge. Ein Provenienzeintrag sind Metadaten, die beschreiben, wie die Eingabe entdeckt wurde, z. B. eine Datei im Dateisystem oder eine Datei im Git-Repository-Verlauf.
Nosey Parker ist ein regelbasiertes System, das reguläre Ausdrücke verwendet.
Jede Regel hat ein einzelnes Muster mit mindestens einer Erfassungsgruppe, die den Übereinstimmungsinhalt vom umgebenden Kontext isoliert.
Sie können verfügbare Regeln mit noseyparker rules list auflisten.
Eine Sammlung von Regeln ist in einem Regelsatz organisiert.
Nosey Parkers Standard-Regelsatz enthält Regeln, die Dinge erkennen, die Geheimnisse zu sein scheinen.
Andere Regelsätze sind verfügbar; Sie können sie mit noseyparker rules list. auflisten.
Wenn das Muster einer Regel mit einer Eingabe übereinstimmt, erzeugt es eine Übereinstimmung. Eine Übereinstimmung wird eindeutig durch eine Regel, Blob-ID, Start-Byte-Offset und End-Byte-Offset definiert; diese Felder werden verwendet, um einen eindeutigen Übereinstimmungsbezeichner zu berechnen.
Übereinstimmungen, die sich eine Regel und Erfassungsgruppen teilen, werden zu einem Ergebnis zusammengefasst. Mit anderen Worten, ein Ergebnis ist eine Gruppe von Übereinstimmungen. Dies ist die oberste Berichtseinheit von Nosey Parker.
Wenn Sie das Docker-Image verwenden, ersetzen Sie noseyparker in den folgenden Befehlen durch einen Docker-Aufruf, der ein gemountetes Volume verwendet:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGS>
Der Docker-Container läuft mit /scan als Arbeitsverzeichnis, sodass das Mounten von $PWD auf /scan im Container die automatische Vervollständigung und relative Pfade in Ihrem Befehlszeilenaufruf funktionieren lässt.

Nosey Parker unterstützt nativ das Scannen von Dateien, Verzeichnissen und des gesamten Verlaufs von Git-Repositories.
Wenn Sie beispielsweise einen Git-Klon von CPython lokal unter cpython.git haben, können Sie ihn mit dem Befehl scan scannen.
Nosey Parker erstellt einen neuen Datenspeicher unter cpython.np und speichert dort seine Ergebnisse.
(Der Name cpython.np ist unwesentlich und kann beliebig gewählt werden.)
$ noseyparker scan -d cpython.np cpython.git
Scanned 19.19 GiB from 335,849 blobs in 17 seconds (1.11 GiB/s); 2,178/2,178 new matches
Rule Findings Matches Accepted Rejected Mixed Unlabeled
──────────────────────────────────────────────────────────────────────────────────────────────
Generic API Key 1 8 0 0 0 1
Generic Password 8 1,283 0 0 0 8
Generic Username and Password 2 40 0 0 0 2
HTTP Bearer Token 1 108 0 0 0 1
PEM-Encoded Private Key 61 151 0 0 0 61
netrc Credentials 27 588 0 0 0 27
Run the `report` command next to show finding details.
Siehe noseyparker help scan für weitere Details.
Zum Beispiel, um das Nosey Parker-Repo selbst zu scannen:
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
Siehe noseyparker help scan für weitere Details.
Verwenden Sie --github-user=BENUTZER oder --github-org=ORG. Zum Beispiel, um zugängliche Repositories zu scannen, die dem Benutzer octocat gehören:
noseyparker scan --datastore np.noseyparker --github-user octocat
Diese Eingabespezifizierer verwenden ein optionales GitHub-Token, wenn es in der Umgebungsvariablen NP_GITHUB_TOKEN verfügbar ist.
Die Bereitstellung eines Zugriffstokens gewährt ein höheres API-Ratenlimit und kann zusätzliche Repositories für Sie zugänglich machen.
Siehe noseyparker help scan für weitere Details.
Siehe das Begleitprojekt Nosey Parker Explorer:



Nosey Parker gibt eine Zusammenfassung seiner Ergebnisse aus, wenn der Scan abgeschlossen ist. Sie können diesen Schritt auch separat nach dem Scannen ausführen:
$ noseyparker summarize --datastore np.cpython
Rule Distinct Groups Total Matches
───────────────────────────────────────────────────────────
PEM-Encoded Private Key 1,076 1,192
Generic Secret 331 478
netrc Credentials 42 3,201
Generic API Key 2 31
md5crypt Hash 1 2
Zusätzliche Ausgabeformate werden unterstützt, darunter JSON und JSON Lines, über die Option --format=FORMAT.
Siehe noseyparker help summarize für weitere Details.
Verwenden Sie den Befehl github repos list, um URLs für Repositories aufzulisten, die GitHub-Benutzern oder -Organisationen gehören.
Dieser Befehl verwendet die GitHub-REST-API, um Repositories von Benutzern oder Organisationen aufzulisten.
Zum Beispiel:
$ noseyparker github repos list --user octocat
https://github.com/octocat/Hello-World.git
https://github.com/octocat/Spoon-Knife.git
https://github.com/octocat/boysenberry-repo-1.git
https://github.com/octocat/git-consortium.git
https://github.com/octocat/hello-worId.git
https://github.com/octocat/linguist.git
https://github.com/octocat/octocat.github.io.git
https://github.com/octocat/test-repo1.git
Dieser Befehl verwendet ein optionales GitHub-Token, wenn es in der Umgebungsvariablen NP_GITHUB_TOKEN verfügbar ist.
Die Bereitstellung eines Zugriffstokens gewährt ein höheres API-Ratenlimit und kann zusätzliche Repositories für Sie zugänglich machen.
Zusätzliche Ausgabeformate werden unterstützt, darunter JSON und JSON Lines, über die Option --format=FORMAT.
Siehe noseyparker help github für weitere Details.
Nosey Parker hat einige Integrationen von Drittanbietern:
Wenn Sie eine Integration teilen möchten, die hier nicht aufgeführt ist, erstellen Sie bitte einen PR.
Stellen Sie Fragen oder teilen Sie Ideen im Bereich Diskussionen.
Beiträge sind willkommen, insbesondere neue Regex-Regeln. Die Entwicklung neuer Regex-Regeln wird in einem separaten Dokument beschrieben.
Wenn Sie erwägen, größere Code-Änderungen vorzunehmen, öffnen Sie bitte zuerst ein Issue oder starten Sie eine Diskussion.
Dieses Projekt hat eine Reihe von pre-commit-Hooks aktiviert, deren Verwendung empfohlen wird.
Um sie in Ihrem lokalen Repo zu installieren, stellen Sie sicher, dass pre-commit installiert ist, und führen Sie aus:
$ pre-commit install
Diese Prüfungen helfen, einfache Fehler schnell zu erkennen.
Nosey Parker ist unter der Apache License, Version 2.0 lizenziert.
vectorscan-syssha256sum: wird zum Berechnen von Digests benötigt (oft vom coreutils-Paket bereitgestellt)zsh: wird für Build-Skripte benötigtcreate-release.zsh$ rm -rf release && ./scripts/create-release.zsh
Bei Erfolg wird eine Verzeichnisstruktur unter release mit den Release-Artefakten erstellt.
Das Befehlszeilenprogramm befindet sich unter release/bin/noseyparker.