Skip to main content

Regipy is a python library for parsing offline registry hives!

Requires Python 3.9 or higher.

Features:

  • Use as a library

  • Recurse over the registry hive, from root or a given path and get all subkeys and values

  • Read specific subkeys and values

  • Apply transaction logs on a registry hive

  • Command Line Tools:
    • Dump an entire registry hive to json

    • Apply transaction logs on a registry hive

    • Compare registry hives

    • Execute plugins from a robust plugin system (i.e: amcache, shimcache, extract computer name…)

Project page:

https://github.com/mkorman90/regipy

Using as a library:

from regipy.registry import RegistryHive
reg = RegistryHive('/Users/martinkorman/Documents/TestEvidence/Registry/Vibranium-NTUSER.DAT')

# Iterate over a registry hive recursively:
for entry in reg.recurse_subkeys(as_json=True):
    print(entry)

# Iterate over a key and get all subkeys and their modification time:
for sk in reg.get_key('Software').get_subkeys():
    print(sk.name, convert_wintime(sk.header.last_modified).isoformat())

# Get values from a specific registry key:
reg.get_key('Software\Microsoft\Internet Explorer\BrowserEmulation').get_values(as_json=True)

# Use plugins:
from regipy.plugins.ntuser.ntuser_persistence import NTUserPersistencePlugin
NTUserPersistencePlugin(reg, as_json=True).run()

# Run all validated plugins on a registry hive:
run_relevant_plugins(reg, as_json=True)

# Include unvalidated plugins (may return incomplete/inaccurate data):
run_relevant_plugins(reg, as_json=True, include_unvalidated=True)

Install

Install regipy and the command line tools dependencies:

pip install regipy[cli]

NOTE: using pip with regipy[cli] instead of the plain regipy is a significant change from version 1.9.x

For using regipy as a library, install only regipy which comes with fewer dependencies:

pip install regipy

Rust-accelerated backend (alpha)

An optional Rust implementation of the core parser is available as an opt-in backend. It is a drop-in replacement validated 1:1 against the pure-Python parser (every key path, timestamp, value and plugin output over the whole test corpus, with matching SHA-256 traversal digests) and is dramatically faster on value-dense hives — a full traversal of a SOFTWARE hive drops from over 12 minutes to under a third of a second (~2,500x), and Windows 10 SYSTEM hives speed up by ~1,000x:

pip install regipy[rust]

from regipy.registry_rs import RegistryHive  # instead of regipy.registry

reg = RegistryHive('/tmp/NTUSER.dat')
# Same API: get_key, iter_values, recurse_subkeys, plugins, ...

See regipy-rs/README.md and regipy-rs/BENCHMARKS.md for details.

Plugin Validation

Regipy plugins are validated using test cases to ensure they return accurate data. By default, only validated plugins are executed when using run_relevant_plugins() or the CLI tools.

To include unvalidated plugins (which may return incomplete or inaccurate data):

# As a library:
run_relevant_plugins(reg, as_json=True, include_unvalidated=True)
# CLI:
regipy-plugins-run /path/to/hive -o output.json --include-unvalidated

Unvalidated plugins will log a warning when executed. Use them at your own discretion.

Available Plugins

NTUSER Plugins:

  • user_assist - Parses User Assist execution history

  • typed_urls - Retrieves typed URLs from IE history

  • typed_paths - Retrieves typed file paths

  • ntuser_persistence - Retrieves persistence entries (Run, RunOnce, etc.)

  • shellbag_plugin - Parses Shellbag items

  • network_drives_plugin - Retrieves mapped network drives

  • terminal_services_history - Parses RDP/Terminal Server client data

  • winrar_plugin - Parses WinRAR archive history

  • winscp_saved_sessions - Retrieves WinSCP saved sessions

  • word_wheel_query - Parses Windows Search word wheel query

  • wsl - Gets WSL distribution information

  • installed_programs_ntuser - Retrieves installed programs

  • ntuser_classes_installer - Parses class installer information

  • recentdocs - Parses recently opened documents

  • comdlg32 - Parses Open/Save dialog MRU lists

  • runmru - Parses Run dialog MRU list

  • muicache - Parses MUI Cache (application display names)

  • appkeys - Parses application keyboard shortcuts

  • sysinternals - Parses Sysinternals tools EULA acceptance

  • putty - Parses PuTTY sessions and SSH host keys

