Skip to main content

Manifest Wizard (yes, it actually works)

You drop a bunch of forensic/pentest artifacts in a pile and Manifest Wizard turns them into neat little manifests (JSON + CSV), computes hashes, zips everything up, can encrypt it with OpenSSL if you’re paranoid, and sign it with GPG if you want to pretend you did it all properly.

It ships a fancy interactive Rich UI for humans and a no-nonsense CLI for CI systems that don’t care about your feelings.

Install

If you know how to type and have Python, this will be the easiest part of your day:

$ pip install manifest-wizard

Usage

Interactive (for people who like pretty things and colorful progress bars)

$ manifest-wizard

Walk away while it makes your life tidy. Or hover over it...I won’t judge.

Non-interactive (for scripts, cron jobs, and robots)

If you prefer things automated like most of the questionable decisions in IT...here's the full command:

$ manifest-wizard \
  --non-interactive \
  --finding-id CASE-20251005-01 \
  --phase Exploit \
  --collector alice \
  --tool curl \
  --tool-version 8.9.1 \
  --tool-command "curl --version" \
  --target "https://api.example.com/endpoint" \
  --notes "POC collection for ticket #123" \
  --add-file ./req.txt:request \
  --add-file ./resp.json:response \
  --encrypt \
  --sign \
  --gpg-key alice@example.com

Yes, all those flags. Yes, you probably need most of them. No, there’s no “Make me a sandwich” flag...the moral standards of CLI maintainers are low, but not that low.

What it actually does (short version)

  • Scans and records files you tell it about.
  • Computes hashes so you can prove you didn’t “accidentally” alter anything.
  • Zips the artifacts, because nobody wants twenty loose files floating around.
  • Optionally encrypts with OpenSSL (AES-256-GCM preferred, falls back to AES-256-CBC like a polite bouncer).
  • Optionally signs with GPG (detached ASCII), because signatures look official and make things feel legal.

Notes (nerdy but important)

  • Encryption prefers AES-256-GCM if your OpenSSL is modern and feeling brave; otherwise it falls back to AES-256-CBC like a sensible adult.
  • Password strengthening: PBKDF2 with 100,000 iterations and salted...yes, it takes a moment, but you wanted secure, not instant-gratification.
  • Signing uses detached ASCII GPG signatures.
  • Pass --gpg-key to select a specific key. If you don’t, it’ll try the default key and hope for the best.

Tests (they work; don’t make it mad)

Minimal smoke test to keep CI happy:

from pathlib import Path
from manifest_wizard.models import ManifestBuilder, FileMeta
from manifest_wizard.storage import ArtifactCollector

def test_builder(tmp_path: Path):
    b = ManifestBuilder("CASE-1", "Exploit", "alice", "curl", "8.0", "curl --version", "https://x", "notes")
    ac = ArtifactCollector(tmp_path)
    case = ac.create_case_dir("CASE-1", now=b.now)
    # create a temp file and add
    p = case / "dummy.txt"
    p.write_text("hello")
    meta = ac.copy_evidence(p, case, "other", 1)
    b.add_file(meta)
    m = b.build()
    assert m.files and m.finding_id == "CASE-1"

Run the tests. If they fail, blame the CI pipeline and then fix your code.

Contributing

Open a PR, file an issue, or send a strongly worded email. Contributions welcome. Be kind, or at least be funny about it.

Final thoughts (advice you didn’t ask for)

If you're handling evidence, treat it like whiskey: respect it, label it, and don’t leave it in a hot car. Manifest Wizard helps with the labeling and the zip...the hot car part is still on you.

Metadata

Release files for manifest-wizard-well-it-wasnt-me 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for manifest-wizard-well-it-wasnt-me 1.0.0
File Size Uploaded Provenance Actions
manifest_wizard_well_it_wasnt_me-1.0.0.tar.gz 13.1 kB Without provenance Details for manifest_wizard_well_it_wasnt_me-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for manifest-wizard-well-it-wasnt-me 1.0.0
File Interpreter ABI Platform Actions
manifest_wizard_well_it_wasnt_me-1.0.0-py3-none-any.whl Python 3 none any Details for manifest_wizard_well_it_wasnt_me-1.0.0-py3-none-any.whl

Total release size: 26.7 kB

Release files / manifest_wizard_well_it_wasnt_me-1.0.0.tar.gz

Download URL manifest_wizard_well_it_wasnt_me-1.0.0.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1c8f57a08effed63392efd5b085bc11b7c5fbf988bc85101275a41c684f70667
BLAKE2b-256 checksum
How to use checksums
5208f3b930df67fc04686a760bfa0977bdf1eda77a219384568b9b3e45163557
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / manifest_wizard_well_it_wasnt_me-1.0.0-py3-none-any.whl

Download URL manifest_wizard_well_it_wasnt_me-1.0.0-py3-none-any.whl
Size 13.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31be5411cf0fca4c75d3a9ff536c79c31011d1d3f87650a960abf9cdee502b85
BLAKE2b-256 checksum
How to use checksums
95c18b04b64c2dbe8f3aa647013401178b8ba87c934b0a6277575608cf500d3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for manifest-wizard-well-it-wasnt-me 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page