Skip to main content

Lightweight Windows snapshot and change-analysis CLI.

Project description

WinSnap

WinSnap is a lightweight Windows snapshot and change-analysis CLI.

It captures selected Windows system state, saves it as JSON, and helps you compare snapshots to understand what changed over time.

Current version: 1.0.2

Installation

From the project folder:

python -m pip install .

For development, install in editable mode:

python -m pip install -e .

After installation, run:

winsnap --help

Current collectors:

  • Processes
  • Services
  • Scheduled tasks
  • Registry autoruns
  • Startup folders
  • Local users
  • Local groups
  • Installed software
  • Network listeners
  • Firewall rules

Core Workflow

winsnap create before --note "clean system"
winsnap create after --note "after install"
winsnap diff before after
winsnap diff before after --details

Without installing, you can run WinSnap from the project folder with python -m winsnap ... or ./winsnap.cmd ....

Profiles

Use profiles to control which collectors run during snapshot creation:

winsnap create <name> --profile full   # default, all collectors
winsnap create <name> --profile core   # core collectors only (processes, services, tasks, autoruns, startup, local users, local groups)

Commands

Create a snapshot:

winsnap create <name>

Create a snapshot with a note:

winsnap create <name> --note "your note"
winsnap create <name> --profile core                 # run core collectors only
winsnap create <name> --no-hash --no-signature       # disable hashing/signature (troubleshooting)
winsnap create <name> --workers 8 --timings          # tune parallelism and print durations

List snapshots:

winsnap list

Show snapshot metadata:

winsnap show <name>

Compare snapshots:

winsnap diff <before> <after>
winsnap diff <before> <after> --all   # show all changes without filtering noise

Show detailed diff output:

winsnap diff <before> <after> --details

Inspect matching entries inside one snapshot:

winsnap inspect <snapshot> <query>
winsnap inspect <snapshot> <query> --details

Search all snapshots:

winsnap search <query>
winsnap search <query> --details

Delete a snapshot:

winsnap delete <name>

Show version:

winsnap version
winsnap --version
winsnap -v

Show help:

winsnap help
winsnap --help
winsnap -h

Risk Hints

Risk hints are currently archived while filtering is developed to reduce noisy output.

Snapshots still collect processes, services, scheduled tasks, registry autoruns, startup folder entries, and network listeners. Diff, inspect, and search output continues to show raw changes and matching entries without risk-hint labels.

Scheduled Task Collection

Scheduled task snapshots currently collect:

  • Task name
  • Task path
  • State
  • Author
  • Run as user
  • Triggers
  • Actions

Registry Autorun Collection

Registry autorun snapshots currently collect Run and RunOnce values from:

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
  • HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce

Startup Folder Collection

Startup folder snapshots currently collect direct files from:

  • %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
  • %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup

Shortcut (.lnk) entries include target path, arguments, and working directory when available.

Network Listener Collection

Network listener snapshots currently collect:

  • TCP listening ports
  • UDP bound endpoints
  • Local address and port
  • Owning process ID
  • Process name and path when available
  • Service names associated with the owning process when available

Snapshot Storage

Snapshots are stored as JSON files in snapshots/.

Snapshot names may contain only:

  • Letters
  • Numbers
  • Dashes
  • Underscores

Project Direction

WinSnap is being built toward local Windows security change analysis: capture system state before and after an event, then inspect what changed.

Planned future collectors may include:

  • Defender settings Filtering

By default, winsnap diff reduces routine process churn to keep output readable. Use --all to see every change.

WinSnap never deletes evidence; filtered items remain in the diff internally.

Default filtering also deprioritizes:

  • Ephemeral localhost listeners without service association or matching new inbound firewall rules
  • Trusted signed Microsoft-only binary content changes (evidence preserved and visible with --all)

Permissions

Some collectors may require elevated privileges to return complete data (e.g., firewall rules). WinSnap records collector status; diffs skip categories that failed to collect.

Schema

Snapshots include a schema version and collector status. See docs/SCHEMA.md for details.

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

winsnap-1.0.2.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

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

winsnap-1.0.2-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

Details for the file winsnap-1.0.2.tar.gz.

File metadata

  • Download URL: winsnap-1.0.2.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for winsnap-1.0.2.tar.gz
Algorithm Hash digest
SHA256 9cc63a684e1955073ee87caf77d8b6009420ef7502684e6e1a936f6d3e6f774a
MD5 ca27f52fe81e4ccc91478791c9882355
BLAKE2b-256 82f9ca99a21adfd0e2034a79fc924f864ae68d184fdcab4d83fea2611c86c4d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for winsnap-1.0.2.tar.gz:

Publisher: publish.yml on jide0x/WinSnap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file winsnap-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: winsnap-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 44.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for winsnap-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f85d6f2600583feeea3de720b694525509824f53914ea4980a5b855a0dff78eb
MD5 f3a4963cfcecfff33c74ff6aa3409e9c
BLAKE2b-256 372ee7aa8c1012f3b14a4b548404f4af1138cd5dfe100162ca17413021bb4eec

See more details on using hashes here.

Provenance

The following attestation bundles were made for winsnap-1.0.2-py3-none-any.whl:

Publisher: publish.yml on jide0x/WinSnap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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