forked from williballenthin/python-registry
-
Notifications
You must be signed in to change notification settings - Fork 0
Read access to Windows Registry files.
License
jallmantalbot/python-registry
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
python-registry
===============
Introduction
------------
python-registry was originally written by Willi Ballenthin,
a forensicator at Mandiant who wanted to access the contents of the
Windows Registry from his Linux laptop. python-registry
currently provides read-only access to Windows Registry files,
such as NTUSER.DAT, userdiff, and SAM. The interface is two-fold:
a high-level interface suitable for most tasks, and a low level
set of parsing objects and methods which may be used for advanced
study of the Windows Registry. python-registry is written in pure
Python, making it portable across all major platforms.
Usage
-----
Most users will find the Registry.Registry module most appropriate.
The module exposes three classes: the Registry, the RegistryKey,
and the RegistryValue. The Registry organizes parsing and access
to the Windows Registry file. The RegistryKey is a convenient
interface into the tree-like structure of the Windows Registry.
A RegistryKey may have children RegistryKeys, and may also have
values associated with it. A RegistryValue can be thought of as
the tuple (name, datatype, value) associated with a RegistryKey.
python-registry supports all major datatypes, such as RegSZ,
RegDWord, and RegBin.
To open a Windows Registry file, its this easy:
import sys
from Registry import Registry
reg = Registry.Registry(sys.argv[1])
Print all keys in a Registry
def rec(key, depth=0):
print "\t" * depth + key.path()
for subkey in key.subkeys():
rec(subkey, depth + 1)
rec(reg.root())
Find a key and print all string values
try:
key = reg.open("SOFTWARE\\Microsoft\\Windows\\Current Version\\Run")
except Registry.RegistryKeyNotFoundException:
print "Couldn't find Run key. Exiting..."
sys.exit(-1)
for value in [v for v key.values() \
if v.value_type() == Registry.RegSZ or \
v.value_type() == Registry.RegExpandSZ]:
print "%s: %s" % (value.name(), value.value())
Advanced users who wish to study the structure of the Windows
Registry may find the Registry.RegistryParse module useful.
This module implements all known structures of the Windows Registry.
Testing
-------
python-registry was developed using Python 2.6.5 on
Ubuntu Linux. More importantly, the package was tested against
a small set of Windows XP SP3 Registry files acquired from
one of the author's virtual machines. The script
testing/RegTester.py will parse the .reg files exported by
Microsoft Regedit and compare the values parsed by
python-registry. This tool can be used to identify
regressions and deficiencies in the development of
python-registry.
Wanted
------
*) Bug reports.
*) Feedback.
python-registry was originally developed to scratch one of
the author's itches. Now he hopes it can be of use to
someone outside of his lonely NYC apartment.
License
-------
As of version 0.2.0, python-registry is released under the Apache 2.0 license.
Before that, python-registry was released under the GPLv3.
Sources
-------
Nearly all structure definitions used in python-registry
came from one of two sources:
1) WinReg.txt, by B.H., which may be accessed at:
http://pogostick.net/~pnh/ntpasswd/WinReg.txt
2) The Windows NT Registry File Format version 0.4, by
Timothy D. Morgan, which may be accessed at:
https://docs.google.com/viewer?url=http%3A%2F%2Fsentinelchicken.com%2Fdata%2FTheWindowsNTRegistryFileFormat.pdf
Copies of these resources are included in the
documentation/ directory of the python-registry source.
The source directory for python-registry contains a sample/
subdirectory that contains small programs that use python-registry.
For example, regview.py is a read-only clone of Microsoft Window's
Regedit, implemented in a few hundred lines.
About
Read access to Windows Registry files.
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- Python 100.0%