
Nosey Parker est un outil en ligne de commande qui trouve des secrets et des informations sensibles dans les données textuelles et l'historique Git.
Voir notre annonce https://www.praetorian.com/blog/titus-open-source-secret-scanner/. Le dépôt Titus se trouve à https://github.com/praetorian-inc/titus
Nosey Parker est un outil en ligne de commande qui trouve des secrets et des informations sensibles dans des données textuelles.
Il s'agit essentiellement d'un outil spécialisé de type grep pour la détection de secrets.
Il a été conçu pour la sécurité offensive (par exemple, pour permettre le mouvement latéral lors d'audits de sécurité), mais il peut également être utile pour les tests de sécurité défensifs. Il a découvert des secrets dans des centaines d'engagements de sécurité offensive chez Praetorian.
Fonctionnalités clés :
Le flux de travail typique comporte trois phases :
scanreportbrew install noseyparker
La page de la dernière version contient des binaires précompilés pour Linux et macOS en x86_64/aarch64.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
Le commit le plus récent est également disponible via le tag main.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
Le commit le plus récent est également disponible via le tag main.
https://aur.archlinux.org/packages/noseyparker
Nosey Parker ne se compile pas nativement sous Windows (#121). Il est possible de l'exécuter sous Windows en utilisant WSL1 et la version Linux native.
Ceci a été testé avec plusieurs versions d'Ubuntu Linux et macOS sur x86_64 et aarch64.
Dépendances requises :
cargo : approche recommandée : installer depuis https://rustup.rscmake : nécessaire pour la compilation de la crate vectorscan-sys et d'autres dépendancesboost : nécessaire pour la compilation de la crate vectorscan-sys (version prise en charge >=1.57)git : nécessaire pour intégrer les informations de version dans le CLI noseyparkerpatch : nécessaire pour la compilation de la crate vectorscan-syspkg-config : nécessaire pour la compilation de la crate L'exécution du binaire noseyparker sans arguments affiche l'aide de premier niveau et se termine.
Vous pouvez obtenir une aide abrégée pour une commande particulière en exécutant noseyparker COMMANDE -h.
Une aide plus détaillée est disponible avec la commande help ou l'option longue --help.
Les versions précompilées incluent également des pages de manuel qui rassemblent l'aide en ligne de commande en un seul endroit. Ces pages de manuel converties au format Markdown sont également incluses dans le dépôt ici.
Si vous avez une question à laquelle cette documentation ne répond pas, veuillez lancer une discussion.
Le datastore est un répertoire spécial que Nosey Parker utilise pour enregistrer ses résultats et maintenir son état interne.
Un datastore sera implicitement créé par la commande scan si nécessaire.
Chaque entrée scannée est appelée un blob. Chaque blob possède un identifiant de blob unique, qui est un condensé SHA-1 calculé de la même manière que le fait git.
Chaque blob a une ou plusieurs entrées de provenance qui lui sont associées. Une entrée de provenance est une métadonnée qui décrit comment l'entrée a été découverte, par exemple un fichier dans le système de fichiers ou un fichier dans l'historique d'un dépôt Git.
Nosey Parker est un système basé sur des règles qui utilise des expressions régulières.
Chaque règle a un seul motif avec au moins un groupe de capture qui isole le contenu correspondant du contexte environnant.
Vous pouvez lister les règles disponibles avec noseyparker rules list.
Un ensemble de règles est organisé en ruleset.
Le ruleset par défaut de Nosey Parker inclut des règles qui détectent des éléments ressemblant à des secrets.
D'autres rulesets sont disponibles ; vous pouvez les lister avec noseyparker rules list.
Lorsque le motif d'une règle correspond à une entrée, il produit une correspondance. Une correspondance est définie de manière unique par une règle, un identifiant de blob, un décalage de début en octets et un décalage de fin en octets ; ces champs sont utilisés pour calculer un identifiant de correspondance unique.
Les correspondances qui partagent une règle et des groupes de capture sont combinées en un finding. En d'autres termes, un finding est un groupe de correspondances. C'est l'unité de rapport de premier niveau de Nosey Parker.
Lors de l'utilisation de l'image Docker, remplacez noseyparker dans les commandes suivantes par une invocation Docker utilisant un volume monté :
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGUMENTS>
Le conteneur Docker s'exécute avec /scan comme répertoire de travail, donc monter $PWD sur /scan dans le conteneur fera fonctionner la complétion par tabulation et les chemins relatifs dans votre invocation en ligne de commande.

Nosey Parker prend en charge nativement l'analyse des fichiers, des répertoires et de tout l'historique des dépôts Git.
Par exemple, si vous avez un clone Git de CPython localement dans cpython.git, vous pouvez l'analyser avec la commande scan.
Nosey Parker créera un nouveau datastore dans cpython.np et y sauvegardera ses résultats.
(Le nom cpython.np n'est pas essentiel, vous pouvez choisir ce que vous voulez.)
$ 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.
Voir noseyparker help scan pour plus de détails.
Par exemple, pour analyser le dépôt Nosey Parker lui-même :
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
Voir noseyparker help scan pour plus de détails.
Utilisez --github-user=UTILISATEUR ou --github-org=ORG. Par exemple, pour analyser les dépôts accessibles appartenant à l'utilisateur octocat :
noseyparker scan --datastore np.noseyparker --github-user octocat
Ces spécificateurs d'entrée utiliseront un jeton GitHub optionnel s'il est disponible dans la variable d'environnement NP_GITHUB_TOKEN.
Fournir un jeton d'accès donne une limite de débit API plus élevée et peut rendre des dépôts supplémentaires accessibles.
Voir noseyparker help scan pour plus de détails.
Voir le projet compagnon, Nosey Parker Explorer:



Nosey Parker affiche un résumé de ses résultats à la fin de l'analyse. Vous pouvez également exécuter cette étape séparément après l'analyse :
$ 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
Des formats de sortie supplémentaires sont pris en charge, notamment JSON et JSON lines, via l'option --format=FORMAT.
Voir noseyparker help summarize pour plus de détails.
Utilisez la commande github repos list pour lister les URL des dépôts appartenant à des utilisateurs ou organisations GitHub.
Cette commande utilise l'API REST GitHub pour énumérer les dépôts appartenant à des utilisateurs ou organisations.
Par exemple :
$ 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
Cette commande utilisera un jeton GitHub optionnel s'il est disponible dans la variable d'environnement NP_GITHUB_TOKEN.
Fournir un jeton d'accès donne une limite de débit API plus élevée et peut rendre des dépôts supplémentaires accessibles.
Des formats de sortie supplémentaires sont pris en charge, notamment JSON et JSON lines, via l'option --format=FORMAT.
Voir noseyparker help github pour plus de détails.
Nosey Parker dispose de quelques intégrations tierces :
Si vous avez une intégration que vous souhaitez partager et qui n'est pas listée ici, veuillez créer une PR.
Posez des questions ou partagez des idées dans la zone Discussions.
Les contributions sont les bienvenues, en particulier les nouvelles règles regex. Le développement de nouvelles règles regex est détaillé dans un document séparé.
Si vous envisagez d'apporter des modifications importantes au code, veuillez d'abord ouvrir une issue ou lancer une discussion.
Ce projet dispose de plusieurs hooks pre-commit activés qu'il est recommandé d'utiliser.
Pour les installer dans votre dépôt local, assurez-vous d'avoir pre-commit installé et exécutez :
$ pre-commit install
Ces vérifications aideront à détecter rapidement les erreurs simples.
Nosey Parker est sous licence Apache License, Version 2.0.
vectorscan-syssha256sum : nécessaire pour calculer les condensés (souvent fourni par le paquet coreutils)zsh : nécessaire pour les scripts de compilationcreate-release.zsh$ rm -rf release && ./scripts/create-release.zsh
En cas de succès, cela produira une arborescence de répertoires dans release avec les artefacts de publication.
Le programme en ligne de commande se trouvera dans release/bin/noseyparker.