SOFTWARE Plugins:

  • installed_programs_software - Retrieves installed programs

  • profilelist_plugin - Parses user profile information

  • uac_plugin - Gets User Access Control settings

  • winver_plugin - Gets OS version information

  • last_logon_plugin - Gets last logon information

  • image_file_execution_options - Retrieves IFEO entries

  • print_demon_plugin - Gets installed printer ports

  • ras_tracing - Gets tracing/debugging configuration

  • disablesr_plugin - Gets system restore disable status

  • spp_clients_plugin - Determines volumes monitored by VSS

  • susclient_plugin - Extracts Windows Update client info

  • software_classes_installer - Parses class installer information

  • software_plugin - Retrieves persistence entries

  • app_paths - Parses application paths registry entries

  • appinit_dlls - Parses AppInit_DLLs persistence entries

  • appcert_dlls - Parses AppCertDLLs persistence entries

  • appcompat_flags - Parses application compatibility flags

  • windows_defender - Parses Windows Defender configuration

  • powershell_logging - Parses PowerShell logging configuration

  • execution_policy - Parses PowerShell execution policies

  • networklist - Parses network connection history

SYSTEM Plugins:

  • shimcache - Parses Shimcache/AppCompatCache

  • services - Enumerates services and parameters

  • usbstor_plugin - Parses connected USB storage devices

  • background_activity_moderator - Gets BAM execution data

  • network_data - Gets network interface configuration

  • routes - Gets network routes

  • computer_name - Gets the computer name

  • timezone_data / timezone_data2 - Gets timezone configuration

  • safeboot_configuration - Gets safeboot configuration

  • active_control_set - Gets the active control set

  • backuprestore_plugin - Gets backup/restore exclusion entries

  • processor_architecture - Gets processor architecture info

  • previous_winver_plugin - Gets previous Windows version info

  • codepage - Gets system codepage information

  • host_domain_name - Gets host and domain name

  • crash_dump - Gets crash control information

  • diag_sr - Gets diagnostic system restore information

  • disable_last_access - Gets LastAccessTime disable status

  • wdigest - Gets WDIGEST authentication configuration

  • bootkey - Extracts the Windows boot key

  • shutdown - Gets shutdown time data

  • usb_devices - Parses USB device connection history

  • mounted_devices - Parses mounted device information

  • shares - Parses network share configuration

  • pagefile - Parses pagefile configuration

  • lsa_packages - Parses LSA security packages

  • pending_file_rename - Parses pending file rename operations

SAM Plugins:

  • local_sid - Extracts the machine local SID

  • samparse - Parses user accounts from SAM hive

SECURITY Plugins:

  • domain_sid - Extracts domain name and SID

AMCACHE Plugins:

  • amcache - Parses Amcache application execution history

BCD Plugins:

  • boot_entry_list - Lists Windows BCD boot entries

USRCLASS Plugins:

  • usrclass_shellbag_plugin - Parses USRCLASS Shellbag items

Download files

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

Source Distribution

regipy-6.3.0.tar.gz (107.6 kB view details)

Uploaded Source

Built Distribution

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

regipy-6.3.0-py3-none-any.whl (139.0 kB view details)

Uploaded Python 3

File details

Details for the file regipy-6.3.0.tar.gz.

File metadata

  • Download URL: regipy-6.3.0.tar.gz
  • Upload date:
  • Size: 107.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for regipy-6.3.0.tar.gz
Algorithm Hash digest
SHA256 9c23f1f0b13680b79104fad4367fad63d8c44935a8a8658baec3e52f39e1ad47
MD5 d0b11e3d73ff0af24eadf35529d31059
BLAKE2b-256 25a29427da67acc61b39cda35be4cc788a9c99e27622b514e1c6ba87a90adb84

See more details on using hashes here.

File details

Details for the file regipy-6.3.0-py3-none-any.whl.

File metadata

  • Download URL: regipy-6.3.0-py3-none-any.whl
  • Upload date:
  • Size: 139.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for regipy-6.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1387aff68a8f7f4786460ab421d8bedc16df3b6a47e485c24d1ef38512289aeb
MD5 15556ce815b1cb5cc7796a0d47a47f1e
BLAKE2b-256 bea9eb79898a037c2082317a45c4f41959a9e08e8c6456a506cadba483805405

See more details on using hashes here.

Release history Release notifications | RSS feed

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