
Nosey Parker는 텍스트 데이터와 Git 기록에서 비밀 및 민감 정보를 찾는 명령줄 도구입니다.
공지 게시물 https://www.praetorian.com/blog/titus-open-source-secret-scanner/ 을 참조하세요. Titus 저장소는 https://github.com/praetorian-inc/titus 에서 찾을 수 있습니다.
Nosey Parker는 텍스트 데이터에서 비밀 및 민감한 정보를 찾는 CLI 도구입니다. 이는 본질적으로 비밀 탐지를 위한 특수 목적의 grep 유사 도구입니다.
공격적 보안(예: 레드 팀의 측면 이동 가능)을 위해 설계되었지만 방어적 보안 테스트에도 유용할 수 있습니다. Praetorian에서 수백 건의 공격적 보안 업무에서 비밀을 발견했습니다.
주요 기능:
일반적인 워크플로는 세 단계입니다:
scan 명령을 사용하여 관심 있는 입력을 스캔합니다.report 명령을 사용하여 스캔 결과의 세부 정보를 보고합니다.brew install noseyparker
최신 릴리스 페이지에는 x86_64/aarch64 Linux 및 macOS용 사전 빌드된 바이너리가 포함되어 있습니다.
docker pull ghcr.io/praetorian-inc/noseyparker:latest
최신 커밋은 main 태그를 통해서도 사용할 수 있습니다.
docker pull ghcr.io/praetorian-inc/noseyparker-alpine:latest
최신 커밋은 main 태그를 통해서도 사용할 수 있습니다.
https://aur.archlinux.org/packages/noseyparker
Nosey Parker는 Windows에서 기본적으로 빌드되지 않습니다(#121). WSL1 및 네이티브 Linux 릴리스를 사용하여 Windows에서 실행하는 것이 _가능_합니다.
이는 x86_64 및 aarch64의 여러 Ubuntu Linux 및 macOS 버전에서 테스트되었습니다.
필수 종속성:
cargo: 권장 방법: https://rustup.rs 에서 설치cmake: vectorscan-sys 크레이트 및 다른 종속성 빌드에 필요boost: vectorscan-sys 크레이트 빌드에 필요 (지원 버전 >=1.57)git: noseyparker CLI에 버전 정보를 포함하는 데 필요patch: vectorscan-sys 크레이트 빌드에 필요pkg-config: vectorscan-sys 크레이트 빌드에 필요인수 없이 noseyparker 바이너리를 실행하면 최상위 도움말을 출력하고 종료합니다. 특정 명령에 대한 간략한 도움말은 noseyparker COMMAND -h를 실행하여 얻을 수 있습니다. 더 자세한 도움말은 help 명령 또는 긴 형식의 --help 옵션으로 사용할 수 있습니다.
사전 빌드된 릴리스에는 명령줄 도움말을 한 곳에 모은 매뉴얼 페이지도 포함되어 있습니다. 이 매뉴얼 페이지를 Markdown 형식으로 변환한 것은 저장소 여기에도 포함되어 있습니다.
이 문서에서 답변되지 않은 질문이 있으면 토론 시작하기를 해주세요.
_데이터 저장소_는 Nosey Parker가 결과를 기록하고 내부 상태를 유지하는 데 사용하는 특수 디렉터리입니다. 필요한 경우 scan 명령에 의해 암시적으로 생성됩니다.
각 스캔된 입력을 _blob_이라고 합니다. 각 blob에는 git과 동일한 방식으로 계산된 SHA-1 다이제스트인 고유한 blob ID가 있습니다.
각 blob에는 하나 이상의 provenance 항목이 연결되어 있습니다. Provenance 항목은 입력이 어떻게 발견되었는지 설명하는 메타데이터로, 예를 들어 파일 시스템의 파일 또는 Git 저장소 히스토리의 파일 등입니다.
Nosey Parker는 정규 표현식을 사용하는 규칙 기반 시스템입니다. 각 _규칙_은 일치하는 내용을 주변 컨텍스트와 분리하는 하나 이상의 캡처 그룹이 있는 단일 패턴을 가지고 있습니다. 사용 가능한 규칙은 noseyparker rules list로 나열할 수 있습니다.
규칙 모음은 _규칙 세트_로 구성됩니다. Nosey Parker의 기본 규칙 세트는 비밀로 보이는 것을 탐지하는 규칙을 포함합니다. 다른 규칙 세트도 사용 가능하며, noseyparker rules list로 나열할 수 있습니다.
규칙의 패턴이 입력과 일치하면 _일치 항목_이 생성됩니다. 일치 항목은 규칙, blob ID, 시작 바이트 오프셋, 끝 바이트 오프셋으로 고유하게 정의되며, 이 필드들은 고유한 일치 식별자를 계산하는 데 사용됩니다.
규칙과 캡처 그룹을 공유하는 일치 항목은 _발견 항목_으로 결합됩니다. 즉, _발견 항목_은 일치 항목의 그룹입니다. 이는 Nosey Parker의 최상위 보고 단위입니다.
Docker 이미지를 사용할 때는 다음 명령에서 noseyparker를 마운트된 볼륨을 사용하는 Docker 호출로 대체하세요:
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest <ARGS>
Docker 컨테이너는 /scan을 작업 디렉터리로 실행되므로, 컨테이너의 /scan에 $PWD를 마운트하면 명령줄 호출에서 탭 완성 및 상대 경로가 작동합니다.

Nosey Parker는 파일, 디렉터리 및 Git 저장소의 전체 히스토리를 스캔하는 기본 지원을 제공합니다.
예를 들어, 로컬에 cpython.git에 CPython의 Git 클론이 있다면 scan 명령으로 스캔할 수 있습니다. Nosey Parker는 cpython.np에 새 데이터 저장소를 생성하고 그곳에 결과를 저장합니다. (cpython.np라는 이름은 중요하지 않으며, 원하는 대로 지정할 수 있습니다.)
$ 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.
자세한 내용은 noseyparker help scan을 참조하세요.
예를 들어, Nosey Parker 저장소 자체를 스캔하려면:
noseyparker scan --datastore np.noseyparker --git-url https://github.com/praetorian-inc/noseyparker
자세한 내용은 noseyparker help scan을 참조하세요.
--github-user=USER 또는 --github-org=ORG를 사용하세요. 예를 들어, octocat 사용자에 속한 접근 가능한 저장소를 스캔하려면:
noseyparker scan --datastore np.noseyparker --github-user octocat
이러한 입력 지정자는 NP_GITHUB_TOKEN 환경 변수에 GitHub 토큰이 있으면 선택적으로 사용합니다. 액세스 토큰을 제공하면 더 높은 API 속도 제한을 얻고 추가 저장소에 접근할 수 있습니다.
자세한 내용은 noseyparker help scan을 참조하세요.
동반 프로젝트인 Nosey Parker Explorer를 참조하세요:



Nosey Parker는 스캔이 완료되면 결과 요약을 출력합니다. 스캔 후 이 단계를 별도로 실행할 수도 있습니다:
$ 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
JSON 및 JSON lines을 포함한 추가 출력 형식이 --format=FORMAT 옵션을 통해 지원됩니다.
자세한 내용은 noseyparker help summarize를 참조하세요.
github repos list 명령을 사용하여 GitHub 사용자 또는 조직에 속한 저장소의 URL을 나열합니다. 이 명령은 GitHub REST API를 사용하여 사용자 또는 조직에 속한 저장소를 열거합니다. 예를 들어:
$ 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
이 명령은 NP_GITHUB_TOKEN 환경 변수에 GitHub 토큰이 있으면 선택적으로 사용합니다. 액세스 토큰을 제공하면 더 높은 API 속도 제한을 얻고 추가 저장소에 접근할 수 있습니다.
JSON 및 JSON lines을 포함한 추가 출력 형식이 --format=FORMAT 옵션을 통해 지원됩니다.
자세한 내용은 noseyparker help github를 참조하세요.
Nosey Parker에는 몇 가지 타사 통합이 있습니다:
여기에 나열되지 않은 공유하고 싶은 통합이 있으면 PR을 생성해 주세요.
Discussions 영역에서 질문하거나 아이디어를 공유하세요.
기여는 환영합니다, 특히 새로운 정규식 규칙을 환영합니다. 새로운 정규식 규칙 개발은 별도 문서에 자세히 설명되어 있습니다.
중요한 코드 변경을 고려하고 있다면 먼저 이슈를 열거나 토론을 시작해 주세요.
이 프로젝트에는 사용을 권장하는 여러 pre-commit 훅이 활성화되어 있습니다. 로컬 저장소에 설치하려면 pre-commit이 설치되어 있는지 확인하고 다음을 실행하세요:
$ pre-commit install
이러한 검사는 간단한 오류를 신속하게 감지하는 데 도움이 됩니다.
Nosey Parker는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다.
sha256sum: 다이제스트 계산에 필요 (보통 coreutils 패키지에서 제공)zsh: 빌드 스크립트에 필요create-release.zsh 스크립트를 사용하여 빌드$ rm -rf release && ./scripts/create-release.zsh
성공하면 release에 릴리스 아티팩트로 채워진 디렉터리 구조가 생성됩니다. 명령줄 프로그램은 release/bin/noseyparker에 있습니다.