Skip to main content

Interactive results explorer and annotator for Nosey Parker

Project description

Nosey Parker Explorer

Nosey Parker Explorer is a TUI application for interactive review and annotation of findings from Nosey Parker, the secrets detector. It has been used on hundreds of offensive security engagements at Praetorian to quickly triage tens of thousands of findings.

Nosey Parker Explorer is built on the Textual TUI framework. It works best with a terminal of at least 160x50.

Features

Three main panes

Main screen with findings table, details pane, and filters pane Its main screen has three panes: a filters pane on the left, a findings pane on top, and a findings details pane on bottom. When focusing on a particular finding, up to 10 occurrences of it are shown in the details window.

Faceted search to rapidly focus on particular types of findings

Faceted search with just 2 rules selected The filters pane provides faceted search of the results, similar to what is provided in online shopping sites. Its visibility can be toggled by pressing F7.

Full source file view

Full source file visible The full source for a match can be viewed from by pressing o when a match is selected in the details pane.

Status annotation and commenting

The findings table showing some annotations sets A comment being set In the findings pane, you can assign a status to a finding (either accept or reject). You can also assign a freeform comment if you wish. Any status or comment you assign will be saved to the Nosey Parker datastore you have opened.

Note that Nosey Parker's own report command understands these annotations; it can produce a static report of findings with a particular status using its --finding-status={accept,reject,mixed,null} option.

Integrated help

The integrated help screen Integrated help can be accessed by pressing ?.

Installation

Nosey Parker Explorer is a Python program that uses a few non-standard-library dependencies. It requires Python 3.10 or newer.

Option 1: Use a prepackaged Python zipapp from a release

Prepackaged Python zipapps (produced by shiv) are provided for Linux and macOS for each release. This installation option is simplest: there is no need to set up a venv or pip install anything; all you need is a Python 3.10+ interpreter.

First, download the appropriate artifact for your Python version, OS, and CPU architecture from the latest release. Extract that zip file; within is a single file named noseyparker-explorer. (This single noseyparker-explorer file is a Python zipapp.)

Finally, to run, point it at a Nosey Parker datastore directory (which should contain a datastore.db file):

$ python3 noseyparker-explorer -d <DATASTORE_DIR>

Option 2: Install from source

Use uv:

$ uv sync
$ uv run noseyparker-explorer -d <DATASTORE>

NOTE: the versions of Python available in apt in Ubuntu 20.04 include a version of sqlite3 that is too old for Nosey Parker Explorer.

Option 3: Install from source, developer version

Use uv:

$ uv sync --group dev
$ uv run noseyparker-explorer -d <DATASTORE>

NOTE: the versions of Python available in apt in Ubuntu 20.04 include a version of sqlite3 that is too old for Nosey Parker Explorer.

Usage

Nosey Parker Explorer has an integrated help pane that explains usage in more detail. Activate it by pressing ?.

Filters

The filters pane provides a mechanism to filter the set of visible findings, similar to what you get in online shopping sites.

This filtering mechanism is known more technically as faceted search. A number of facets are available, such as Rule, each with a number of possible values. These values can be selected to restrict the set of findings to those that have particular facet values.

By default, no facet values are selected, and the entire set of findings is displayed. When you select a facet value only findings that have that particular value will be displayed.

Multiple facet values can be selected simultaneously, which causes the union of those values to be displayed.

The numbers next to facet values indicate how many findings are available given the current set of selected facet values.

Annotations

You can assign a status (either accept or reject) and freeform comments to both findings and individual matches. These annotations are included in the output of noseyparker report. That command can also filter output by assigned status (e.g., noseyparker report --finding-status accept` to only show accepted findings).

Any status or comment you assign will be saved to the Nosey Parker datastore you have opened. Your data will not be lost.

Copying text

Nosey Parker Explorer puts your terminal in to application mode which disables clicking and dragging to select text. It is possible to copy from Nosey Parker Explorer, but it probably requires pressing a modifier key as you click and drag:

  • iTerm2: the Fn or Option key
  • Gnome Terminal: the Shift key

Other terminals may use other modifier keys.

Contributing

Feedback, bug reports, and feature requests are welcome; please open an issue.

Pull requests are also welcome. If you are considering a substantial change (more than just a bugfix or small addition), consider starting a discussion first.

This project has a number of pre-commit hooks enabled that you are encouraged to use. To install them in your local repo, make sure you have pre-commit installed and run:

$ pre-commit install

These checks will help to quickly detect simple errors.

License

Nosey Parker Explorer is licensed under the Apache License, Version 2.0.

Any contribution intentionally submitted for inclusion in Nosey Parker by you, as defined in the Apache 2.0 license, shall be licensed as above, without any additional terms or conditions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noseyparker_explorer-0.23.0.tar.gz (5.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

noseyparker_explorer-0.23.0-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

File details

Details for the file noseyparker_explorer-0.23.0.tar.gz.

File metadata

File hashes

Hashes for noseyparker_explorer-0.23.0.tar.gz
Algorithm Hash digest
SHA256 61b22551a73f237be73267a6ed2b99af666e20b0a4047259d0546b8539e97351
MD5 6b689faa72c76a6ef1f1c1e56d915e4a
BLAKE2b-256 0553a26a277099c85bbe631e383c10658c7dc3590c9e3930aa68d849a14b46bc

See more details on using hashes here.

File details

Details for the file noseyparker_explorer-0.23.0-py3-none-any.whl.

File metadata

File hashes

Hashes for noseyparker_explorer-0.23.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e19c8b8bdaa7a0224d21fe3d6a7efc8df58ed8f551a1fec99c5ce7b5f01762a
MD5 1490d5d166f8e6ca48112e5fca1fbd7f
BLAKE2b-256 dfb4cbe3d80f98cb6a13dd3c6737876b02316f9fa2cd304b1029fa78e47b6218

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page