From 6ad45eaaf7d266fe655811fb61cd1b1665a97d4a Mon Sep 17 00:00:00 2001 From: msuhanov Date: Tue, 4 Jul 2017 01:57:36 +0300 Subject: [PATCH] Initial release (beta). --- ChangeLog | 3 + Example | 78 + License | 674 +++++++++ ReadMe | 33 + .../BadBaseBlockHive/BadBaseBlockHive | Bin 0 -> 524288 bytes .../BadBaseBlockHive/BadBaseBlockHive.LOG1 | Bin 0 -> 33792 bytes .../BadBaseBlockHive/BadBaseBlockHive.LOG2 | 0 hives_for_tests/BadListHive | Bin 0 -> 262144 bytes hives_for_tests/BadLogHive1/BadLogHive | Bin 0 -> 524288 bytes hives_for_tests/BadLogHive1/BadLogHive.LOG1 | Bin 0 -> 33792 bytes hives_for_tests/BadLogHive1/BadLogHive.LOG2 | 0 hives_for_tests/BadLogHive2/BadLogHive | Bin 0 -> 524288 bytes hives_for_tests/BadLogHive2/BadLogHive.LOG1 | Bin 0 -> 33792 bytes hives_for_tests/BadLogHive2/BadLogHive.LOG2 | 0 hives_for_tests/BadLogHive3/BadLogHive | Bin 0 -> 262144 bytes hives_for_tests/BadLogHive3/BadLogHive.LOG1 | Bin 0 -> 24576 bytes hives_for_tests/BadLogHive3/BadLogHive.LOG2 | Bin 0 -> 65536 bytes hives_for_tests/BadSubkeyHive | Bin 0 -> 262144 bytes hives_for_tests/BigDataHive | Bin 0 -> 262144 bytes hives_for_tests/BogusKeyNamesHive | Bin 0 -> 262144 bytes hives_for_tests/Carving/0 | Bin 0 -> 262144 bytes hives_for_tests/Carving/512 | Bin 0 -> 263168 bytes hives_for_tests/CompHive | Bin 0 -> 262144 bytes hives_for_tests/DeletedDataHive | Bin 0 -> 262144 bytes hives_for_tests/DeletedTreeHive | Bin 0 -> 262144 bytes hives_for_tests/DeletedTreeNoRootFlagHive | Bin 0 -> 262144 bytes hives_for_tests/DeletedTreePartialPathHive | Bin 0 -> 262144 bytes hives_for_tests/Discovery/1/aa | 0 hives_for_tests/Discovery/1/aa.LOG | 0 hives_for_tests/Discovery/1/aa.LOG1 | 0 hives_for_tests/Discovery/1/aa.LOG2 | 0 hives_for_tests/Discovery/2/AA | 0 hives_for_tests/Discovery/2/aa.LOG1 | 0 hives_for_tests/Discovery/2/aa.LOG2 | 0 hives_for_tests/Discovery/3/AA | 0 hives_for_tests/Discovery/3/aa.log | 0 hives_for_tests/Discovery/3/aa.log1 | 0 hives_for_tests/Discovery/4/AA | 0 hives_for_tests/Discovery/4/aa.LOG | 0 hives_for_tests/Discovery/4/aa.log1 | 0 hives_for_tests/Discovery/4/aa.log2 | 0 hives_for_tests/Discovery/5/aa | 0 hives_for_tests/DuplicateSubkeysHive | Bin 0 -> 524288 bytes hives_for_tests/EffectiveSizeHive | Bin 0 -> 524288 bytes hives_for_tests/EmptyHive | Bin 0 -> 262144 bytes hives_for_tests/ExtendedASCIIHive | Bin 0 -> 262144 bytes hives_for_tests/GarbageHive | Bin 0 -> 262151 bytes hives_for_tests/HealedHive | Bin 0 -> 262144 bytes hives_for_tests/InvalidParentHive | Bin 0 -> 524288 bytes hives_for_tests/ManySubkeysHive | Bin 0 -> 524288 bytes hives_for_tests/MultiSzHive | Bin 0 -> 262144 bytes hives_for_tests/NewDirtyHive1/NewDirtyHive | Bin 0 -> 262144 bytes .../NewDirtyHive1/NewDirtyHive.LOG1 | Bin 0 -> 24576 bytes .../NewDirtyHive1/NewDirtyHive.LOG2 | Bin 0 -> 65536 bytes .../NewDirtyHive1/RecoveredHive_Windows10 | Bin 0 -> 262144 bytes hives_for_tests/NewDirtyHive2/NewDirtyHive | Bin 0 -> 262144 bytes .../NewDirtyHive2/NewDirtyHive.LOG1 | Bin 0 -> 24576 bytes .../NewDirtyHive2/NewDirtyHive.LOG2 | Bin 0 -> 65536 bytes hives_for_tests/NewFlagsHive | Bin 0 -> 262144 bytes hives_for_tests/OldDirtyHive/OldDirtyHive | Bin 0 -> 524288 bytes .../OldDirtyHive/OldDirtyHive.LOG1 | Bin 0 -> 33792 bytes .../OldDirtyHive/OldDirtyHive.LOG2 | 0 .../OldDirtyHive/RecoveredHive_Windows7 | Bin 0 -> 524288 bytes hives_for_tests/RemnantsHive | Bin 0 -> 262144 bytes hives_for_tests/SlackHive | Bin 0 -> 524288 bytes hives_for_tests/StringValuesHive | Bin 0 -> 262144 bytes hives_for_tests/TruncatedHive | Bin 0 -> 12288 bytes hives_for_tests/TruncatedNameHive | Bin 0 -> 262144 bytes hives_for_tests/UnicodeHive | Bin 0 -> 262144 bytes hives_for_tests/WrongOrderHive | Bin 0 -> 262144 bytes records_for_tests/dummy_db | Bin 0 -> 12 bytes records_for_tests/dummy_lf | Bin 0 -> 32 bytes records_for_tests/dummy_lh | Bin 0 -> 32 bytes records_for_tests/dummy_li | Bin 0 -> 20 bytes records_for_tests/dummy_list | Bin 0 -> 16 bytes records_for_tests/dummy_nk | Bin 0 -> 92 bytes records_for_tests/dummy_ri | Bin 0 -> 20 bytes records_for_tests/dummy_sk | Bin 0 -> 284 bytes records_for_tests/dummy_vk | Bin 0 -> 27 bytes setup.py | 19 + test_cases.py | 1021 +++++++++++++ yarp-carver | 81 ++ yarp-print | 304 ++++ yarp-timeline | 155 ++ yarp/Registry.py | 858 +++++++++++ yarp/RegistryCarve.py | 188 +++ yarp/RegistryFile.py | 1290 +++++++++++++++++ yarp/RegistryHelpers.py | 105 ++ yarp/RegistryRecords.py | 524 +++++++ yarp/RegistryRecover.py | 143 ++ yarp/__init__.py | 5 + 91 files changed, 5481 insertions(+) create mode 100644 ChangeLog create mode 100644 Example create mode 100644 License create mode 100644 ReadMe create mode 100644 hives_for_tests/BadBaseBlockHive/BadBaseBlockHive create mode 100644 hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG1 create mode 100644 hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG2 create mode 100644 hives_for_tests/BadListHive create mode 100644 hives_for_tests/BadLogHive1/BadLogHive create mode 100644 hives_for_tests/BadLogHive1/BadLogHive.LOG1 create mode 100644 hives_for_tests/BadLogHive1/BadLogHive.LOG2 create mode 100644 hives_for_tests/BadLogHive2/BadLogHive create mode 100644 hives_for_tests/BadLogHive2/BadLogHive.LOG1 create mode 100644 hives_for_tests/BadLogHive2/BadLogHive.LOG2 create mode 100644 hives_for_tests/BadLogHive3/BadLogHive create mode 100644 hives_for_tests/BadLogHive3/BadLogHive.LOG1 create mode 100644 hives_for_tests/BadLogHive3/BadLogHive.LOG2 create mode 100644 hives_for_tests/BadSubkeyHive create mode 100644 hives_for_tests/BigDataHive create mode 100644 hives_for_tests/BogusKeyNamesHive create mode 100644 hives_for_tests/Carving/0 create mode 100644 hives_for_tests/Carving/512 create mode 100644 hives_for_tests/CompHive create mode 100644 hives_for_tests/DeletedDataHive create mode 100644 hives_for_tests/DeletedTreeHive create mode 100644 hives_for_tests/DeletedTreeNoRootFlagHive create mode 100644 hives_for_tests/DeletedTreePartialPathHive create mode 100644 hives_for_tests/Discovery/1/aa create mode 100644 hives_for_tests/Discovery/1/aa.LOG create mode 100644 hives_for_tests/Discovery/1/aa.LOG1 create mode 100644 hives_for_tests/Discovery/1/aa.LOG2 create mode 100644 hives_for_tests/Discovery/2/AA create mode 100644 hives_for_tests/Discovery/2/aa.LOG1 create mode 100644 hives_for_tests/Discovery/2/aa.LOG2 create mode 100644 hives_for_tests/Discovery/3/AA create mode 100644 hives_for_tests/Discovery/3/aa.log create mode 100644 hives_for_tests/Discovery/3/aa.log1 create mode 100644 hives_for_tests/Discovery/4/AA create mode 100644 hives_for_tests/Discovery/4/aa.LOG create mode 100644 hives_for_tests/Discovery/4/aa.log1 create mode 100644 hives_for_tests/Discovery/4/aa.log2 create mode 100644 hives_for_tests/Discovery/5/aa create mode 100644 hives_for_tests/DuplicateSubkeysHive create mode 100644 hives_for_tests/EffectiveSizeHive create mode 100644 hives_for_tests/EmptyHive create mode 100644 hives_for_tests/ExtendedASCIIHive create mode 100644 hives_for_tests/GarbageHive create mode 100644 hives_for_tests/HealedHive create mode 100644 hives_for_tests/InvalidParentHive create mode 100644 hives_for_tests/ManySubkeysHive create mode 100644 hives_for_tests/MultiSzHive create mode 100644 hives_for_tests/NewDirtyHive1/NewDirtyHive create mode 100644 hives_for_tests/NewDirtyHive1/NewDirtyHive.LOG1 create mode 100644 hives_for_tests/NewDirtyHive1/NewDirtyHive.LOG2 create mode 100644 hives_for_tests/NewDirtyHive1/RecoveredHive_Windows10 create mode 100644 hives_for_tests/NewDirtyHive2/NewDirtyHive create mode 100644 hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG1 create mode 100644 hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG2 create mode 100644 hives_for_tests/NewFlagsHive create mode 100644 hives_for_tests/OldDirtyHive/OldDirtyHive create mode 100644 hives_for_tests/OldDirtyHive/OldDirtyHive.LOG1 create mode 100644 hives_for_tests/OldDirtyHive/OldDirtyHive.LOG2 create mode 100644 hives_for_tests/OldDirtyHive/RecoveredHive_Windows7 create mode 100644 hives_for_tests/RemnantsHive create mode 100644 hives_for_tests/SlackHive create mode 100644 hives_for_tests/StringValuesHive create mode 100644 hives_for_tests/TruncatedHive create mode 100644 hives_for_tests/TruncatedNameHive create mode 100644 hives_for_tests/UnicodeHive create mode 100644 hives_for_tests/WrongOrderHive create mode 100644 records_for_tests/dummy_db create mode 100644 records_for_tests/dummy_lf create mode 100644 records_for_tests/dummy_lh create mode 100644 records_for_tests/dummy_li create mode 100644 records_for_tests/dummy_list create mode 100644 records_for_tests/dummy_nk create mode 100644 records_for_tests/dummy_ri create mode 100644 records_for_tests/dummy_sk create mode 100644 records_for_tests/dummy_vk create mode 100644 setup.py create mode 100644 test_cases.py create mode 100755 yarp-carver create mode 100755 yarp-print create mode 100755 yarp-timeline create mode 100644 yarp/Registry.py create mode 100644 yarp/RegistryCarve.py create mode 100644 yarp/RegistryFile.py create mode 100644 yarp/RegistryHelpers.py create mode 100644 yarp/RegistryRecords.py create mode 100644 yarp/RegistryRecover.py create mode 100644 yarp/__init__.py diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..5eadd86 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,3 @@ +Version: 1.0.0-beta1 + +Initial release (beta). diff --git a/Example b/Example new file mode 100644 index 0000000..c79ee67 --- /dev/null +++ b/Example @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +from yarp import * + +# A primary file is specified here. +primary_path = '<...>/SYSTEM' + +# Discover transaction log files to be used to recover the primary file, if required. +transaction_logs = RegistryHelpers.DiscoverLogFiles(primary_path) + +# Open the primary file and each transaction log file discovered. +primary_file = open(primary_path, 'rb') + +if transaction_logs.log_path is not None: + log_file = open(transaction_logs.log_path, 'rb') +else: + log_file = None + +if transaction_logs.log1_path is not None: + log1_file = open(transaction_logs.log1_path, 'rb') +else: + log1_file = None + +if transaction_logs.log2_path is not None: + log2_file = open(transaction_logs.log2_path, 'rb') +else: + log2_file = None + +# Open the hive and recover it, if required. +hive = Registry.RegistryHive(primary_file) +recovery_result = hive.recover_auto(log_file, log1_file, log2_file) +if recovery_result.recovered: + print('The hive has been recovered') + +# Print basic information about the hive. +print('Last written timestamp: {}'.format(hive.last_written_timestamp())) +print('Last reorganized timestamp: {}'.format(hive.last_reorganized_timestamp())) + +# Find an existing key. +key = hive.find_key('controlset001\\services') +print('Found a key: {}'.format(key.path())) + +# Print information about its subkeys. +for sk in key.subkeys(): + print(sk) + +# Pick an existing subkey. +key = key.subkey('exfat') + +# Print information about it. +print('Found a subkey: {}'.format(key.name())) +print('Last written timestamp: {}'.format(key.last_written_timestamp())) + +# Print information about its values. +for v in key.values(): + print(v) + +# Pick an existing value. +v = key.value('description') + +# Print more information about this value. +print('Some information about a specific value:') +print('Value name is \'{}\''.format(v.name())) +print('Value type is {} as a string (or {} as an integer)'.format(v.type_str(), v.type_raw())) +print('Value data is:') +print(v.data()) +print('The same data as raw bytes:') +print(v.data_raw()) + +# Close everything. +hive = None +primary_file.close() +if log_file is not None: + log_file.close() +if log1_file is not None: + log1_file.close() +if log2_file is not None: + log2_file.close() diff --git a/License b/License new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/License @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/ReadMe b/ReadMe new file mode 100644 index 0000000..a506dcc --- /dev/null +++ b/ReadMe @@ -0,0 +1,33 @@ +yarp: yet another registry parser + +1. Project goals: the library and tools + +- Parse Windows registry files in a proper way (with forensics in mind). +- Expose values of all fields of underlying registry structures. +- Support for truncated registry files. +- Support for recovering deleted keys and values. +- Support for carving of registry hives. +- Support for transaction log files. + +2. Hive version numbers supported + +- Full support: 1.1-1.6. +- No support: 1.0. + +In general, full support is available for hive files from installations of +Windows NT 3.1 and later versions of Windows NT (including Windows 10); +hive files from installations of pre-release versions of Windows NT 3.1 are +not supported. + +3. Documentation + +See the docstrings in the module. +For a basic usage example, see the 'Example' file. + +4. License + +This project is made available under the terms of the GNU GPL, version 3. +See the 'License' file. + +--- +(c) Maxim Suhanov diff --git a/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive b/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive new file mode 100644 index 0000000000000000000000000000000000000000..40e4f34e4af075786e16c3ae61106ec18217cef0 GIT binary patch literal 524288 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 X^uVGA7Co@&fkh82df@-xJ@EekLv09( literal 0 HcmV?d00001 diff --git a/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG1 b/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG1 new file mode 100644 index 0000000000000000000000000000000000000000..a68ef6f2f024ba800b2c76a8d4d64188de0b5203 GIT binary patch literal 33792 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG2 b/hives_for_tests/BadBaseBlockHive/BadBaseBlockHive.LOG2 new file mode 100644 index 0000000..e69de29 diff --git a/hives_for_tests/BadListHive b/hives_for_tests/BadListHive new file mode 100644 index 0000000000000000000000000000000000000000..f32bf61602f514d540e0ce8687e9490388ff1127 GIT binary patch literal 262144 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/BadLogHive1/BadLogHive.LOG2 b/hives_for_tests/BadLogHive1/BadLogHive.LOG2 new file mode 100644 index 0000000..e69de29 diff --git a/hives_for_tests/BadLogHive2/BadLogHive b/hives_for_tests/BadLogHive2/BadLogHive new file mode 100644 index 0000000000000000000000000000000000000000..1c3745f6a63bdcaeff475eaccf6f2689a342d6de GIT binary patch literal 524288 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 S1W14cNPq-LfCT;#0$%}7*a}tv literal 0 HcmV?d00001 diff --git a/hives_for_tests/BadLogHive3/BadLogHive.LOG2 b/hives_for_tests/BadLogHive3/BadLogHive.LOG2 new file mode 100644 index 0000000000000000000000000000000000000000..d0dd6406ff39dea56d97dd70a70a8f80132e68d6 GIT binary patch literal 65536 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 z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ gfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5EvBr6Q=`0t^fc4 literal 0 HcmV?d00001 diff --git a/hives_for_tests/BigDataHive b/hives_for_tests/BigDataHive new file mode 100644 index 0000000000000000000000000000000000000000..7b0df9da101840485d31767c5ce6b966f32f873a GIT binary patch literal 262144 zcmeI(&ud&o902fn+eW=;gS6m5^qo8z-Gr2+2gy>32wr*-g$gCx-6YG}7}6zDMDXZM zFP0wr2lTLb(UbJ3AP9QVlRfsh;IW7GJM%UXO(;?fDdjUT@6C7K{Myg%B`cKhyqufZX%NbUNK0zMdYw|3Y~;ko)dE+q@UZ?K|;;AcjnHJKt~5?se|? zS9vYsPnR$Bd;OJ_jfLgzQe4h=R~NdA8>K_m(!^dy_D9{nN;P$@d~4kOI_M$oBsSVBl=$~x0lm}m{~Ow z=l0)sT)t8rnqM^!=g!5vFDHLqx%Kl;ul)MP_iyHX?!-B_hxI>v>au=w$tJnvV|3!O z@3TK7_rJB)94vnY!~V^ypA1G@SG$AF-uh^L5_3P=s!}J0y!-9VKORK97cRfArSwDe zHOEgWkLz_?>9=O764&kc{5#D~&&6#V&+eD`RoQbsHqZ0(l)YxyY@KIjZq4|59P3P? zwyRh#YAjSwnvL?l5vEy~#?Q|daw9;1009C72oNAZfB=CfN}&AxKOaY`k3QD@SC8)3 zOMn0Y0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PDAi0_Fez?Kn^8=rh&#rqe}* z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5I8o0obg}s|97I%$mfjZ009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0Rja6M}d<6KaK@EM=zT5|Cba31PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ;MfFm#(&BGpG2dRqr*l1 z|FQ8~m;eC+1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72o!;w?O*c$+m-x(zX<{a2oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Fl_u z0tfm3JM#Ze=qs=-0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&USUSl6AItyub09!~009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0Rkr_aFG8$`49R3d9Xr&009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly TK!5-N0t5&UAV7e?Q!Vfp=+t3A literal 0 HcmV?d00001 diff --git a/hives_for_tests/BogusKeyNamesHive b/hives_for_tests/BogusKeyNamesHive new file mode 100644 index 0000000000000000000000000000000000000000..8bbc0eb668d667c2f45fa6a9e7f7e3b7486ef82f GIT binary patch literal 262144 zcmeI$J!_O%6ae5e(NXaOKTxp{84%QBqb3HORJvjj5X44U&}Kp=DoI93Mny!lw9`st z*@ayz3lXt&Su0CHP*}u9tZW5;Ks@)IjJN?oP{HE4aC6T+_v2iisq)UYPfsq1h|*X8 z`QXj??=Nb#g?SE9;zkM9_2R>EBF5rW9Eop>Spv-T~&(C+Jeu?{I2Va$M10^@MJYt{( z+3sbKTjon##ybn+=8{;{cI5oZ_~gXi(ed{1;K=Y$b8uv0q&e7Zw_1byTl-qW`-k?8 zjtoy+jrc9^nwyF!_my70Pu$90i>22ma_nX=ZDaO9)hHfp`c)f>6isN#*i zeD(UMZ^(Sa))>u`wQ_MpyFn3UF!`#zs-`4q0q=vezw<7oSGWBX7qU4EA7$yyxBx0kiQ@~%?v*1xm= z^?#2>Z)^3pD)yE2R^^Fqd#>AQUs|)WQ@+kb?8^Rmy)D&z;8XpF`Hpht-oiT${e9r| zx4vUV)~McbA*R1n?^V{Do*amN{bt&iGyO5IsM_8&{m4jw009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs S0RjXF5FkK+009C&Qs5(kJj?t5 literal 0 HcmV?d00001 diff --git a/hives_for_tests/Carving/0 b/hives_for_tests/Carving/0 new file mode 100644 index 0000000000000000000000000000000000000000..a95c18938af2d5393a3424e8c3da9ab1d6bae842 GIT binary patch literal 262144 zcmeI$L2F!96ae7!>I)VTTBSmfqJx5Nj5h5A8U>9-FesEP47R2VO=rfIX~vQSMMQAf zoi0>dcIh&|z?Fi6Am|@(A?QxQRdEr|naP71-H1g5zYF)Bd+)pNp8LKxo4H%V*GG3m zMAf4=Z(jWQqi>sLzn>wh-K)mYS$i$EV;Ea`y%=X>Emkrsn0W zN?gj3LEc@-_L~_a#!sJk^0(&4dp=w~9FMMke&k@kQe8bTXKQn3v&NO%D{y^%bL;l5 zXf*-^2oNAZfB*pk1PBoLuL@k=xH6gUE&tzlr8@_x{`I}Ry~+5o*nQ}$m+EYw##Zi} zods0;%R>=4Wv|*5KiQARYT!V5B>V3ShJ)c~;pAZc^vTg^zQ4G!IKMRL_vbfGk6t^~ zUm9K-^q1a^IG<~6k0Wkm#;TS0gRD)o?+r5UWUW$p4#n#9{37CbJQGKv$vtJ6>*b|4 zZ6BMBPj?@4_txDw5li`GQwJY8cWxRYR@a+9J>Sf3&fS-D-v8y-^^d>#`ho8r|Llp% z^JgRKH)WmYWU%kVPe91|Ezgt~;IcN3>BF?0H=TNb8`K#Z}-TB;u?Q(mj zJ=HF@XWQ)7anv93{gi7|{?5LOpXPY& literal 0 HcmV?d00001 diff --git a/hives_for_tests/Carving/512 b/hives_for_tests/Carving/512 new file mode 100644 index 0000000000000000000000000000000000000000..a0a7ee5d3d296cae9ffa45c85e03e300c39464d4 GIT binary patch literal 263168 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 zRimQv>UXPG#Df#V@uNHI{GQKN-N|&SJzf3D+f2If3`#I03dvx`0*Fzay-)0eC9_U7T0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk T1PBlyK!5-N0t5*BKLq{(j=|uN literal 0 HcmV?d00001 diff --git a/hives_for_tests/DeletedDataHive b/hives_for_tests/DeletedDataHive new file mode 100644 index 0000000000000000000000000000000000000000..1b2f48669fc51bf3a78fbcf5007a2ca651d26d20 GIT binary patch literal 262144 zcmeI$ziZrO7y$6+(jI21sZt?`=xN1fFtvC2VKQ07!AT;b2o~uzcd_NtC{0WS5jqwe z>?DE?x;Z%LKcFHGMFd3`M>icD3jP7{dA@fi5(hy#bojjFz4!O?KKJ?FlJAw_Yg8od9cNqpPS!X+?(fFAcsgE;XS01KhOrx?*o)WWjU0C;bK5z;mvxXk z`q}H}?n|+sGZCjwez^JFvET0b=;myk+W2E0~;d(bvb6?*z zeiu;vk7pus%R%+4{b16bsEI@6u^hiWSRQN*2b-&l!{J(Qad~THZE^XVi(~=YD)-`aC*K)bU3yH>Gm8k#VNaW4dKNJC$pd`s&@@Qq#Yc zr^b0U!+0y3X~vc3#T-93yxKXRZQXzN$@?Gruls+``zPr%zmGhcPblK<>SU?=msiFn zQ@_gNY$ktwQh&*DegDsMT)Cdfn02Q1R6Z4_%G$B=Yc;XUDgTl}nxqdUxR;@Cd zV}$?#0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs l0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0tEiQz+W-Dvp@g< literal 0 HcmV?d00001 diff --git a/hives_for_tests/DeletedTreeHive b/hives_for_tests/DeletedTreeHive new file mode 100644 index 0000000000000000000000000000000000000000..49417d681caf94fc4b4a01bb4f4b0ce982473a85 GIT binary patch literal 262144 zcmeI$&1+m$7zf~YY6go~8l}Z9iVPHL7mjv1Q$JRI(1jqBEEEJ?*hwZ@lE#t*wTKWm z;!ammsD*adg+kX|s0$GhQP4j^7X~Vd3peq+x%WUig;F647tev4bIyCuJ-<88%qC}b z^2Xv!MC5h(x#8bmUH!S!DdT&}l`Y4;9LzT3wRkO_kC)?x(w~Y+ti@8S$6Il}%m;04 zxzyLowGc1GYUw9s_1Sp4^bzkKxitU%zF!~s?7O}3$lN#kr{@`UVQS6lx%G2d*LGK6 z?)2dgc6Ud+5gIEHw9r2@IWy{y27@R2a}dw~y|Fc{dKn)8)xdbI{T4Zr36{KQ?pQ^PT2q_h4D`@y$P9{q(0F z9{%OAFCWjG^QE@3)Qin;=l-ZZv-R+#+)I;exqbH4C+E}czEU_nd8hZ{V)5hfS&Mi5=m7L7IUKZt=>HN$8 z9Q>>1=bGB`GiJ+q_ILWc`Phl}!J2oxynohe-s}4s-<^56rnbz;mh)!R{H^zQ_L(%fHgBWkWv%ATmbylO009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+0D;{Q F_!l%C80`Q6 literal 0 HcmV?d00001 diff --git a/hives_for_tests/DeletedTreeNoRootFlagHive b/hives_for_tests/DeletedTreeNoRootFlagHive new file mode 100644 index 0000000000000000000000000000000000000000..a165f0ac8ba47ace97b4886ef8845997df6a9b14 GIT binary patch literal 262144 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 S=z&EKEP7zk1ONZ-f&T|61q|E( literal 0 HcmV?d00001 diff --git a/hives_for_tests/EffectiveSizeHive b/hives_for_tests/EffectiveSizeHive new file mode 100644 index 0000000000000000000000000000000000000000..1f2f0219c0ae062a06eefaabf5ad131ca61578bf GIT binary patch literal 524288 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 X=z&EKEP7zk1B)J5^uYhWd*J^81ojH5 literal 0 HcmV?d00001 diff --git a/hives_for_tests/EmptyHive b/hives_for_tests/EmptyHive new file mode 100644 index 0000000000000000000000000000000000000000..83cb26a1f59bafc4ba3d38eba64b35402438b019 GIT binary patch literal 262144 zcmeI$F>4e-6ae72(ZfzfB3MYc%F5GdF2z-X7_dwu2(j_py(AnLr-ju z$m?!ioNw2&co4VaUffOdov30KbITok#P5z*yU(9izFzxyJ%8u$?Bbw_ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk l1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>eF^zW~$PQ)2)C literal 0 HcmV?d00001 diff --git a/hives_for_tests/ExtendedASCIIHive b/hives_for_tests/ExtendedASCIIHive new file mode 100644 index 0000000000000000000000000000000000000000..0da7d2fbc56aaab4759b8d8e3adf02482f3d2e1d GIT binary patch literal 262144 zcmeI$y^EAb7y$5R%`JCCf{7So5o8-plT&kddngDRBw!j51PN%fWbeO0e{aj@60?i@67OftDSLg(4UEj zDi7{F{(0`j6Znjrr7;Eued>-^VdgDj?cwsXMf+dyvTe@z>e|)Hi?=Iq{KER9 zx4WX%2oNAZfB*pk1PBlyK;Zu>aQV{8XmYmve?N`sJwWx>H#Rm#!_VW_Ym4i3H&D6L zvzvDT)o$&G$SE7uuKM9ty|)tE;$Ze~br$*y{r0gh=DY31#rdVBh4y@BvAs0^ZFjlb z?p#_vdUUyeJK~#MYjqe=>s85Z;(nG!%>2;JdM!)Eo-8}!?ACq7zBm!PqEVA0nyq}) z`D)fAKRJCgcULMtjbr&{WAmb;*_`AeX74uMc)zhZ*!(!>+&buXY9-V$vj6LrOK<7L2uOQjJqp? zct88EbKd0~s8Ug%;M(f8M9}QbE+xqF=^n0{w;#TDFB>3DsY zIzz?IEdSlVa4A}B(=7&mE4NR=cMM1&r_=|%C> zpCbJMf}nrGqu>vSGrOrELJvLa_h5GBz1f*1-z{&{+v?9nL>>pu z5gdN}sFJ_Zd{Qv*} literal 0 HcmV?d00001 diff --git a/hives_for_tests/HealedHive b/hives_for_tests/HealedHive new file mode 100644 index 0000000000000000000000000000000000000000..1dcde22598530a7d126cbf92d4e22a9e37a1432d GIT binary patch literal 262144 zcmeI$J&0UY6ae5myBS^lA&IQ8g~)*T2aY<n<6Lb~;wH#@ovQJXD9z60mId+)n{@0)$a-i_hO zwHrz)nb(dTd-KQb?`pLu&qrotxsioKlk)NMOxY~MvJuzg<%y`R#{J1?*({^7RbD7( zquz>KjkaDH$8`|p)8$;0O4&Yp{+C~G`RVXG&4qIB(Jv0p)^n*3XZmcM**cT$Vt)lL z|NQ%_`#YoA2oNAZfB*pk1PBlyK;XYBaO%YA^=fbN|NS(k=KxuMYiDO?ee^(iyV_UQBW)!&|f@A5Zy ze*fTS4`sirvCpmQ^kcH4rRbB(JUu+$c(ylwaoD)4l`dBz&yD8GP4VpU=#YIfTaUEk zTFQNq`7FmhHGDZnWovcpQpRhwYD_-+DCSuoHOktzw;r1Q9*wH!`bwr`Hj2m%BM5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Rja6mjZtP=b;@9 literal 0 HcmV?d00001 diff --git a/hives_for_tests/InvalidParentHive b/hives_for_tests/InvalidParentHive new file mode 100644 index 0000000000000000000000000000000000000000..e9618a676f097f31201b97f15e4a49ee52906eb5 GIT binary patch literal 524288 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/ManySubkeysHive b/hives_for_tests/ManySubkeysHive new file mode 100644 index 0000000000000000000000000000000000000000..321c21f60e9c7925dcac20b7a1cce0c2996df46a GIT binary patch literal 524288 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs e0RjXF5FkK+009C72oNAZfB*pk1PJ`E1^xv_rJTF~ literal 0 HcmV?d00001 diff --git a/hives_for_tests/NewDirtyHive1/NewDirtyHive b/hives_for_tests/NewDirtyHive1/NewDirtyHive new file mode 100644 index 0000000000000000000000000000000000000000..3c7c1cd795a17742cf8f262120c7d922b59d306c GIT binary patch literal 262144 zcmeI&O=w(2902gyxT{vgk76N+t!qU^G&M;#)F{{9xq zXzHcjHKmk+h$oh&PqaS#q0xwZ)@8_iJ2QLw`KfZK94`CHt8vZzzVdjahs#WvD+kLf zQ67o-Ow_#=E&HR#TscynirjqEm2%hlQ`5IMe!2CFiJupCzWvq5Ys>knt!w%mIxu(O z$&LH(yg$a4?ZWy9ym@r%+4Xsnrw|}OfB*pk1PBlyK!Cv2E-*d0f3_OqEf+^xp95sg zv6YpT*_j8+;+IG7$?xwxCs=6p&kM5sn>Z+lE-RVObm5P5OIEB2_eS~k?o@ZGH!|EE z+CJRt4RyvQ$A-qcozBqY_TCGlo$;v`yPfejN|}gf9iA!WWPI^w%n$$L5gVoXRyWeQ zh#78+I1q;u{qu^!va{S=szH|0YDZf;2OPbs`u^!bYhzZGJIZ+6+34TciYZlL&)&vg z?r-!PTbrWCd&}qde)R2`EkABM^-#X&c#Ly4#(DPXGws@^-G5YdO_K~+$Ta6tmsfSG zvT3%t`B-zbxw|>uY?ocl;pUEJr#aSqG)i~J$;w5Sbk5j}cqLpOc<1siUw?OS!>^}r z{NT5n-v1bFy9{jZ4PDMDmuMpHyOh&U+oCZ-&UyFLk>n^# z@!a|F&$f2#;rkHWjdaf zHWOhU>F84Z!m3v(yCThgr^6-N2m5=wTBq#N{+ss2c+dPyqZ-@Ect?&u<9x&nwe!2z z-O#D$onxs(++Kw&XJ);e@9Qj#{oD6l8)Hh7=VNEp^H{xpS7II;ADMo5-R2QHrrsCz zdLN7RUcK)1x?I>$=cEJ(5FkK+009F3XMyVbKfnEVU3!*-->9c!3v=kf>LBNdP&bY5-uUyeU`HCOl2c%TN7Z5`dl-e_9W*t*fdU^biW zPVJTHrvp1QU;519fLC9-{sM&sm#o^_4}a@RbYg+*#Q0(?9*ZX`%44Cb@sur!HL^j> zB}D=*W?TcI(3|(FEl{AYvPGiU>GL)Q5R#Fm7T-_%ecocA2p%_Q=UVQ*nkac!HnvaC z8NxlganH%46RzdsdXF-#GEvci_8N;F=eQYDnH4*SoJyzBi8`*-I^|Ba6LuobL5#NJ zllX&+a#nSqE5T*Y^`*Hyf8CS+d3@dNFY9mJS1$7iavc2{+;0|)A7b2{a>ZYq2rb1) zQ`C%oi*b5ihDC_R+!*gy95RFFX24(9T-30aV!zB{z8sFKDmG8Kb?llIuYtP}9jUR{ z`PTh+@?_(E{HUlpH(rEhWEwT4=jeT>a^kh0n^Mesb^1NtO5LdOrp-5WT24s497n4% zh51f=^C$5vWz!7i=qqRJfyPUu7QOn7gNv>Qz1lW;QWy6Z>(e+Vlk%Cnjp7WwziI}m zVmaT)TN}1<>s_p1yAd6$v0R*Yg@+@5dY=A&R3@iTSvHQ`{H;VB1qYJ*mn{xdjI9fs z??L1{H}5tt^ZC|dPXZ)B0wh2JBtQZr@IMnU@BjMlU%Pme!8h4#1>QXQM*<{30wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2Jf17~*@_k-^15Y6V5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} R0TLhq5+DH*Ac22`z*kcl3kLuI literal 0 HcmV?d00001 diff --git a/hives_for_tests/NewDirtyHive1/NewDirtyHive.LOG2 b/hives_for_tests/NewDirtyHive1/NewDirtyHive.LOG2 new file mode 100644 index 0000000000000000000000000000000000000000..15f0a4905f5b0fb53c6a7247403047200627932e GIT binary patch literal 65536 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 z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly VK!5-N0t5&UAV7cs0Rq>(z#ksh0b&3E literal 0 HcmV?d00001 diff --git a/hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG1 b/hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG1 new file mode 100644 index 0000000000000000000000000000000000000000..af3b067cbf822d3ea0cd522e795097e15cfa71af GIT binary patch literal 24576 zcmeI2OGuPa6vxj@-(*Jg5QQPqzKn{fF&{J76r>9c!3v=kf>LBNdP&bY5-uUyeU`HCOl2c%TN7Z5`dl-e_9W*t*fdU^biW zPVJTHrvp1QU;519fLC9-{sM&sm#o^_4}a@RbYg+*#Q0(?9*ZX`%44Cb@sur!HL^j> zB}D=*W?TcI(3|(FEl{AYvPGiU>GL)Q5R#Fm7T-_%ecocA2p%_Q=UVQ*nkac!HnvaC z8NxlganH%46RzdsdXF-#GEvci_8N;F=eQYDnH4*SoJyzBi8`*-I^|Ba6LuobL5#NJ zllX&+a#nSqE5T*Y^`*Hyf8CS+d3@dNFY9mJS1$7iavc2{+;0|)A7b2{a>ZYq2rb1) zQ`C%oi*b5ihDC_R+!*gy95RFFX24(9T-30aV!zB{z8sFKDmG8Kb?llIuYtP}9jUR{ z`PTh+@?_(E{HUlpH(rEhWEwT4=jeT>a^kh0n^Mesb^1NtO5LdOrp-5WT24s497n4% zh51f=^C$5vWz!7i=qqRJfyPUu7QOn7gNv>Qz1lW;QWy6Z>(e+Vlk%Cnjp7WwziI}m zVmaT)TN}1<>s_p1yAd6$v0R*Yg@+@5dY=A&R3@iTSvHQ`{H;VB1qYJ*mn{xdjI9fs z??L1{H}5tt^ZC|dPXZ)B0wh2JBtQZr@IMnU@BjMlU%Pme!8h4#1>QXQM*<{30wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2Jf17~*@_k-^15Y6V5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} R0TLhq5+DH*Ac22`z*kcl3kLuI literal 0 HcmV?d00001 diff --git a/hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG2 b/hives_for_tests/NewDirtyHive2/NewDirtyHive.LOG2 new file mode 100644 index 0000000000000000000000000000000000000000..15f0a4905f5b0fb53c6a7247403047200627932e GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/OldDirtyHive/OldDirtyHive b/hives_for_tests/OldDirtyHive/OldDirtyHive new file mode 100644 index 0000000000000000000000000000000000000000..1c3745f6a63bdcaeff475eaccf6f2689a342d6de GIT binary patch literal 524288 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/OldDirtyHive/OldDirtyHive.LOG2 b/hives_for_tests/OldDirtyHive/OldDirtyHive.LOG2 new file mode 100644 index 0000000..e69de29 diff --git a/hives_for_tests/OldDirtyHive/RecoveredHive_Windows7 b/hives_for_tests/OldDirtyHive/RecoveredHive_Windows7 new file mode 100644 index 0000000000000000000000000000000000000000..fafd5aa09b456125e7031552d9cd0fedc326c89e GIT binary patch literal 524288 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 literal 0 HcmV?d00001 diff --git a/hives_for_tests/RemnantsHive b/hives_for_tests/RemnantsHive new file mode 100644 index 0000000000000000000000000000000000000000..2c0a541f9f2ec8199c51d671baa41d52ff08a74e GIT binary patch literal 262144 zcmeI$F>4e-6ae72F^8RsM6i%>m6fN_T#Bm%F<_ZS5MtxGdr3Gh%H0tV5mMTjLd7b7 z!%p%81VI~rf~DXOIA?Y*f(R*MBl10%ee>Sz%yD10Gp@D<3lWjW;kWI>)|<~ok>+R8 z$dTvmJh{-!C-E@u#QnIJ^4+Ln62q9rlX#lyajLgcmAlhaug56$r|~Sky%T$>f4Uft zrlZsCwCf~+_tn?eC#_o}K!5-N0t5&UAV7csf&WKfyT7wr|C{uEe;mj60J(lSo6UBI z*M8j%hI61seE2mWi`0DQg&8X27^v_t-sdkmECTqzdCqy ztJ|v{m)+irhzIGc$uJ_Hmq)&bIH>dDewp$#jT}p9EX2nAzT$G+j`LCE%Z!LtJ3ZR< ze5vW@LsI`@ovuVL?JSy$j#jJgMQm&qf9x-s#nz?t&a3Y~Hs5~wxcue%ha35Kj?T?D zN(2ZHAV7cs0RjXF5FkL{9~Rh4-`I;0`}xy2WkG-d0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ yfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBoLYk{BP+*Hi~ literal 0 HcmV?d00001 diff --git a/hives_for_tests/SlackHive b/hives_for_tests/SlackHive new file mode 100644 index 0000000000000000000000000000000000000000..9cf34e210b100c874e1ede183eba30616cd5a19e GIT binary patch literal 524288 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U vAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7e?BO&k~cp|f} literal 0 HcmV?d00001 diff --git a/hives_for_tests/TruncatedHive b/hives_for_tests/TruncatedHive new file mode 100644 index 0000000000000000000000000000000000000000..5c71d65b9fcf9292b6c84d3e80e0966f4cda0823 GIT binary patch literal 12288 zcmeHN&ub(_6n>q}I1z;1bt9}G(&A6V=yXs2n8t&1oQo3hvak!;44K{xvl+uo*4-dN zj)6UxgGi3?w#OVji3g7h2K^(9w}Ie_dWhdw-4&O1*MoTl9{Q0=RabX^_3G7oU%jqm zGPsq`iwMi?t(>9iTmxo($zvv_+DW-CyRspD*9lP;a477E$J8xje79Dj@#f5} zhL6fO?Zu+sXfKWD&Fz;Y!<$}l(9vj^K9S|?-ap>=ikpoW@XQyplj~po@bKlI-u?DH zj^7!&bBl+pMj97T8e{;*SQ~D|d%m>nj_pu2`{SnM!|_@N^+$udzV>+Sa=f?9yq+oMb%^%ZD=p*pdWccipdE>AF z9s#GcnubGMt+&yqBoeK8a+M8kNhIpHB@w9OmPDYATM~iAl~?{e%Xhl}VPCa=6aqIu z(ZVIKbKOGtCtaf0*B1WWKb7}!Grl992p#c6sLT^Ke!?=rulM(o?XZs#)Y zAr_yO-yI?!!E3UPZy4qbT6zJ>=+&<9z518+N z_?WOfLDc=l5l^(0d4i^3+%e`T>ULl-I>03tIKfqpN6W(r;>HCJCx{ytJe(kI=o4E0 zaI{$XS%SET6mh#(OI*Z73|#z3OrI;i|9dau900y@z#407&jVcV7f~hu(BiYm5wAp! zc!g_C(efi=nLNP}uf&dcC06DYYlqm;J|8>U=VM3veC#ORVn^{7JBl}QAVoXg45vE4 zB{x&F^(EIk!Bvhon;&F|3m5r8hPZH%A7qFN7x_VkxNwmlWQYsKhL)f0T`BgV4Es=` zhw!w`nVi lI}3J0sdWz@)u<;XmJ1l literal 0 HcmV?d00001 diff --git a/hives_for_tests/TruncatedNameHive b/hives_for_tests/TruncatedNameHive new file mode 100644 index 0000000000000000000000000000000000000000..bb2d158b153a603136224bd06cf9a60aa3314385 GIT binary patch literal 262144 zcmeI$J8M)y6ae6}>Y|9^0~HIA1wk9vWH-@}N)d~I5K<@z+N{YYhL}yr!yuwqshtWU zmi`2L!Aj6V@QJlxp^Yerb)31I72V1rh2S?Zcg~!9?#%FQwKLb87+)I^xgUG>Zf8Z7NZrT(Mb7bjKy$@rc*Q& zlW{4H5jSR+zI@&EY1`fEhBz?tbW8U)Zq6`K{&U<<``}c(r)&b-o+OxuNy#yMP>5)bdPmeNBuM_ZJbn<7jM&QZ9}tSJES&FIN@$;`CA8 zo>Q?W2Gf_NeDRTL%f%4!;aAaa>B)7oDc72+{NYns zSt}3OB)3l7@%gRfSGX}n!_B42$>!zCzFIq-f0m2mr8t((p5Hx8YZd$5ef+NTdsNz` z#k1J#FZbJ(*Pdxjv>MaRTD`A7FVMZ;=d@Pd|54gM*LKeFd~>m#2LS>E2oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U ZAV7cs0RjXF5FkK+009C72>ho4KLMiMs0RQ5 literal 0 HcmV?d00001 diff --git a/hives_for_tests/UnicodeHive b/hives_for_tests/UnicodeHive new file mode 100644 index 0000000000000000000000000000000000000000..a95c18938af2d5393a3424e8c3da9ab1d6bae842 GIT binary patch literal 262144 zcmeI$L2F!96ae7!>I)VTTBSmfqJx5Nj5h5A8U>9-FesEP47R2VO=rfIX~vQSMMQAf zoi0>dcIh&|z?Fi6Am|@(A?QxQRdEr|naP71-H1g5zYF)Bd+)pNp8LKxo4H%V*GG3m zMAf4=Z(jWQqi>sLzn>wh-K)mYS$i$EV;Ea`y%=X>Emkrsn0W zN?gj3LEc@-_L~_a#!sJk^0(&4dp=w~9FMMke&k@kQe8bTXKQn3v&NO%D{y^%bL;l5 zXf*-^2oNAZfB*pk1PBoLuL@k=xH6gUE&tzlr8@_x{`I}Ry~+5o*nQ}$m+EYw##Zi} zods0;%R>=4Wv|*5KiQARYT!V5B>V3ShJ)c~;pAZc^vTg^zQ4G!IKMRL_vbfGk6t^~ zUm9K-^q1a^IG<~6k0Wkm#;TS0gRD)o?+r5UWUW$p4#n#9{37CbJQGKv$vtJ6>*b|4 zZ6BMBPj?@4_txDw5li`GQwJY8cWxRYR@a+9J>Sf3&fS-D-v8y-^^d>#`ho8r|Llp% z^JgRKH)WmYWU%kVPe91|Ezgt~;IcN3>BF?0H=TNb8`K#Z}-TB;u?Q(mj zJ=HF@XWQ)7anv93{gi7|{?5LOpXPY& literal 0 HcmV?d00001 diff --git a/hives_for_tests/WrongOrderHive b/hives_for_tests/WrongOrderHive new file mode 100644 index 0000000000000000000000000000000000000000..88463c3873aa5ca30a9c7b173dbe988f15e77b7c GIT binary patch literal 262144 zcmeI$L17y#hem}o6RRVwX4%7UUrOih{u&B-EyK~ZxND;3mscWX%-OBz~K1dm>7 ziw7x1G*qlTc+#U_J$UdS2QkzIl7d zTWas`TvtlT^32A^KianPO{39oM^!R!W^!{cUn)n+v*n@kRGEwV;nI%wLRl^^mBZ1V zjPi6@iq>M;U!IJt6(g2n?16GLvQi!yIWu$5O&4!D^XP_h_xu-|2HUyR+`yQnL(7M< zUkq2^_}LA|hdZO$2oNAZfB*pk1PBlyK;Zu>@Z#PBi`{37|L<$m?*Q3;V{L71apB(b z^XcDD=eL3Eo4cWukxU}y;=@4s; z_-t!>dVKFx=Y^fqv+aGY>Dkvx*&TBoStw;CR?LzMpN!Hdqp!E3UXGHH>x`87?)QsQ zww4FWrqbv=+*mWNHM{xdUVr!L%h;{aU&`%eHtuZXhmTUm#=2E0^LrXs-QVb49J?*X zoVfJMp0~gLYTLIvKD#g1c|Q6U7n`rSL#CGV+`78%*jy1LZs>+AI{b>8z^?tga} z^Va=dtM~aoPP{ja^{4t9t^0cJ&DG2A(LeE;?$7&q*yelmW&HkguZN?~bDN77B-dVv zI>!#4Uvzb&_gtlXa-scx-EW?GjXb-IY-jy<=a{!m^k2+6?}%HQobUdd$y2oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs S0RjXF5FkK+009F3p1_~V@~4IX literal 0 HcmV?d00001 diff --git a/records_for_tests/dummy_db b/records_for_tests/dummy_db new file mode 100644 index 0000000000000000000000000000000000000000..980239ecd8003dbe30d64592c9ddb0edb8a8da4f GIT binary patch literal 12 QcmYdEVqyS+U>|3101O8K_5c6? literal 0 HcmV?d00001 diff --git a/records_for_tests/dummy_lf b/records_for_tests/dummy_lf new file mode 100644 index 0000000000000000000000000000000000000000..17ff43346528d8afe5750ff9af7037fd1d54d89e GIT binary patch literal 32 Qcmc~vV`jhwf_`LNlUZC6?BnbW0FJf>{Qv*} literal 0 HcmV?d00001 diff --git a/records_for_tests/dummy_ri b/records_for_tests/dummy_ri new file mode 100644 index 0000000000000000000000000000000000000000..a90d6d6dfeb3774bb73e0f260ef228d0926d7dae GIT binary patch literal 20 QcmXTQWM)7H!9LF302BTK3;+NC literal 0 HcmV?d00001 diff --git a/records_for_tests/dummy_sk b/records_for_tests/dummy_sk new file mode 100644 index 0000000000000000000000000000000000000000..112635494d22a5543b25e13ffedd38e7b4b5b4f7 GIT binary patch literal 284 XcmXTUWy3Ve- literal 0 HcmV?d00001 diff --git a/records_for_tests/dummy_vk b/records_for_tests/dummy_vk new file mode 100644 index 0000000000000000000000000000000000000000..3702200827533a75e8f0def43866f2bb8dc532a3 GIT binary patch literal 27 TcmXTRW@bPKhDOH0KF;0%9ytQ2 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..d018eb2 --- /dev/null +++ b/setup.py @@ -0,0 +1,19 @@ +from distutils.core import setup +from yarp import __version__ + +setup( + name = 'yarp', + version = __version__, + license = 'GPLv3', + packages = [ 'yarp' ], + scripts = [ 'yarp-carver', 'yarp-print', 'yarp-timeline' ], + description = 'Yet another registry parser', + author = 'Maxim Suhanov', + author_email = 'no.spam.c@mail.ru', + classifiers = [ + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3', + 'Development Status :: 4 - Beta' + ] +) diff --git a/test_cases.py b/test_cases.py new file mode 100644 index 0000000..45e95ca --- /dev/null +++ b/test_cases.py @@ -0,0 +1,1021 @@ +# coding: utf-8 + +# yarp: yet another registry parser +# (c) Maxim Suhanov + +import pytest +from io import BytesIO +from os import path, remove +from hashlib import md5 +from yarp import Registry, RegistryFile, RegistryRecords, RegistryRecover, RegistryCarve, RegistryHelpers + +HIVES_DIR = 'hives_for_tests' +RECORDS_DIR = 'records_for_tests' + +hive_empty = path.join(HIVES_DIR, 'EmptyHive') +hive_bigdata = path.join(HIVES_DIR, 'BigDataHive') +hive_many_subkeys = path.join(HIVES_DIR, 'ManySubkeysHive') +hive_garbage = path.join(HIVES_DIR, 'GarbageHive') +hive_duplicate_subkeys = path.join(HIVES_DIR, 'DuplicateSubkeysHive') + +hive_dirty_new1 = path.join(HIVES_DIR, 'NewDirtyHive1', 'NewDirtyHive') +hive_dirty_new1_log1 = path.join(HIVES_DIR, 'NewDirtyHive1', 'NewDirtyHive.LOG1') +hive_dirty_new1_log2 = path.join(HIVES_DIR, 'NewDirtyHive1', 'NewDirtyHive.LOG2') +hive_dirty_new1_recovered = path.join(HIVES_DIR, 'NewDirtyHive1', 'RecoveredHive_Windows10') + +hive_dirty_new2 = path.join(HIVES_DIR, 'NewDirtyHive2', 'NewDirtyHive') +hive_dirty_new2_log1 = path.join(HIVES_DIR, 'NewDirtyHive2', 'NewDirtyHive.LOG1') +hive_dirty_new2_log2 = path.join(HIVES_DIR, 'NewDirtyHive2', 'NewDirtyHive.LOG2') + +hive_dirty_old = path.join(HIVES_DIR, 'OldDirtyHive', 'OldDirtyHive') +hive_dirty_old_log = path.join(HIVES_DIR, 'OldDirtyHive', 'OldDirtyHive.LOG1') +hive_dirty_old_recovered = path.join(HIVES_DIR, 'OldDirtyHive', 'RecoveredHive_Windows7') + +hive_unicode = path.join(HIVES_DIR, 'UnicodeHive') +hive_extended_ascii = path.join(HIVES_DIR, 'ExtendedASCIIHive') +hive_invalid_parent = path.join(HIVES_DIR, 'InvalidParentHive') +hive_bad_list = path.join(HIVES_DIR, 'BadListHive') +hive_bad_subkey = path.join(HIVES_DIR, 'BadSubkeyHive') + +hive_bad_baseblock = path.join(HIVES_DIR, 'BadBaseBlockHive', 'BadBaseBlockHive') +hive_bad_baseblock_log1 = path.join(HIVES_DIR, 'BadBaseBlockHive', 'BadBaseBlockHive.LOG1') +hive_bad_baseblock_log2 = path.join(HIVES_DIR, 'BadBaseBlockHive', 'BadBaseBlockHive.LOG2') + +hive_bad_log1 = path.join(HIVES_DIR, 'BadLogHive1', 'BadLogHive') +hive_bad_log1_log1 = path.join(HIVES_DIR, 'BadLogHive1', 'BadLogHive.LOG1') +hive_bad_log1_log2 = path.join(HIVES_DIR, 'BadLogHive1', 'BadLogHive.LOG2') + +hive_bad_log2 = path.join(HIVES_DIR, 'BadLogHive2', 'BadLogHive') +hive_bad_log2_log1 = path.join(HIVES_DIR, 'BadLogHive2', 'BadLogHive.LOG1') +hive_bad_log2_log2 = path.join(HIVES_DIR, 'BadLogHive2', 'BadLogHive.LOG2') + +hive_bad_log3 = path.join(HIVES_DIR, 'BadLogHive3', 'BadLogHive') +hive_bad_log3_log1 = path.join(HIVES_DIR, 'BadLogHive3', 'BadLogHive.LOG1') +hive_bad_log3_log2 = path.join(HIVES_DIR, 'BadLogHive3', 'BadLogHive.LOG2') + +hive_bogus_keynames = path.join(HIVES_DIR, 'BogusKeyNamesHive') +hive_new_flags = path.join(HIVES_DIR, 'NewFlagsHive') +hive_multisz = path.join(HIVES_DIR, 'MultiSzHive') +hive_strings = path.join(HIVES_DIR, 'StringValuesHive') +hive_wrong_order = path.join(HIVES_DIR, 'WrongOrderHive') +hive_truncated_name = path.join(HIVES_DIR, 'TruncatedNameHive') +hive_healed = path.join(HIVES_DIR, 'HealedHive') +hive_deleted_data = path.join(HIVES_DIR, 'DeletedDataHive') +hive_deleted_tree = path.join(HIVES_DIR, 'DeletedTreeHive') +hive_comp = path.join(HIVES_DIR, 'CompHive') +hive_remnants = path.join(HIVES_DIR, 'RemnantsHive') +hive_truncated = path.join(HIVES_DIR, 'TruncatedHive') +hive_effective_size = path.join(HIVES_DIR, 'EffectiveSizeHive') +hive_deleted_tree_no_root_flag = path.join(HIVES_DIR, 'DeletedTreeNoRootFlagHive') +hive_deleted_tree_partial_path = path.join(HIVES_DIR, 'DeletedTreePartialPathHive') +hive_slack = path.join(HIVES_DIR, 'SlackHive') + +hive_carving0 = path.join(HIVES_DIR, 'Carving', '0') +hive_carving512 = path.join(HIVES_DIR, 'Carving', '512') + +log_discovery = [ + path.join(HIVES_DIR, 'Discovery', '1', 'aa'), + path.join(HIVES_DIR, 'Discovery', '2', 'AA'), + path.join(HIVES_DIR, 'Discovery', '3', 'AA'), + path.join(HIVES_DIR, 'Discovery', '4', 'AA'), + path.join(HIVES_DIR, 'Discovery', '5', 'aa') +] + +record_nk = path.join(RECORDS_DIR, 'dummy_nk') +record_vk = path.join(RECORDS_DIR, 'dummy_vk') +record_sk = path.join(RECORDS_DIR, 'dummy_sk') +record_li = path.join(RECORDS_DIR, 'dummy_li') +record_lf = path.join(RECORDS_DIR, 'dummy_lf') +record_lh = path.join(RECORDS_DIR, 'dummy_lh') +record_ri = path.join(RECORDS_DIR, 'dummy_ri') +record_list = path.join(RECORDS_DIR, 'dummy_list') +record_db = path.join(RECORDS_DIR, 'dummy_db') + +def test_empty(): + with open(hive_empty, 'rb') as f: + hive = Registry.RegistryHive(f) + + assert hive.root_key().subkeys_count() == 0 + for key in hive.root_key().subkeys(): + assert False + + assert hive.root_key().path() == '' + assert hive.root_key().path(True) != '' + + timestamp = hive.last_written_timestamp() + assert timestamp.year == 2017 + assert timestamp.month == 3 + assert timestamp.day == 4 + assert timestamp.hour == 16 + assert timestamp.minute == 37 + assert timestamp.second == 31 + + timestamp = hive.last_reorganized_timestamp() + assert timestamp is None + +def test_bigdata(): + with open(hive_bigdata, 'rb') as f: + hive = Registry.RegistryHive(f) + + key = hive.root_key().subkey('key_with_bigdata') + assert key.values_count() == 2 + + value = key.value() + assert hive.registry_file.get_cell(value.key_value.get_data_offset())[ : 2] == b'db' + + data = value.data() + assert len(data) == 16345 + for c in data.decode('windows-1252'): + assert c == '1' + + value = key.value('V') + assert hive.registry_file.get_cell(value.key_value.get_data_offset())[ : 2] == b'db' + + data = value.data() + assert len(data) == 81725 + for c in data.decode('windows-1252'): + assert c == '2' + + assert key.value('dont_exist') is None + +def test_many_subkeys(): + with open(hive_many_subkeys, 'rb') as f: + hive = Registry.RegistryHive(f) + + key = hive.find_key('key_with_many_subkeys') + assert key.subkeys_count() == 5000 + + assert hive.registry_file.get_cell(key.key_node.get_subkeys_list_offset())[ : 2] == b'ri' + + allowed_range = range(1, 5000 + 1) + for subkey in key.subkeys(): + assert int(subkey.name()) in allowed_range + + key = hive.find_key('key_with_MAny_subkeys\\2119\\find_me') + assert key.path() == 'key_with_many_subkeys\\2119\\find_me' + assert key.path_partial() == key.path() + + key = hive.find_key('\\key_with_maNY_sUBkeys\\2119\\Find_me') + assert key.path() == 'key_with_many_subkeys\\2119\\find_me' + assert key.path_partial() == key.path() + + key = hive.find_key('key_with_many_subkeys\\2119\\find_me') + assert key.path() == 'key_with_many_subkeys\\2119\\find_me' + assert key.path_partial() == key.path() + + key = hive.find_key('key_with_many_subkeys\\3000') + assert key is not None + + key = hive.find_key('key_with_many_subkeys\\3000\\dont_exist') + assert key is None + + key = hive.find_key('key_with_many_subkeys\\dont_exist\\dont_exist') + assert key is None + +def test_garbage(): + with open(hive_garbage, 'rb') as f: + hive = Registry.RegistryHive(f) + + assert hive.registry_file.baseblock.get_hbins_data_size() == hive.registry_file.baseblock.effective_hbins_data_size == 4096 + + cnt = 0 + for hive_bin in hive.registry_file.hive_bins(): + cnt += 1 + + assert cnt == 1 + +def test_duplicate_subkeys(): + with open(hive_duplicate_subkeys, 'rb') as f: + hive = Registry.RegistryHive(f) + + with pytest.raises(Registry.WalkException): + key = hive.root_key().subkey('key_with_many_subkeys') + + assert key is not None + + for subkey in key.subkeys(): + pass + +@pytest.mark.parametrize('reverse', [False, True]) +def test_dirty_new1(reverse): + + def log_entry_counter(): + log_entry_counter.c += 1 + + with open(hive_dirty_new1, 'rb') as primary, open(hive_dirty_new1_log1, 'rb') as log1, open(hive_dirty_new1_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + + key_1 = hive.find_key('Key1') + key_21 = hive.find_key('Key2\\Key2_1') + key_22 = hive.find_key('Key2\\Key2_2') + assert key_1 is not None + assert key_21 is not None + assert key_22 is not None + + key_bad = hive.find_key('Key2\\Key2_2\\dont_exist') + assert key_bad is None + + value = key_1.value() + value_data = value.data() + assert len(value_data) == 6001 + for c in value_data[ : -1]: + assert c == '1' + + assert value_data[-1] == '\x00' + + assert len(hive.find_key('KEY2').value('v').data()) == 9 + assert hive.find_key('key2').value('V').data() == 'testTEST\x00' + + assert hive.registry_file.log_apply_count == 0 + + hive.log_entry_callback = log_entry_counter + log_entry_counter.c = 0 + + if not reverse: + hive.recover_new(log1, log2) + else: + hive.recover_new(log2, log1) + + assert log_entry_counter.c == 4 + + assert hive.registry_file.log_apply_count == 2 + + hive.registry_file.file_object.seek(4096) + recovered_data_1 = hive.registry_file.file_object.read() + md5_1 = md5(recovered_data_1).hexdigest() + + with open(hive_dirty_new1_recovered, 'rb') as f: + f.seek(4096) + recovered_data_2 = f.read() + md5_2 = md5(recovered_data_2).hexdigest() + + assert md5_1 == md5_2 + + key_1 = hive.find_key('Key1') + key_21 = hive.find_key('Key2\\Key2_1') + key_22 = hive.find_key('key2\\key2_2') + assert key_1 is None + assert key_21 is None + assert key_22 is None + + key_3 = hive.find_key('Key3') + key_31 = hive.find_key('Key3\\Key3_1') + key_32 = hive.find_key('Key3\\Key3_2') + key_33 = hive.find_key('key3\\key3_3') + assert key_3 is not None + assert key_31 is not None + assert key_32 is not None + assert key_33 is not None + + key_bad = hive.find_key('Key3\\Key3_2\\dont_exist') + assert key_bad is None + + value = key_3.value() + value_data = value.data() + assert len(value_data) == 1441 + for c in value_data[ : -1]: + assert c == '1' + + assert value_data[-1] == '\x00' + +def test_dirty_new2(): + with open(hive_dirty_new2, 'rb') as primary, open(hive_dirty_new2_log1, 'rb') as log1, open(hive_dirty_new2_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + + assert hive.registry_file.baseblock.validate_checksum() + assert hive.registry_file.log_apply_count == 0 + hive.recover_new(log1, log2) + assert hive.registry_file.log_apply_count == 1 + assert hive.registry_file.last_sequence_number == 5 + +def test_dirty_old(): + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + + key_1 = hive.find_key('\\key_with_many_subkeys\\1') + assert key_1 is not None + + key_5000_1 = hive.find_key('key_with_many_subkeys\\5000\\find_me_in_log') + assert key_5000_1 is None + + value_4500 = hive.find_key('key_with_many_subkeys\\4500').value('v') + assert value_4500 is None + + hive.recover_old(log) + + key_1 = hive.find_key('\\key_with_many_subkeys\\1') + assert key_1 is None + + key_5000_1 = hive.find_key('key_with_many_subkeys\\5000\\find_me_in_log') + assert key_5000_1 is not None + timestamp_1 = key_5000_1.last_written_timestamp() + + value_4500 = hive.find_key('key_with_many_subkeys\\4500').value('V') + assert value_4500 is not None + + assert value_4500.data() == [ 'a\x00', 'bb\x00', 'ccc\x00', '\x00' ] + + with open(hive_dirty_old_recovered, 'rb') as recovered: + hive_r = Registry.RegistryHive(recovered) + + key_5000_1_r = hive_r.find_key('key_with_many_subkeys\\5000\\find_me_in_log') + timestamp_2 = key_5000_1_r.last_written_timestamp() + + value_4500_r = hive_r.find_key('key_with_many_subkeys\\4500').value('v') + + assert timestamp_1 == timestamp_2 + assert value_4500.data() == value_4500_r.data() + +def test_dirty_old_rollback_changes(): + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + + hive.recover_old(log) + assert hive.registry_file.log_apply_count == 1 + hive.rollback_changes() + assert hive.registry_file.log_apply_count == 0 + + key_1 = hive.find_key('\\key_with_many_subkeys\\1') + assert key_1 is not None + + key_5000_1 = hive.find_key('key_with_many_subkeys\\5000\\find_me_in_log') + assert key_5000_1 is None + + value_4500 = hive.find_key('key_with_many_subkeys\\4500').value('v') + assert value_4500 is None + +def test_recovery_not_required(): + with open(hive_dirty_old_recovered, 'rb') as recovered: + hive = Registry.RegistryHive(recovered) + dummy = BytesIO() + + with pytest.raises(RegistryFile.RecoveryException): + hive.recover_old(dummy) + + with pytest.raises(RegistryFile.RecoveryException): + hive.recover_new(dummy) + +def test_unicode(): + with open(hive_unicode, 'rb') as f: + hive = Registry.RegistryHive(f) + + key = hive.find_key(u'ПриВет\\КлюЧ') + assert key is not None + assert key.path() == u'Привет\\Ключ' + assert key.path_partial() == key.path() + + key = hive.find_key(u'\\ПриВет\\КлюЧ') + assert key is not None + assert key.path() == u'Привет\\Ключ' + assert key.path_partial() == key.path() + + key = hive.find_key(u'привет') + assert key is not None + assert key.path().lower() == u'привет' + assert key.path_partial() == key.path() + + key = hive.find_key(u'\\привеТ') + assert key is not None + assert key.path() == u'Привет' + assert key.path_partial() == key.path() + +def test_extended_ascii(): + with open(hive_extended_ascii, 'rb') as f: + hive = Registry.RegistryHive(f) + + key = hive.find_key(u'ëigenaardig') + assert key is not None + assert key.key_node.get_flags() & RegistryRecords.KEY_COMP_NAME > 0 + assert key.path() == u'ëigenaardig' + assert key.path_partial() == key.path() + + value = key.value(u'ëigenaardig') + assert value.key_value.get_flags() & RegistryRecords.VALUE_COMP_NAME > 0 + assert value.data() == u'ëigenaardig\x00' + +def test_autorecovery(): + def convert_tuple(t): + assert t.recovered + file_objects = t.file_objects + assert len(file_objects) < 3 and len(file_objects) > 0 + if len(file_objects) == 1: + return (t.is_new_log, t.file_objects[0]) + else: + return (t.is_new_log, t.file_objects[0], t.file_objects[1]) + + dummy = BytesIO() + + with open(hive_dirty_new1, 'rb') as primary, open(hive_dirty_new1_log1, 'rb') as log1, open(hive_dirty_new1_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(dummy, log1, log2) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 2 + assert len(t) == 3 + assert t[0] + assert t[1] == log1 and t[2] == log2 + + with open(hive_dirty_new1, 'rb') as primary, open(hive_dirty_new1_log1, 'rb') as log1, open(hive_dirty_new1_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(None, log1, log2) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 2 + assert len(t) == 3 + assert t[0] + assert t[1] == log1 and t[2] == log2 + + with open(hive_dirty_new2, 'rb') as primary, open(hive_dirty_new2_log1, 'rb') as log1, open(hive_dirty_new2_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(dummy, log1, log2) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 3 + assert t[0] + assert t[1] == log1 and t[2] == log2 + + with open(hive_dirty_new2, 'rb') as primary, open(hive_dirty_new2_log1, 'rb') as log1, open(hive_dirty_new2_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(None, log1, log2) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 3 + assert t[0] + assert t[1] == log1 and t[2] == log2 + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(log, dummy, dummy) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(dummy, log, dummy) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(dummy, dummy, log) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(dummy, log, log) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(log, log, log) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(None, dummy, log) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + t = hive.recover_auto(log, None, None) + t = convert_tuple(t) + assert hive.registry_file.log_apply_count == 1 + assert len(t) == 2 + assert not t[0] + assert t[1] == log + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(dummy, dummy, dummy) + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(dummy, log, None) + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(dummy, None, log) + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(None, None, log) + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(log, None, log) + +def test_invalid_parent(): + with open(hive_invalid_parent, 'rb') as primary: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.WalkException): + for subkey_1 in hive.root_key().subkeys(): + for subkey_2 in subkey_1.subkeys(): + pass +def test_bad_list(): + with open(hive_bad_list, 'rb') as primary: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.WalkException): + for subkey_1 in hive.root_key().subkeys(): + for subkey_2 in subkey_1.subkeys(): + pass + +def test_bad_subkey(): + with open(hive_bad_subkey, 'rb') as primary: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.WalkException): + for subkey_1 in hive.root_key().subkeys(): + for subkey_2 in subkey_1.subkeys(): + pass + +def test_access_bits(): + with open(hive_dirty_new1, 'rb') as primary: + hive = Registry.RegistryHive(primary) + key = hive.find_key('\\key2\\key2_2') + assert key.access_bits() == 2 + +def test_bad_baseblock(): + with open(hive_bad_baseblock, 'rb') as primary, open(hive_bad_baseblock_log1, 'rb') as log1, open(hive_bad_baseblock_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + + assert hive.registry_file.log_apply_count == 0 + assert hive.registry_file.baseblock.effective_version == 1 + + with pytest.raises(RegistryFile.CellOffsetException): + hive.find_key('key_with_many_subkeys') + + t = hive.recover_auto(None, log1, log2) + + assert hive.registry_file.log_apply_count == 1 + assert hive.registry_file.baseblock.effective_version == 3 + assert not t.is_new_log + assert t.file_objects == [log1] + assert hive.find_key('key_with_many_subkeys') is not None + +def test_bad_log1(): + with open(hive_bad_log1, 'rb') as primary, open(hive_bad_log1_log1, 'rb') as log1, open(hive_bad_log1_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(None, log1, log2) +def test_bad_log2(): + with open(hive_bad_log2, 'rb') as primary, open(hive_bad_log2_log1, 'rb') as log1, open(hive_bad_log2_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(None, log1, log2) + +def test_bad_log3(): + with open(hive_bad_log3, 'rb') as primary, open(hive_bad_log3_log1, 'rb') as log1, open(hive_bad_log3_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + with pytest.raises(Registry.AutoRecoveryException): + hive.recover_auto(None, log1, log2) +def test_writable(): + with open(hive_empty, 'rb') as primary: + hive = Registry.RegistryHive(primary) + + assert not hive.registry_file.writable + hive.registry_file.create_writable_file_object() + assert hive.registry_file.writable + hive.registry_file.discard_writable_file_object() + + assert not hive.registry_file.writable + hive.registry_file.create_writable_file_object() + assert hive.registry_file.writable + hive.registry_file.create_writable_file_object() + assert hive.registry_file.writable + hive.registry_file.discard_writable_file_object() + assert not hive.registry_file.writable + hive.registry_file.discard_writable_file_object() + hive.registry_file.discard_writable_file_object() + hive.registry_file.discard_writable_file_object() + hive.registry_file.discard_writable_file_object() + assert not hive.registry_file.writable + +def test_bogus_keynames(): + with open(hive_bogus_keynames, 'rb') as primary: + hive = Registry.RegistryHive(primary) + for k in hive.root_key().subkeys(): + assert k.name() == 'testnew\r\nne' or k.name() == 'testnu\x00l' + + assert hive.find_key('testnew\r\nne') is not None + assert hive.find_key('testnu\x00l') is not None + +def test_new_flags(): + with open(hive_new_flags, 'rb') as primary: + hive = Registry.RegistryHive(primary) + + key_1 = hive.find_key('1') + assert key_1 is not None + key_2 = hive.find_key('1\\2') + assert key_2 is not None + + assert key_1.key_node.get_virtualization_control_flags() == 0 + assert key_1.key_node.get_user_flags_new() == 0 + assert key_2.key_node.get_virtualization_control_flags() == 0 + assert key_2.key_node.get_user_flags_new() == RegistryRecords.KEY_FLAG_32BIT + assert key_2.key_node.get_user_flags_old() == 0 + +def test_multisz(): + with open(hive_multisz, 'rb') as primary: + hive = Registry.RegistryHive(primary) + key = hive.find_key('key') + value_1 = key.value('1') + value_2 = key.value('2') + assert key.value() is None + + assert value_1.data() == [] + l = value_2.data() + assert len(l) == 3 and l[0] == u'привет\x00' and l[1] == u'как дела?\x00' and l[2] == '\x00' + +def test_strings(): + with open(hive_strings, 'rb') as primary: + hive = Registry.RegistryHive(primary) + key = hive.find_key('key') + + assert key.value().data() == u'test тест\x00' + assert key.value('1').data() == b'test' + assert key.value('2').data() == u'test тест\x00' + assert key.value('3').data() == u'test тест \x00' + +def test_unicode_garbage(): + s = b'a\x00b\x00\x00\x00c\x00d\x00' + assert Registry.DecodeUnicode(s, True) == u'ab\x00' + assert Registry.DecodeUnicode(s, False) == u'ab\x00cd' + + s = b'a\x00b\x00\x00\x00c\x00d\x00e' + assert Registry.DecodeUnicode(s, True) == u'ab\x00' + with pytest.raises(UnicodeDecodeError): + Registry.DecodeUnicode(s, False) + + s = b'a\x00\x00\x00b\x00\x00\x00\x00\x00' + assert Registry.DecodeUnicodeMulti(s, True) == u'a\x00b\x00\x00' + +def test_security(): + with open(hive_unicode, 'rb') as f: + hive = Registry.RegistryHive(f) + sec = hive.root_key().security() + assert len(sec.descriptor()) == 144 + +def test_wrong_order(): + with open(hive_wrong_order, 'rb') as f: + hive = Registry.RegistryHive(f) + + c = 0 + with pytest.raises(Registry.WalkException): + for subkey in hive.find_key('1').subkeys(): + c += 1 + + assert c == 1 + + with pytest.raises(Registry.WalkException): + for subkey in hive.find_key('2').subkeys(): + c += 1 + + assert c == 4 + +def test_truncated_name(): + with open(hive_truncated_name, 'rb') as f: + hive = Registry.RegistryHive(f) + + with pytest.raises(RegistryRecords.ParseException): + for subkey in hive.root_key().subkeys(): + pass + +@pytest.mark.parametrize('walk_everywhere', [True, False]) +def test_unreferenced(walk_everywhere): + with open(hive_healed, 'rb') as f: + hive = Registry.RegistryHive(f) + + if walk_everywhere: + hive.walk_everywhere() + assert len(hive.registry_file.cell_map_allocated - hive.registry_file.cell_map_referenced) == 5 + else: + hive.registry_file.build_map_free() + assert len(hive.registry_file.cell_map_referenced) == 0 + assert len(hive.registry_file.cell_map_free) == len(hive.registry_file.cell_map_unallocated) + + with open(hive_bigdata, 'rb') as f: + hive = Registry.RegistryHive(f) + + if walk_everywhere: + hive.walk_everywhere() + assert len(hive.registry_file.cell_map_allocated - hive.registry_file.cell_map_referenced) == 0 + else: + hive.registry_file.build_map_free() + assert len(hive.registry_file.cell_map_referenced) == 0 + assert len(hive.registry_file.cell_map_free) == len(hive.registry_file.cell_map_unallocated) + +def test_deleted(): + with open(hive_deleted_data, 'rb') as f: + hive = Registry.RegistryHive(f) + + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + cnt_key_values = 0 + cnt_key_nodes = 0 + for i in scanner.scan(): + if type(i) is Registry.RegistryValue: + cnt_key_values += 1 + + assert i.type_raw() == RegistryRecords.REG_SZ + + if i.name() == 'v2': + assert i.data() == '456\x00' + elif i.name() == 'v': + assert i.data() == '123456\x00' + else: + assert False + + elif type(i) is Registry.RegistryKey: + cnt_key_nodes += 1 + + assert i.name() == '456' + + c = 0 + for v in i.values(): + c += 1 + assert v.name() == 'v' + assert v.type_raw() == RegistryRecords.REG_SZ + assert v.data() == '123456\x00' + + assert c == 1 + + assert cnt_key_values == 2 + assert cnt_key_nodes == 1 + + with open(hive_deleted_tree, 'rb') as f: + hive = Registry.RegistryHive(f) + + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + for i in scanner.scan(): + assert type(i) is Registry.RegistryKey + assert i.path() in [ '1\\2\\3', '1\\2\\3\\4', '1\\2\\3\\4\\5', '1\\2\\3\\4\\New Key #1' ] + assert i.path_partial() == i.path() + + with open(hive_healed, 'rb') as f: + hive = Registry.RegistryHive(f) + + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + for i in scanner.scan(): + if type(i) is Registry.RegistryKey: + assert i.name() == 'cccc' + for v in i.values(): + assert v.name() == '123' + assert v.type_raw() == RegistryRecords.REG_SZ + assert v.data() == 'test\x00' + + elif type(i) is Registry.RegistryValue: + assert i.name() == '123' + assert i.type_raw() == RegistryRecords.REG_SZ + assert i.data() == 'test\x00' + +def test_comp(): + with open(hive_comp, 'rb') as f: + hive = Registry.RegistryHive(f) + hive.walk_everywhere() + +def test_carving(): + with open(hive_carving0, 'rb') as f: + carver = RegistryCarve.Carver(f) + for i in carver.carve(): + assert i.offset == 0 + assert i.size == 8192 + assert not i.truncated + assert i.truncation_scenario == 0 + + with open(hive_carving512, 'rb') as f: + carver = RegistryCarve.Carver(f) + for i in carver.carve(): + assert i.offset == 512 + assert i.size == 8192 + assert not i.truncated + assert i.truncation_scenario == 0 + +def test_remnants(): + with open(hive_remnants, 'rb') as f: + hive = Registry.RegistryHive(f) + + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + + c = 0 + for i in scanner.scan(): + assert type(i) is Registry.RegistryValue + assert i.name() == '' + assert i.type_raw() == RegistryRecords.REG_DWORD + assert i.data() == 1 + c += 1 + + assert c == 1 + +def test_truncated(): + with open(hive_truncated, 'rb') as f: + hive = Registry.RegistryHiveTruncated(f) + + for i in hive.scan(): + assert type(i) is Registry.RegistryKey + assert i.name() in [ '{6214ff27-7b1b-41a3-9ae4-5fb851ffed63}', 'key_with_many_subkeys' ] or int(i.name()) > 0 + +def test_effective_hbins_data_size(): + with open(hive_effective_size, 'rb') as f: + hive = Registry.RegistryHive(f) + + assert hive.registry_file.baseblock.effective_hbins_data_size == 487424 + assert hive.registry_file.baseblock.get_hbins_data_size() != hive.registry_file.baseblock.effective_hbins_data_size + +def test_log_discovery(): + for i in range(len(log_discovery)): + p = log_discovery[i] + a = RegistryHelpers.DiscoverLogFiles(p) + + assert a is not None + + if i == 0: + assert path.normcase(path.basename(a.log_path)) == path.normcase('aa.LOG') + assert path.normcase(path.basename(a.log1_path)) == path.normcase('aa.LOG1') + assert path.normcase(path.basename(a.log2_path)) == path.normcase('aa.LOG2') + elif i == 1: + assert a.log_path is None + assert path.normcase(path.basename(a.log1_path)) == path.normcase('aa.LOG1') + assert path.normcase(path.basename(a.log2_path)) == path.normcase('aa.LOG2') + elif i == 2: + assert path.normcase(path.basename(a.log_path)) == path.normcase('aa.log') + assert path.normcase(path.basename(a.log1_path)) == path.normcase('aa.log1') + assert a.log2_path is None + elif i == 3: + assert path.normcase(path.basename(a.log_path)) == path.normcase('aa.LOG') + + # These properties should be None if the file system is case-sensitive. + assert a.log1_path is None or path.normcase(path.basename(a.log1_path)) == path.normcase('aa.log1') + assert a.log2_path is None or path.normcase(path.basename(a.log2_path)) == path.normcase('aa.log2') + elif i == 4: + assert a.log_path is None + assert a.log1_path is None + assert a.log2_path is None + else: + assert False + +def test_deleted_tree_no_root_flag(): + with open(hive_deleted_tree_no_root_flag, 'rb') as f: + hive = Registry.RegistryHive(f) + + assert hive.root_key().key_node.get_flags() & RegistryRecords.KEY_HIVE_ENTRY == 0 + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + for i in scanner.scan(): + assert type(i) is Registry.RegistryKey + assert i.path() in [ '1\\2\\3', '1\\2\\3\\4', '1\\2\\3\\4\\5', '1\\2\\3\\4\\New Key #1' ] + assert i.path_partial() == i.path() + +def test_deleted_tree_partial_path(): + with open(hive_deleted_tree_partial_path, 'rb') as f: + hive = Registry.RegistryHive(f) + + hive.walk_everywhere() + + scanner = RegistryRecover.Scanner(hive) + for i in scanner.scan(): + assert type(i) is Registry.RegistryKey + assert i.path_partial() in [ '3', '3\\4', '3\\4\\5', '3\\4\\New Key #1' ] + +def test_flags_converter(): + cases = [ + {'log_entry_flags': 0, 'baseblock_flags': 0, 'result': 0}, + {'log_entry_flags': 1, 'baseblock_flags': 0, 'result': 1}, + {'log_entry_flags': 1, 'baseblock_flags': 1, 'result': 1}, + {'log_entry_flags': 0, 'baseblock_flags': 1, 'result': 0}, + {'log_entry_flags': 0, 'baseblock_flags': 3, 'result': 2}, + {'log_entry_flags': 1, 'baseblock_flags': 3, 'result': 3}, + {'log_entry_flags': 1, 'baseblock_flags': 2, 'result': 3} + ] + + for case in cases: + assert RegistryFile.LogEntryFlagsToBaseBlockFlags(case['log_entry_flags'], case['baseblock_flags']) == case['result'] + +def test_hive_save(): + def check_saved_hive(filepath): + with open(filepath, 'rb') as recovered: + hive_recovered = Registry.RegistryHive(recovered) + assert not hive_recovered.registry_file.baseblock.is_file_dirty + hive_recovered.walk_everywhere() + + tmp_file = path.join(HIVES_DIR, 'temphive_delete_me') + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + with pytest.raises(RegistryFile.NotSupportedException): + hive.registry_file.save_recovered_hive(tmp_file) + + with open(hive_dirty_old, 'rb') as primary, open(hive_dirty_old_log, 'rb') as log: + hive = Registry.RegistryHive(primary) + hive.recover_old(log) + hive.registry_file.save_recovered_hive(tmp_file) + check_saved_hive(tmp_file) + + with open(hive_dirty_new1, 'rb') as primary, open(hive_dirty_new1_log1, 'rb') as log1, open(hive_dirty_new1_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + hive.recover_new(log1, log2) + hive.registry_file.save_recovered_hive(tmp_file) + check_saved_hive(tmp_file) + + with open(hive_dirty_new2, 'rb') as primary, open(hive_dirty_new2_log1, 'rb') as log1, open(hive_dirty_new2_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + hive.recover_new(log1, log2) + hive.registry_file.save_recovered_hive(tmp_file) + check_saved_hive(tmp_file) + + with open(hive_bad_baseblock, 'rb') as primary, open(hive_bad_baseblock_log1, 'rb') as log1, open(hive_bad_baseblock_log2, 'rb') as log2: + hive = Registry.RegistryHive(primary) + hive.recover_auto(None, log1, log2) + hive.registry_file.save_recovered_hive(tmp_file) + check_saved_hive(tmp_file) + + remove(tmp_file) + +def test_slack(): + with open(record_nk, 'rb') as f: + buf = f.read() + r = RegistryRecords.KeyNode(buf) + assert r.get_slack() == b'SLCK' + + with open(record_vk, 'rb') as f: + buf = f.read() + r = RegistryRecords.KeyValue(buf) + assert r.get_slack() == b'SLCK' + + with open(record_sk, 'rb') as f: + buf = f.read() + r = RegistryRecords.KeySecurity(buf) + assert r.get_slack() == b'SLCK' + + with open(record_li, 'rb') as f: + buf = f.read() + r = RegistryRecords.IndexLeaf(buf) + assert r.get_slack() == b'SLCK' + + with open(record_lh, 'rb') as f: + buf = f.read() + r = RegistryRecords.HashLeaf(buf) + assert r.get_slack() == b'SLCK' + + with open(record_lf, 'rb') as f: + buf = f.read() + r = RegistryRecords.FastLeaf(buf) + assert r.get_slack() == b'SLCK' + + with open(record_ri, 'rb') as f: + buf = f.read() + r = RegistryRecords.IndexRoot(buf) + assert r.get_slack() == b'SLCK' + + with open(record_list, 'rb') as f: + buf = f.read() + r = RegistryRecords.KeyValuesList(buf, 3) + assert r.get_slack() == b'SLCK' + + r = RegistryRecords.SegmentsList(buf, 3) + assert r.get_slack() == b'SLCK' + + with open(record_db, 'rb') as f: + buf = f.read() + r = RegistryRecords.BigData(buf) + assert r.get_slack() == b'SLCK' + +def test_hive_slack(): + with open(hive_slack, 'rb') as f: + hive = Registry.RegistryHive(f) + + assert len(hive.effective_slack) == 0 + hive.walk_everywhere() + assert len(hive.effective_slack) > 0 + assert b'SLCK' in hive.effective_slack diff --git a/yarp-carver b/yarp-carver new file mode 100755 index 0000000..e785cc3 --- /dev/null +++ b/yarp-carver @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 + +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from yarp import RegistryCarve +import argparse +from collections import namedtuple +import os +import sys + +PROGRAM_NAME = 'yarp-carver' +PROGRAM_VERSION = '1.0.0-beta1' + +Arguments = namedtuple('Arguments', [ 'source_file', 'output_dir' ]) + +def parse_args(): + """Parse command line arguments and return a named tuple (Arguments).""" + + parser = argparse.ArgumentParser(prog = PROGRAM_NAME, description = 'Carve Windows registry files from a disk image (or a similar source).', add_help = False, prefix_chars = '-') + + group_main = parser.add_argument_group('Main arguments') + group_misc = parser.add_argument_group('Miscellaneous arguments') + + group_main.add_argument('file', help = 'a disk image') + group_main.add_argument('outdir', help = 'an output directory') + + group_misc.add_argument('--help', action = 'help', help = 'show this help message and exit') + group_misc.add_argument('--version', action = 'version', help = 'show the version number and exit', version = PROGRAM_VERSION) + + parsed_args = parser.parse_args() + + source_file = parsed_args.file + output_dir = parsed_args.outdir + + return Arguments(source_file = source_file, output_dir = output_dir) + +def make_sane_filename(filename): + for bad_char in [ '\x00', '/', '\\', ':' ]: + filename = filename.replace(bad_char, '') + + if filename == '': + filename = 'unknown' + + return filename + +args = parse_args() + +if not os.path.isdir(args.output_dir): + print('Output directory does not exist: {}'.format(args.output_dir), file = sys.stderr) + sys.exit(255) + +try: + f = open(args.source_file, 'rb') +except (OSError, IOError): + print('Source file cannot be opened: {}'.format(args.source_file), file = sys.stderr) + sys.exit(255) + +carver = RegistryCarve.Carver(f) +print('Offset\tSize\tTruncated\tFile name') +for carve_result in carver.carve(): + print('{}\t{}\t{}\t{}'.format(carve_result.offset, carve_result.size, carve_result.truncated, carve_result.filename)) + + regf_filename = carve_result.filename + if regf_filename.rfind('\\') != -1: + regf_filename = regf_filename.split('\\')[-1] + regf_filename = make_sane_filename(regf_filename) + + if carve_result.truncated: + output_filename = '{}_{}-truncated'.format(carve_result.offset, regf_filename) + else: + output_filename = '{}_{}'.format(carve_result.offset, regf_filename) + + output_file = os.path.join(args.output_dir, output_filename) + + with open(output_file, 'wb') as out_f: + f.seek(carve_result.offset) + buf = f.read(carve_result.size) + out_f.write(buf) + +f.close() diff --git a/yarp-print b/yarp-print new file mode 100755 index 0000000..a5f6240 --- /dev/null +++ b/yarp-print @@ -0,0 +1,304 @@ +#!/usr/bin/env python3 + +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from yarp import * +import argparse +from collections import namedtuple +import os +import sys + +PROGRAM_NAME = 'yarp-print' +PROGRAM_VERSION = '1.0.0-beta1' + +Arguments = namedtuple('Arguments', [ 'primary_file', 'do_recovery', 'do_deleted' ]) + +def parse_args(): + """Parse command line arguments and return a named tuple (Arguments).""" + + parser = argparse.ArgumentParser(prog = PROGRAM_NAME, description = 'Parse a Windows registry file, print all keys and values.', add_help = False, prefix_chars = '-') + + group_main = parser.add_argument_group('Main arguments') + group_opt = parser.add_argument_group('Optional arguments') + group_misc = parser.add_argument_group('Miscellaneous arguments') + + group_main.add_argument('file', help = 'a registry file (primary) to parse') + group_opt.add_argument('--no-recovery', action = 'store_true', help = 'do not discover and use transaction log files to recover the hive (in memory)') + group_opt.add_argument('--deleted', action = 'store_true', help = 'include deleted keys and values to the output') + + group_misc.add_argument('--help', action = 'help', help = 'show this help message and exit') + group_misc.add_argument('--version', action = 'version', help = 'show the version number and exit', version = PROGRAM_VERSION) + + parsed_args = parser.parse_args() + + primary_file = parsed_args.file + do_recovery = not parsed_args.no_recovery + do_deleted = parsed_args.deleted + + return Arguments(primary_file = primary_file, do_recovery = do_recovery, do_deleted = do_deleted) + +def print_hive_information(hive): + print('Last written timestamp (UTC): {}'.format(hive.last_written_timestamp())) + try: + print('Last reorganized timestamp (UTC): {}'.format(hive.last_reorganized_timestamp())) + except (ValueError, OverflowError): + pass + + print() + +def print_value(value): + value_name = value.name() + if value_name == '': + print('Default value') + else: + print('Value name: {}'.format(value_name)) + + print('Value type: {}'.format(value.type_str())) + print('Data size: {}'.format(value.data_size())) + + try: + data = value.data() + except UnicodeDecodeError: + data = value.data_raw() + + if type(data) is bytes: + print('Data (hexdump):') + print(RegistryHelpers.HexDump(data)) + elif type(data) is list: + print('Data (one list element per line):') + for element in data: + print(element) + else: + print('Data (decoded):') + print(data) + + print() + +def print_key(key): + key_path = key.path() + if key_path == '': + print('Root key') + else: + print('Key path: {}'.format(key_path)) + + classname = key.classname() + if classname is not None: + print('Class name: {}'.format(classname)) + + print('Last written timestamp (UTC): {}'.format(key.last_written_timestamp())) + print('Access bits: {}'.format(key.access_bits())) + + print() + + for value in key.values(): + print_value(value) + + print('---') + print() + +def print_key_recursive(key): + print_key(key) + + for subkey in key.subkeys(): + print_key_recursive(subkey) + +def print_deleted_value(value): + value_name = value.name() + if value_name == '': + print('Default value') + else: + print('Value name: {}'.format(value_name)) + + print('Value type: {}'.format(value.type_str())) + print('Data size: {}'.format(value.data_size())) + + try: + data = value.data() + except Registry.RegistryException: + data = None + except UnicodeDecodeError: + data = value.data_raw() + + if data is None: + print('Data not recovered') + else: + if type(data) is bytes: + print('Data (hexdump):') + print(RegistryHelpers.HexDump(data)) + elif type(data) is list: + print('Data (one list element per line):') + for element in data: + print(element) + else: + print('Data (decoded):') + print(data) + + print() + +def print_deleted_key(key): + try: + key_path = key.path() + except Registry.RegistryException: + key_path = None + + if key_path is None: + print('Unknown key path') + print('Partial key path: {}'.format(key.path_partial())) + print('Key name: {}'.format(key.name())) + else: + if key_path == '': + print('Root key') + else: + print('Key path: {}'.format(key_path)) + + try: + classname = key.classname() + except (Registry.RegistryException, UnicodeDecodeError): + classname = None + + if classname is not None: + print('Class name: {}'.format(classname)) + + try: + print('Last written timestamp (UTC): {}'.format(key.last_written_timestamp())) + except (ValueError, OverflowError): + print('Last written timestamp is not plausible') + + print('Access bits: {}'.format(key.access_bits())) + + print() + + try: + for value in key.values(): + print_deleted_value(value) + except Registry.RegistryException: + pass + + print('---') + print() + +# Currently, we can use functions for deleted keys and values to print keys and values in a truncated hive. +print_truncated_key = print_deleted_key +print_truncated_value = print_deleted_value + +args = parse_args() + +if not os.path.isfile(args.primary_file): + print('Primary file does not exist: {}'.format(args.primary_file), file = sys.stderr) + sys.exit(255) + +primary = open(args.primary_file, 'rb') + +try: + hive = Registry.RegistryHive(primary) +except (RegistryFile.BaseBlockException, RegistryFile.NotSupportedException): + raise +except Registry.RegistryException: + truncated = True +else: + truncated = False + +if truncated: + print('Primary file seems to be truncated, only available keys and values will be printed', file = sys.stderr) + hive = Registry.RegistryHiveTruncated(primary) + + print('Hive information:') + print() + print_hive_information(hive) + + print('Keys and values (allocated):') + print() + + all_values = [] + for item in hive.scan(): + if type(item) is Registry.RegistryValue: + all_values.append(item) + elif type(item) is Registry.RegistryKey: + print_truncated_key(item) + + print('All values (allocated):') + print() + for value in all_values: + print_truncated_value(value) + + if args.do_deleted: + print('Unallocated keys and values (may contain reallocated data):') + print() + + scanner = RegistryRecover.Scanner(hive, False) + deleted_values = [] + + for item in scanner.scan(): + if type(item) is Registry.RegistryKey: + print_deleted_key(item) + elif type(item) is Registry.RegistryValue: + deleted_values.append(item) + + print('Unallocated values (all, may contain reallocated data):') + print() + for value in deleted_values: + print_deleted_value(value) + + sys.exit(0) + +if args.do_recovery: + log_files = RegistryHelpers.DiscoverLogFiles(args.primary_file) + + log = None + if log_files.log_path is not None: + log = open(log_files.log_path, 'rb') + + log1 = None + if log_files.log1_path is not None: + log1 = open(log_files.log1_path, 'rb') + + log2 = None + if log_files.log2_path is not None: + log2 = open(log_files.log2_path, 'rb') + + try: + recovery_result = hive.recover_auto(log, log1, log2) + except Registry.AutoRecoveryException: + print('An error has occurred when recovering a hive using a transaction log', file = sys.stderr) + +hive.walk_everywhere() + +print('Hive information:') +print() +print_hive_information(hive) + +print('Keys and values:') +print() +print_key_recursive(hive.root_key()) + +if args.do_deleted: + print('Deleted keys and values (may contain reallocated data):') + print() + + scanner = RegistryRecover.Scanner(hive) + deleted_values = [] + + for item in scanner.scan(): + if type(item) is Registry.RegistryKey: + print_deleted_key(item) + elif type(item) is Registry.RegistryValue: + deleted_values.append(item) + + print('Deleted values (all, may contain reallocated data):') + print() + for value in deleted_values: + print_deleted_value(value) + +hive = None +primary.close() + +if args.do_recovery: + if log is not None: + log.close() + + if log1 is not None: + log1.close() + + if log2 is not None: + log2.close() diff --git a/yarp-timeline b/yarp-timeline new file mode 100755 index 0000000..f74b231 --- /dev/null +++ b/yarp-timeline @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 + +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from yarp import * +import argparse +from collections import namedtuple +import os +import sys + +PROGRAM_NAME = 'yarp-timeline' +PROGRAM_VERSION = '1.0.0-beta1' + +Arguments = namedtuple('Arguments', [ 'primary_file', 'faster' ]) +TimelineEntry = namedtuple('TimelineEntry', [ 'path_or_name', 'is_deleted', 'is_path_known', 'timestamp' ]) + +def parse_args(): + """Parse command line arguments and return a named tuple (Arguments).""" + + parser = argparse.ArgumentParser(prog = PROGRAM_NAME, description = 'Parse a Windows registry file, print the timeline for keys (including deleted ones).', add_help = False, prefix_chars = '-') + + group_main = parser.add_argument_group('Main arguments') + group_opt = parser.add_argument_group('Optional arguments') + group_misc = parser.add_argument_group('Miscellaneous arguments') + + group_main.add_argument('file', help = 'a registry file (primary) to parse') + + group_opt.add_argument('--fast', action = 'store_true', help = 'do not use intermediate states to extend the timeline when applying a transaction log (new format)') + + group_misc.add_argument('--help', action = 'help', help = 'show this help message and exit') + group_misc.add_argument('--version', action = 'version', help = 'show the version number and exit', version = PROGRAM_VERSION) + + parsed_args = parser.parse_args() + + primary_file = parsed_args.file + faster = parsed_args.fast + + return Arguments(primary_file = primary_file, faster = faster) + +keys_list = [] +def extend_keys_list(do_deleted = False): + def process_key(key): + global keys_list + + key_parsed = parse_key(key, False) + if key_parsed is not None and key_parsed not in keys_list: + keys_list.append(key_parsed) + + for subkey in key.subkeys(): + try: + process_key(subkey) + except Registry.RegistryException: + pass + + global hive + + process_key(hive.root_key()) + + if do_deleted: + global keys_list + + try: + hive.walk_everywhere() + except Registry.RegistryException: + return + + scanner = RegistryRecover.Scanner(hive) + for item in scanner.scan(): + if type(item) is Registry.RegistryKey: + key_parsed = parse_key(item, True) + if key_parsed is not None and key_parsed not in keys_list: + keys_list.append(key_parsed) + +def parse_key(key, is_deleted): + try: + path_or_name = key.path() + except Registry.RegistryException: + path_or_name = key.name() + is_path_known = False + else: + is_path_known = True + + try: + timestamp = key.last_written_timestamp() + except (ValueError, OverflowError): + return + + return TimelineEntry(path_or_name = path_or_name, is_deleted = is_deleted, is_path_known = is_path_known, timestamp = timestamp) + +def print_timeline_header(): + print('Registry file\tKey path/name\tIs deleted\tIs path known\tTimestamp (UTC)') + +def print_timeline_entry(entry, registry_file): + print('{}\t{}\t{}\t{}\t{}'.format(registry_file, entry.path_or_name, entry.is_deleted, entry.is_path_known, entry.timestamp)) + +def print_timeline(registry_file): + global keys_list + + print_timeline_header() + for entry in keys_list: + print_timeline_entry(entry, registry_file) + +args = parse_args() + +if not os.path.isfile(args.primary_file): + print('Primary file does not exist: {}'.format(args.primary_file), file = sys.stderr) + sys.exit(255) + +primary = open(args.primary_file, 'rb') +hive = Registry.RegistryHive(primary) + +extend_keys_list(True) # Extend the list of keys (including deleted ones) for the first time, before applying a transaction log. + +log_files = RegistryHelpers.DiscoverLogFiles(args.primary_file) + +log = None +if log_files.log_path is not None: + log = open(log_files.log_path, 'rb') + +log1 = None +if log_files.log1_path is not None: + log1 = open(log_files.log1_path, 'rb') + +log2 = None +if log_files.log2_path is not None: + log2 = open(log_files.log2_path, 'rb') + +if not args.faster: + hive.log_entry_callback = extend_keys_list # Extend the list of keys (without deleted ones) each time a log entry has been applied. + +try: + recovery_result = hive.recover_auto(log, log1, log2) +except Registry.AutoRecoveryException: + print('An error has occurred when recovering a hive using a transaction log', file = sys.stderr) +else: + if recovery_result.recovered and not recovery_result.is_new_log: + extend_keys_list() # Finally, extend the list of keys (without deleted ones) after an old transaction log file has been applied. + elif recovery_result.recovered and recovery_result.is_new_log and args.faster: + extend_keys_list() + +keys_list.sort(key = lambda x: x.timestamp, reverse = True) +print_timeline(args.primary_file) + +hive = None +primary.close() + +if log is not None: + log.close() + +if log1 is not None: + log1.close() + +if log2 is not None: + log2.close() diff --git a/yarp/Registry.py b/yarp/Registry.py new file mode 100644 index 0000000..858f156 --- /dev/null +++ b/yarp/Registry.py @@ -0,0 +1,858 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from .RegistryFile import RegistryException +from . import RegistryFile +from . import RegistryRecords +from struct import unpack +from datetime import datetime, timedelta +from collections import namedtuple + +ValueTypes = { +RegistryRecords.REG_NONE: 'REG_NONE', +RegistryRecords.REG_SZ: 'REG_SZ', +RegistryRecords.REG_EXPAND_SZ: 'REG_EXPAND_SZ', +RegistryRecords.REG_BINARY: 'REG_BINARY', +RegistryRecords.REG_DWORD: 'REG_DWORD', +RegistryRecords.REG_DWORD_BIG_ENDIAN: 'REG_DWORD_BIG_ENDIAN', +RegistryRecords.REG_LINK: 'REG_LINK', +RegistryRecords.REG_MULTI_SZ: 'REG_MULTI_SZ', +RegistryRecords.REG_RESOURCE_LIST: 'REG_RESOURCE_LIST', +RegistryRecords.REG_FULL_RESOURCE_DESCRIPTOR: 'REG_FULL_RESOURCE_DESCRIPTOR', +RegistryRecords.REG_RESOURCE_REQUIREMENTS_LIST: 'REG_RESOURCE_REQUIREMENTS_LIST', +RegistryRecords.REG_QWORD: 'REG_QWORD' +} + +AutoRecoveryResult = namedtuple('AutoRecoveryResult', [ 'recovered', 'is_new_log', 'file_objects' ]) + +class WalkException(RegistryException): + """This exception is raised when a walk error has occurred. + A walk error is a generic error when traversing registry records (entities). + """ + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class AutoRecoveryException(RegistryException): + """This exception is raised when a primary file cannot be recovered in the 'auto' mode. + In particular, when no recovery scheme has been found. + """ + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +def DecodeFiletime(Timestamp): + """Decode the FILETIME timestamp and return the datetime object.""" + + return datetime(1601, 1, 1) + timedelta(microseconds = Timestamp / 10) + +def DecodeUnicode(Buffer, RemoveGarbage = False): + """Decode the Unicode (UTF-16LE) string and return it. + When 'RemoveGarbage' is True, this function will attempt to sanitize a null-terminated Unicode string. + """ + + if RemoveGarbage and len(Buffer) > 2: + # Windows is using null-terminated Unicode strings, so we want to remove garbage, if any, after the end of the string. + pos = 0 + while pos < len(Buffer): + two_bytes = Buffer[pos : pos + 2] + if two_bytes == b'\x00\x00': + return Buffer[ : pos + 2].decode('utf-16le') # Include the null character to the output string. + + pos += 2 + + return Buffer.decode('utf-16le') + +def DecodeASCII(Buffer): + """Decode the ASCII (extended) string and return it.""" + + return Buffer.decode('latin-1') # This is equal to adding a null byte after each character, and then running .decode('utf-16le'). + +def DecodeUnicodeMulti(Buffer, RemoveGarbage = False): + """Decode the Unicode (UTF-16LE) array of null-terminated strings and return it as is. + When 'RemoveGarbage' is True, this function will attempt to sanitize a null-terminated Unicode array. + """ + + if RemoveGarbage and len(Buffer) > 4: + # We want to remove garbage, if any, after the end of the array (marker: 0x00 0x00 0x00 0x00). + pos = 0 + while pos < len(Buffer): + four_bytes = Buffer[pos : pos + 4] + if four_bytes == b'\x00\x00\x00\x00': + return DecodeUnicode(Buffer[ : pos + 4]) # Include the null characters to the output string. + + pos += 2 + + return DecodeUnicode(Buffer) + +class RegistryHive(object): + """This is a high-level class for a registry hive.""" + + registry_file = None + """A primary file of a hive (a RegistryFile.PrimaryFile object).""" + + log_entry_callback = None + """A callback function executed when a log entry has been applied.""" + + effective_slack = None + """A set of data strings from different slack space locations to be used in the deleted data recovery.""" + + def __init__(self, file_object, tolerate_minor_errors = True): + self.registry_file = RegistryFile.PrimaryFile(file_object, tolerate_minor_errors) + self.tolerate_minor_errors = tolerate_minor_errors + self.effective_slack = set() + + def root_key(self): + """Get and return a root key node (a RegistryKey object).""" + + return RegistryKey(self.registry_file, self.registry_file.get_root_cell(), 0, self.registry_file.baseblock.effective_root_cell_offset, self.tolerate_minor_errors) + + def last_written_timestamp(self): + """Get, decode and return a last written timestamp (a datetime object).""" + + return DecodeFiletime(self.registry_file.baseblock.effective_last_written_timestamp) + + def last_reorganized_timestamp(self): + """Get, decode and return a last reorganized timestamp (a datetime object).""" + + timestamp = self.registry_file.baseblock.effective_last_reorganized_timestamp + if timestamp is not None: + return DecodeFiletime(timestamp) + + def find_key(self, path): + """Find a key node by its path (without a name of a root key), return a key node (a RegistryKey object) or None, if not found.""" + + if path == '\\' or len(path) == 0: + return self.root_key() + + if path[0] == '\\': + path = path[1 : ] + + current_key = self.root_key() + path_components = path.split('\\') + + i = 0 + while i < len(path_components) and current_key is not None: + current_key = current_key.subkey(path_components[i]) + i += 1 + + return current_key + + def recover_new(self, file_object_log_or_log1, file_object_log2 = None): + """Recover a primary file using a single transaction log file or two transaction log files. + When 'file_object_log2' is None, a single transaction log file is used. + Transaction log files should be in the new format. + """ + + if file_object_log2 is None: + self.registry_file.apply_new_log_file(file_object_log_or_log1, self.log_entry_callback) + else: + self.registry_file.apply_new_log_files(file_object_log_or_log1, file_object_log2, self.log_entry_callback) + + def recover_old(self, file_object_log): + """Recover a primary file using a single transaction log file. + A transaction log file should be in the old format. + """ + + self.registry_file.apply_old_log_file(file_object_log) + + def recover_auto(self, file_object_log, file_object_log1, file_object_log2): + """Recover a primary file using one, two or three candidate transaction log files (the 'auto' mode). + The format of transaction log files (new or old) and the logging scheme (single-logging or dual-logging) are guessed. + If a transaction log file with a corresponding extension (.LOG/.LOG1/.LOG2) is not present, use None as an argument for that file. + If a primary file is not dirty, no exception is raised. A named tuple (AutoRecoveryResult) is returned. + """ + + def try_log(file_object_log, log_class): + if file_object_log is None: + return + + try: + log = log_class(file_object_log) + except (RegistryFile.ReadException, RegistryFile.BaseBlockException, RegistryFile.FileSizeException, RegistryFile.NotSupportedException, RegistryFile.DirtyVectorException): + return + else: + return log + + if not self.registry_file.baseblock.is_file_dirty: + return AutoRecoveryResult(recovered = False, is_new_log = None, file_objects = None) + + log, log1, log2 = file_object_log, file_object_log1, file_object_log2 + use_log = log is not None + + if (log1 is not None and log2 is None) or (log1 is None and log2 is not None): + raise AutoRecoveryException('No valid recovery scheme possible') + + if use_log and log1 is None and log2 is None: + # This is the single-logging scheme. + log_new = try_log(log, RegistryFile.NewLogFile) + if log_new is not None: + self.recover_new(log) + return AutoRecoveryResult(recovered = True, is_new_log = True, file_objects = [log]) + + log_old = try_log(log, RegistryFile.OldLogFile) + if log_old is not None: + self.recover_old(log) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log]) + + if use_log: + log_new = try_log(log, RegistryFile.NewLogFile) + log1_new = try_log(log1, RegistryFile.NewLogFile) + log2_new = try_log(log2, RegistryFile.NewLogFile) + + if use_log: + log_old = try_log(log, RegistryFile.OldLogFile) + log1_old = try_log(log1, RegistryFile.OldLogFile) + log2_old = try_log(log2, RegistryFile.OldLogFile) + + # We prefer the new format and the dual-logging scheme. + if log1_new is not None and log2_new is not None: + self.recover_new(log1, log2) + return AutoRecoveryResult(recovered = True, is_new_log = True, file_objects = [log1, log2]) + + if log1_new is not None: + self.recover_new(log1) + return AutoRecoveryResult(recovered = True, is_new_log = True, file_objects = [log1]) + + if log2_new is not None: + self.recover_new(log2) + return AutoRecoveryResult(recovered = True, is_new_log = True, file_objects = [log2]) + + # Now, try the single-logging scheme for the new format. + if use_log and log_new is not None: + self.recover_new(log) + return AutoRecoveryResult(recovered = True, is_new_log = True, file_objects = [log]) + + # Now, switch to the old format (we still prefer the dual-logging scheme). + if log1_old is not None and log2_old is not None: + log1_timestamp = log1_old.baseblock.effective_last_written_timestamp + log2_timestamp = log2_old.baseblock.effective_last_written_timestamp + if log1_timestamp >= log2_timestamp: # Select the latest log. + self.recover_old(log1) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log1]) + else: + self.recover_old(log2) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log2]) + + if log1_old is not None: + self.recover_old(log1) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log1]) + + if log2_old is not None: + self.recover_old(log2) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log2]) + + # Now, try the single-logging scheme. + if use_log and log_old is not None: + self.recover_old(log) + return AutoRecoveryResult(recovered = True, is_new_log = False, file_objects = [log]) + + # We failed. + raise AutoRecoveryException('No obvious recovery scheme found') + + def save_recovered_hive(self, filepath): + """Save the recovered hive to a new primary file (using its path).""" + + self.registry_file.save_recovered_hive(filepath) + + def rollback_changes(self): + """Discard recovered data and use a primary file as is.""" + + self.registry_file.discard_writable_file_object() + + def walk_everywhere(self): + """Visit and record each referenced cell, collect the slack space data. This will also ensure that a hive is consistent.""" + + def process_key(key): + security = key.security() + if security is not None: + security_descriptor = security.descriptor() + + classname = key.classname() + + for value in key.values(): + value_data_raw = value.data_raw() + + for subkey in key.subkeys(): + process_key(subkey) + + for slack in key.effective_slack: + if len(slack) >= 4: # Skip the slack space data if it is less than 4 bytes. + self.effective_slack.add(slack) + + self.registry_file.record_referenced_cells = True + try: + process_key(self.root_key()) + except RegistryException: + self.registry_file.record_referenced_cells = False + raise + + self.registry_file.record_referenced_cells = False + + self.registry_file.build_map_free() + +class RegistryKey(object): + """This is a high-level class for a registry key.""" + + registry_file = None + """A primary file of a hive (a RegistryFile.PrimaryFile object).""" + + key_node = None + """A KeyNode object.""" + + effective_slack = None + """A set of data strings from different slack space locations to be used in the deleted data recovery.""" + + def __init__(self, primary_file, buf, layer, relative_cell_offset, tolerate_minor_errors = False, naive = False): + """When working with deleted registry keys, set 'naive' to True, 'relative_cell_offset' and 'layer' to None. + For a root key, set 'layer' to 0 (increment 'layer' by one when going to subkeys of a current key and decrement it by one when going to a parent key). + """ + + self.registry_file = primary_file + self.naive = naive + if not self.naive: + self.get_cell = self.registry_file.get_cell + else: + self.get_cell = self.registry_file.get_cell_naive + + self.key_node = RegistryRecords.KeyNode(buf) + self.relative_cell_offset = relative_cell_offset + self.layer = layer + self.tolerate_minor_errors = tolerate_minor_errors + self.effective_slack = set() + + def last_written_timestamp(self): + """Get, decode and return a last written timestamp (a datetime object).""" + + return DecodeFiletime(self.key_node.get_last_written_timestamp()) + + def access_bits(self): + """Get and return access bits.""" + + if self.registry_file.baseblock.effective_version == 1: + return + + return self.key_node.get_access_bits() + + def name(self): + """Get, decode and return a key name string.""" + + name_buf = self.key_node.get_key_name() + is_ascii = self.registry_file.baseblock.effective_version > 1 and self.key_node.get_flags() & RegistryRecords.KEY_COMP_NAME > 0 + if is_ascii: + name = DecodeASCII(name_buf) + else: + name = DecodeUnicode(name_buf) + + if name.find('\\') != -1: + if not self.naive: + raise WalkException('Key node does not have a valid name, key path: {}'.format(self.path())) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Key node does not have a valid name') + + return name + + def classname(self): + """Get, decode and return a class name string.""" + + classname_length = self.key_node.get_classname_length() + if classname_length > 0: + classname_buf = self.get_cell(self.key_node.get_classname_offset()) + return DecodeUnicode(classname_buf[ : classname_length]) + + def parent(self): + """Get and return a parent key node (a RegistryKey object).""" + + if self.layer == 0: + # This is the root key. + return + + if self.layer is None and (self.key_node.get_flags() & RegistryRecords.KEY_HIVE_ENTRY > 0 or self.relative_cell_offset == self.registry_file.baseblock.effective_root_cell_offset): + # This is the root key. + return + + parent_offset = self.key_node.get_parent() + parent_buf = self.get_cell(parent_offset) + + layer_up = None + if self.layer is not None: + layer_up = self.layer - 1 + + parent_key_node = RegistryKey(self.registry_file, parent_buf, layer_up, parent_offset, self.tolerate_minor_errors, self.naive) + + return parent_key_node + + def path(self, show_root = False): + """Construct and return a path to a key node. + When 'show_root' is True, a name of a root key node is included. + """ + + path_components = [ self.name() ] + + if self.naive: + track = set() + track.add(self.key_node.get_parent()) + + p = self.parent() + while p is not None: + if self.naive: + p_parent = p.key_node.get_parent() + if p_parent in track: + raise WalkException('Invalid path when following parent keys') + + track.add(p_parent) + + path_components.append(p.name()) + p = p.parent() + + path_components.reverse() + if not show_root: + path_components = path_components[ 1 : ] + + return '\\'.join(path_components) + + def path_partial(self, show_root = False): + """Construct and return a path (possibly a partial one) to a key node. + When 'show_root' is True, a name of a root key node is included. + """ + + path_components = [ self.name() ] + + if self.naive: + track = set() + track.add(self.key_node.get_parent()) + + try: + p = self.parent() + while p is not None: + if self.naive: + p_parent = p.key_node.get_parent() + if p_parent in track: + raise WalkException('Invalid path when following parent keys') + + track.add(p_parent) + + path_components.append(p.name()) + p = p.parent() + except RegistryException: + root_found = False + else: + root_found = True + + path_components.reverse() + if root_found and not show_root: + path_components = path_components[ 1 : ] + + return '\\'.join(path_components) + + def subkeys(self): + """This method yields subkeys (RegistryKey objects).""" + + subkeys_names = set() + + def process_leaf(leaf_buf): + leaf_signature = leaf_buf[ : 2] + + if leaf_signature == b'li': + leaf = RegistryRecords.IndexLeaf(leaf_buf) + elif leaf_signature == b'lf': + leaf = RegistryRecords.FastLeaf(leaf_buf) + else: # b'lh' + leaf = RegistryRecords.HashLeaf(leaf_buf) + + slack = leaf.get_slack() + self.effective_slack.add(slack) + + layer_down = None + if self.layer is not None: + layer_down = self.layer + 1 + + if type(leaf) is RegistryRecords.IndexLeaf: + for leaf_element in leaf.elements(): + subkey_offset = leaf_element.relative_offset + + buf = self.get_cell(subkey_offset) + subkey = RegistryKey(self.registry_file, buf, layer_down, subkey_offset, self.tolerate_minor_errors, self.naive) + if self.relative_cell_offset is not None and subkey.key_node.get_parent() != self.relative_cell_offset: + if not self.naive: + raise WalkException('Key node does not point to a valid parent key node, key path: {}, name: {}'.format(self.path(), subkey.name())) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Key node does not point to a valid parent key node') + + yield subkey + + if type(leaf) is RegistryRecords.FastLeaf: + for leaf_element in leaf.elements(): + subkey_offset = leaf_element.relative_offset + + buf = self.get_cell(subkey_offset) + subkey = RegistryKey(self.registry_file, buf, layer_down, subkey_offset, self.tolerate_minor_errors, self.naive) + if self.relative_cell_offset is not None and subkey.key_node.get_parent() != self.relative_cell_offset: + if not self.naive: + raise WalkException('Key node does not point to a valid parent key node, key path: {}, name: {}'.format(self.path(), subkey.name())) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Key node does not point to a valid parent key node') + + yield subkey + + if type(leaf) is RegistryRecords.HashLeaf: + for leaf_element in leaf.elements(): + subkey_offset = leaf_element.relative_offset + + buf = self.get_cell(subkey_offset) + subkey = RegistryKey(self.registry_file, buf, layer_down, subkey_offset, self.tolerate_minor_errors, self.naive) + if self.relative_cell_offset is not None and subkey.key_node.get_parent() != self.relative_cell_offset: + if not self.naive: + raise WalkException('Key node does not point to a valid parent key node, key path: {}, name: {}'.format(self.path(), subkey.name())) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Key node does not point to a valid parent key node') + + yield subkey + + + if self.key_node.get_subkeys_count() > 0: + list_offset = self.key_node.get_subkeys_list_offset() + list_buf = self.get_cell(list_offset) + list_signature = list_buf[ : 2] + + prev_name = None + + if list_signature == b'ri': + index_root = RegistryRecords.IndexRoot(list_buf) + + slack = index_root.get_slack() + self.effective_slack.add(slack) + + for leaf_offset in index_root.elements(): + list_buf = self.get_cell(leaf_offset) + for subkey in process_leaf(list_buf): + curr_name = subkey.name().upper() + if curr_name not in subkeys_names: + subkeys_names.add(curr_name) + else: + if not self.naive: + raise WalkException('Duplicate subkey, key path: {}, name: {}'.format(self.path(), curr_name)) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Duplicate subkey') + + if prev_name is not None and curr_name <= prev_name: + if not self.naive: + raise WalkException('Wrong order of subkeys, key path: {}, offending name: {}'.format(self.path(), curr_name)) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Wrong order of subkeys') + + prev_name = curr_name + + yield subkey + else: + for subkey in process_leaf(list_buf): + curr_name = subkey.name().upper() + if curr_name not in subkeys_names: + subkeys_names.add(curr_name) + else: + if not self.naive: + raise WalkException('Duplicate subkey, key path: {}, name: {}'.format(self.path(), curr_name)) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Duplicate subkey') + + if prev_name is not None and curr_name <= prev_name: + if not self.naive: + raise WalkException('Wrong order of subkeys, key path: {}, offending name: {}'.format(self.path(), curr_name)) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Wrong order of subkeys') + + prev_name = curr_name + + yield subkey + + def subkey(self, name): + """This method returns a subkey by its name (a RegistryKey object) or None, if not found.""" + + name = name.lower() + for current_subkey in self.subkeys(): + curr_name = current_subkey.name().lower() + if name == curr_name: + return current_subkey + + def subkeys_count(self): + """Get and return a number of subkeys. Volatile subkeys are not counted.""" + + return self.key_node.get_subkeys_count() + + def values(self): + """This method yields key values (RegistryValue objects).""" + + values_names = set() + + values_count = self.key_node.get_key_values_count() + if values_count > 0 and self.key_node.get_flags() & RegistryRecords.KEY_PREDEF_HANDLE == 0: + list_offset = self.key_node.get_key_values_list_offset() + list_buf = self.get_cell(list_offset) + + values_list = RegistryRecords.KeyValuesList(list_buf, values_count) + + slack = values_list.get_slack() + self.effective_slack.add(slack) + + for value_offset in values_list.elements(): + buf = self.get_cell(value_offset) + curr_value = RegistryValue(self.registry_file, buf, self.naive) + curr_name = curr_value.name().lower() + if curr_name not in values_names: + values_names.add(curr_name) + else: + if not self.naive: + raise WalkException('Duplicate value name, key path: {}, value name: {}'.format(self.path(), curr_name)) + else: + # Do not build the path, if we are trying to recover a key node. + raise WalkException('Duplicate value name') + + yield curr_value + + def value(self, name = ''): + """This method returns a key value by its name (a RegistryValue object) or None, if not found. + When 'name' is empty, a default value is returned (if any). + """ + + name = name.lower() + + for curr_value in self.values(): + curr_name = curr_value.name().lower() + if name == curr_name: + return curr_value + + def values_count(self): + """Get and return a number of key values.""" + + if self.key_node.get_flags() & RegistryRecords.KEY_PREDEF_HANDLE > 0: + return 0 + + return self.key_node.get_key_values_count() + + def security(self): + """Get and return a key security item (a RegistrySecurity object).""" + + key_security_offset = self.key_node.get_key_security_offset() + if key_security_offset != RegistryFile.CELL_OFFSET_NIL: + buf = self.get_cell(key_security_offset) + return RegistrySecurity(self.registry_file, buf) + + def __str__(self): + return 'RegistryKey, name: {}, subkeys: {}, values: {}'.format(self.name(), self.subkeys_count(), self.values_count()) + +class RegistrySecurity(object): + """This is a high-level class for a key security item.""" + + registry_file = None + """A primary file of a hive (a RegistryFile.PrimaryFile object).""" + + key_security = None + """A KeySecurity object.""" + + def __init__(self, primary_file, buf): + self.registry_file = primary_file + + self.key_security = RegistryRecords.KeySecurity(buf) + + def descriptor(self): + """Get and return a security descriptor (as raw bytes).""" + + return self.key_security.get_security_descriptor() + +class RegistryValue(object): + """This is a high-level class for a registry value.""" + + registry_file = None + """A primary file of a hive (a RegistryFile.PrimaryFile object).""" + + key_value = None + """A KeyValue object.""" + + def __init__(self, primary_file, buf, naive = False): + """When working with deleted registry values, set 'naive' to True.""" + + self.registry_file = primary_file + if not naive: + self.get_cell = self.registry_file.get_cell + else: + self.get_cell = self.registry_file.get_cell_naive + + self.key_value = RegistryRecords.KeyValue(buf) + + def name(self): + """Get, decode and return a value name string.""" + + name_buf = self.key_value.get_value_name() + is_ascii = self.registry_file.baseblock.effective_version > 1 and self.key_value.get_flags() & RegistryRecords.VALUE_COMP_NAME > 0 + if is_ascii: + return DecodeASCII(name_buf) + + return DecodeUnicode(name_buf) + + def type_raw(self): + """Get and return a value type (as an integer).""" + + return self.key_value.get_data_type() + + def type_str(self): + """Get, decode and return a value type (as a string).""" + + value_type = self.key_value.get_data_type() + if value_type in ValueTypes.keys(): + return ValueTypes[value_type] + else: + return hex(value_type) + + def data_size(self): + """Get and return a data size.""" + + return self.key_value.get_data_size_real() + + def data_raw(self): + """Get and return data (as raw bytes).""" + + if self.key_value.get_data_size_real() == 0: + return b'' + + if self.key_value.is_data_inline(): + return self.key_value.get_inline_data()[ : self.key_value.get_data_size_real()] + + is_big_data = self.registry_file.baseblock.effective_version > 3 and self.key_value.get_data_size_real() > 16344 + if not is_big_data: + return self.get_cell(self.key_value.get_data_offset())[ : self.key_value.get_data_size_real()] + + big_data_buf = self.get_cell(self.key_value.get_data_offset()) + big_data = RegistryRecords.BigData(big_data_buf) + + segments_list_offset = big_data.get_segments_list_offset() + segments_count = big_data.get_segments_count() + + segments_list = RegistryRecords.SegmentsList(self.get_cell(segments_list_offset), segments_count) + + data = b'' + data_length = self.key_value.get_data_size_real() + for segment_offset in segments_list.elements(): + buf = self.get_cell(segment_offset) + + if data_length > 16344: + data_part = buf[ : 16344] + if len(data_part) != 16344: + raise WalkException('Invalid segment size: {} != 16344'.format(len(data_part))) + + data += data_part + data_length -= 16344 + else: + data += buf[ : data_length] + break + + return data + + def data(self): + """Get, decode and return data (as an integer, a string, a list of strings, or raw bytes). + A string may contain a terminating null character. + """ + + data_raw = self.data_raw() + data_length = len(data_raw) + type_int = self.type_raw() + + if type_int == RegistryRecords.REG_DWORD and data_length == 4: + return unpack('L', data_raw)[0] + + if type_int == RegistryRecords.REG_QWORD and data_length == 8: + return unpack(' 1: + return DecodeUnicode(data_raw, True) + + if type_int == RegistryRecords.REG_LINK and data_length % 2 == 0 and data_length > 1: + return DecodeUnicode(data_raw) + + if type_int == RegistryRecords.REG_MULTI_SZ and data_length % 2 == 0 and data_length > 1: + sz_list_data = DecodeUnicodeMulti(data_raw, True) + if sz_list_data == '\x00': + return [] + + if len(sz_list_data) > 2 and sz_list_data[-1] == '\x00' and sz_list_data[-2] == '\x00': + sz_list = sz_list_data[ : -1].split('\x00') + + i = 0 + while i < len(sz_list): + sz_list[i] += '\x00' # Restore the terminating null characters. + i += 1 + + return sz_list + + return data_raw + + def __str__(self): + name = self.name() + if len(name) > 0: + return 'RegistryValue, name: {}, data type: {}, data size: {}'.format(name, self.type_str(), self.data_size()) + else: + return 'RegistryValue, default value (no name), data type: {}, data size: {}'.format(self.type_str(), self.data_size()) + +class RegistryHiveTruncated(object): + """This is a high-level class for a truncated registry hive.""" + + registry_file = None + """A primary file of a hive (a RegistryFile.PrimaryFileTruncated object).""" + + def __init__(self, file_object): + self.registry_file = RegistryFile.PrimaryFileTruncated(file_object) + self.effective_slack = set() + + def last_written_timestamp(self): + """Get, decode and return a last written timestamp (a datetime object).""" + + return DecodeFiletime(self.registry_file.baseblock.effective_last_written_timestamp) + + def last_reorganized_timestamp(self): + """Get, decode and return a last reorganized timestamp (a datetime object).""" + + timestamp = self.registry_file.baseblock.effective_last_reorganized_timestamp + if timestamp is not None: + return DecodeFiletime(timestamp) + + def scan(self): + """This method yields RegistryKey objects for keys and RegistryValue objects for values.""" + + for cell in self.registry_file.cells(): + cell_absolute_size = cell.get_absolute_size() + if cell_absolute_size > 76: # A key node with at least one character in the name. + cell_data = cell.get_cell_data() + try: + key = RegistryKey(self.registry_file, cell_data, None, None, True, False) + key_name = key.name() + except (RegistryException, UnicodeDecodeError): + pass + else: + yield key + elif cell_absolute_size >= 20: # A key value with no name (at least). + cell_data = cell.get_cell_data() + try: + value = RegistryValue(self.registry_file, cell_data, False) + value_name = value.name() + except (RegistryException, UnicodeDecodeError): + pass + else: + yield value diff --git a/yarp/RegistryCarve.py b/yarp/RegistryCarve.py new file mode 100644 index 0000000..59a2c52 --- /dev/null +++ b/yarp/RegistryCarve.py @@ -0,0 +1,188 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from . import RegistryFile +from .Registry import DecodeUnicode +from struct import unpack +from collections import namedtuple + +CarveResult = namedtuple('CarveResult', [ 'offset', 'size', 'truncated', 'truncation_point', 'truncation_scenario', 'filename' ]) +BaseBlockCheckResult = namedtuple('BaseBlockCheckResult', [ 'is_valid', 'hbins_data_size', 'filename', 'old_cells' ]) +HiveBinCheckResult = namedtuple('HiveBinCheckResult', [ 'is_valid', 'size' ]) +CellsCheckResult = namedtuple('CellsCheckResult', [ 'are_valid', 'truncation_point_relative' ]) + +SECTOR_SIZE = 512 # This is an assumed sector size. +FILE_MARGIN_SIZE = 4*1024*1024 # We will read more bytes than specified in the base block to account possible damage scenarios. +FILE_SIZE_MAX_MIB = 500 # We do not expect primary files to be larger than this (in MiB). + +def CheckBaseBlockOfPrimaryFile(Buffer): + """Check if Buffer contains a valid base block of a primary file and a hive bin, return a named tuple (BaseBlockCheckResult).""" + + if len(Buffer) < RegistryFile.BASE_BLOCK_LENGTH_PRIMARY + RegistryFile.HIVE_BIN_SIZE_ALIGNMENT: + return BaseBlockCheckResult(is_valid = False, hbins_data_size = None, filename = None, old_cells = None) + + signature, __, __, __, major_version, minor_version, file_type, file_format, __, hbins_data_size, clustering_factor = unpack('<4sLLQLLLLLLL', Buffer[ : 48]) + + if (signature == b'regf' and major_version in RegistryFile.MAJOR_VERSION_NUMBERS_SUPPORTED and minor_version in RegistryFile.MINOR_VERSION_NUMBERS_SUPPORTED and + file_type == RegistryFile.FILE_TYPE_PRIMARY and file_format == RegistryFile.FILE_FORMAT_DIRECT_MEMORY_LOAD and clustering_factor == RegistryFile.FILE_CLUSTERING_FACTOR and + hbins_data_size >= RegistryFile.HIVE_BIN_SIZE_ALIGNMENT and hbins_data_size % RegistryFile.HIVE_BIN_SIZE_ALIGNMENT == 0 and + RegistryFile.BASE_BLOCK_LENGTH_PRIMARY + hbins_data_size <= FILE_SIZE_MAX_MIB * 1024 * 1024): + + log_signature = Buffer[RegistryFile.BASE_BLOCK_LENGTH_LOG : RegistryFile.BASE_BLOCK_LENGTH_LOG + 4] + hbin_signature = Buffer[RegistryFile.BASE_BLOCK_LENGTH_PRIMARY : RegistryFile.BASE_BLOCK_LENGTH_PRIMARY + 4] + if log_signature != b'DIRT' and log_signature != b'HvLE' and hbin_signature == b'hbin': + try: + filename = DecodeUnicode(Buffer[48 : 48 + 64], True).rstrip('\x00') + except UnicodeDecodeError: + pass + else: + old_cells = minor_version in RegistryFile.MINOR_VERSION_NUMBERS_FOR_OLD_CELL_FORMAT + return BaseBlockCheckResult(is_valid = True, hbins_data_size = hbins_data_size, filename = filename, old_cells = old_cells) + + return BaseBlockCheckResult(is_valid = False, hbins_data_size = None, filename = None, old_cells = None) + +def CheckHiveBin(Buffer, ExpectedOffsetRelative): + """Check if Buffer contains a valid hive bin (without checking its cells), return a named tuple (HiveBinCheckResult).""" + + if len(Buffer) < RegistryFile.HIVE_BIN_SIZE_ALIGNMENT: + return HiveBinCheckResult(is_valid = False, size = None) + + signature, offset, size = unpack('<4sLL', Buffer[ : 12]) + if signature == b'hbin' and offset == ExpectedOffsetRelative and size >= RegistryFile.HIVE_BIN_SIZE_ALIGNMENT and size % RegistryFile.HIVE_BIN_SIZE_ALIGNMENT == 0: + return HiveBinCheckResult(is_valid = True, size = size) + + return HiveBinCheckResult(is_valid = False, size = None) + +def CheckCellsOfHiveBin(Buffer, OldCells = False): + """Check if Buffer contains a hive bin with valid cells (new format), return a named tuple (CellsCheckResult). A hive bin's header is not checked.""" + + curr_pos_relative = 32 + while curr_pos_relative < len(Buffer): + four_bytes = Buffer[curr_pos_relative : curr_pos_relative + 4] + if len(four_bytes) < 4: + return CellsCheckResult(are_valid = False, truncation_point_relative = curr_pos_relative) + + cell_size, = unpack(' regf_size: + regf_size = curr_pos_relative # Adjust the file size to include an unforeseeably large hive bin. + break + + hbin_buf_partial = regf_buf[curr_pos_relative : curr_pos_relative + RegistryFile.HIVE_BIN_SIZE_ALIGNMENT] + check_result_hbin = CheckHiveBin(hbin_buf_partial, expected_hbin_offset_relative) + if not check_result_hbin.is_valid: + truncation_point = regf_offset + curr_pos_relative + regf_size = curr_pos_relative # Adjust the file size according to the truncation point. + break + + last_hbin_buf = regf_buf[curr_pos_relative : curr_pos_relative + check_result_hbin.size] + + curr_pos_relative += check_result_hbin.size + expected_hbin_offset_relative += check_result_hbin.size + + if last_hbin_buf is None: + # No valid hive bins found. + pos += SECTOR_SIZE + continue + + if truncation_point is None: + # Probably no truncation. + check_result_cells = CheckCellsOfHiveBin(last_hbin_buf, check_result.old_cells) + if check_result_cells.are_valid: + # No truncation. + yield CarveResult(offset = regf_offset, size = regf_size, truncated = False, truncation_point = None, truncation_scenario = 0, + filename = check_result.filename) + else: + # Truncation within the last hive bin. + truncation_point = regf_offset + regf_size - len(last_hbin_buf) + check_result_cells.truncation_point_relative + truncation_point = truncation_point // SECTOR_SIZE * SECTOR_SIZE # Adjust the truncation point according to the sector size. + regf_size = truncation_point - regf_offset # Adjust the file size according to the truncation point. + + yield CarveResult(offset = regf_offset, size = regf_size, truncated = True, truncation_point = truncation_point, truncation_scenario = 2, + filename = check_result.filename) + else: + # Obvious truncation. + check_result_cells = CheckCellsOfHiveBin(last_hbin_buf, check_result.old_cells) + if check_result_cells.are_valid: + # Truncation at a boundary of a hive bin. + yield CarveResult(offset = regf_offset, size = regf_size, truncated = True, truncation_point = truncation_point, truncation_scenario = 1, + filename = check_result.filename) + else: + # Truncation within a hive bin. + truncation_point = regf_offset + regf_size - len(last_hbin_buf) + check_result_cells.truncation_point_relative + truncation_point = truncation_point // SECTOR_SIZE * SECTOR_SIZE # Adjust the truncation point according to the sector size. + regf_size = truncation_point - regf_offset # Adjust the file size according to the truncation point. + + yield CarveResult(offset = regf_offset, size = regf_size, truncated = True, truncation_point = truncation_point, truncation_scenario = 3, + filename = check_result.filename) + + if regf_size % SECTOR_SIZE == 0: + pos += regf_size + else: + pos += regf_size + SECTOR_SIZE - regf_size % SECTOR_SIZE + + continue + + pos += SECTOR_SIZE diff --git a/yarp/RegistryFile.py b/yarp/RegistryFile.py new file mode 100644 index 0000000..27a4e3d --- /dev/null +++ b/yarp/RegistryFile.py @@ -0,0 +1,1290 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from struct import unpack, pack +from ctypes import c_uint32 +from io import BytesIO +from shutil import copyfileobj +from collections import namedtuple + +MAJOR_VERSION_NUMBERS_SUPPORTED = set([1]) +MINOR_VERSION_NUMBERS_SUPPORTED = set([1, 2, 3, 4, 5, 6]) + +MINOR_VERSION_NUMBERS_FOR_OLD_CELL_FORMAT = set([1]) +MINOR_VERSION_NUMBERS_FOR_NEW_CELL_FORMAT = set(MINOR_VERSION_NUMBERS_SUPPORTED - MINOR_VERSION_NUMBERS_FOR_OLD_CELL_FORMAT) + +FILE_TYPE_PRIMARY = 0 # Primary (normal) file. +FILE_TYPE_LOG_OLD = 1 # Transaction log file (old format). +FILE_TYPE_LOG_VERYOLD = 2 # Transaction log file (the same old format, but with a different type number). +FILE_TYPE_LOG_NEW = 6 # Transaction log file (new format). +FILE_TYPES_SUPPORTED = set([FILE_TYPE_PRIMARY, FILE_TYPE_LOG_OLD, FILE_TYPE_LOG_VERYOLD, FILE_TYPE_LOG_NEW]) + +FILE_FORMAT_DIRECT_MEMORY_LOAD = 1 + +BASE_BLOCK_LENGTH_PRIMARY = 4096 +FILE_CLUSTERING_FACTOR = 1 # This is the only value expected (even when the sector size is not 512 bytes). +BASE_BLOCK_LENGTH_LOG = 512 * FILE_CLUSTERING_FACTOR + +MARVIN32_SEED = 0x82EF4D887A4E55C5 # This is the seed for log entries. + +HIVE_BIN_SIZE_ALIGNMENT = 4096 + +CELL_OFFSET_NIL = 0xFFFFFFFF +CELL_SIZE_MAX_NAIVE = 10 * 1024 * 1024 + +DirtyPageMeta = namedtuple('DirtyPageMeta', [ 'relative_offset_primary', 'relative_offset_log' ]) +DirtyPageReference = namedtuple('DirtyPageReference', [ 'relative_offset_primary', 'size' ]) + +def Marvin32(Buffer, Seed = MARVIN32_SEED): + """Calculate and return the Marvin32 hash (64 bits) of Buffer.""" + + def ROTL(X, N, W): + return (X.value << N) | (X.value >> (W - N)) + + def Mix(State, Val): + lo, hi = State + lo.value += Val.value + hi.value ^= lo.value + lo.value = ROTL(lo, 20, 32) + hi.value + hi.value = ROTL(hi, 9, 32) ^ lo.value + lo.value = ROTL(lo, 27, 32) + hi.value + hi.value = ROTL(hi, 19, 32) + return (lo, hi) + + lo = c_uint32(Seed) + hi = c_uint32(Seed >> 32) + state = (lo, hi) + + length = len(Buffer) + pos = 0 + val = c_uint32() + + while length >= 4: + val.value = unpack(' 0: + if BaseBlockFlags & 1 == 0: + BaseBlockFlags += 1 + else: + if BaseBlockFlags & 1 > 0: + BaseBlockFlags -= 1 + + return BaseBlockFlags + +class RegistryException(Exception): + """This is a top-level exception for this module.""" + + pass + +class ReadException(RegistryException): + """This exception is raised when a read error has occurred. + This exception does not supersede standard I/O exceptions. + """ + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class NotSupportedException(RegistryException): + """This exception is raised when something is not supported.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class BaseBlockException(RegistryException): + """This exception is raised when something is invalid in a base block.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class FileSizeException(RegistryException): + """This exception is raised when a file has an obviously invalid size.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class HiveBinException(RegistryException): + """This exception is raised when something is invalid in a hive bin.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class HiveCellException(RegistryException): + """This exception is raised when something is wrong with a hive cell.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class DirtyVectorException(RegistryException): + """This exception is raised when something is invalid in a dirty vector.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class DirtyPageException(RegistryException): + """This exception is raised when a dirty page is invalid (truncated).""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class LogEntryException(RegistryException): + """This exception is raised when a log entry is invalid.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class RecoveryException(RegistryException): + """This exception is raised when a recovery error has occurred.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class NotEligibleException(RegistryException): + """This exception is raised when a transaction log file cannot be applied to a primary file.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class CellOffsetException(RegistryException): + """This exception is raised when an invalid cell has been requested.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class RegistryFile(object): + """This is a generic class for registry files, it provides low-level methods for reading, parsing, and writing data. + All methods are self-explanatory. + """ + + def __init__(self, file_object, file_offset = 0): + self.file_object = file_object + self.file_offset = file_offset + + def get_file_size(self): + self.file_object.seek(0, 2) + return self.file_object.tell() + + def read_binary(self, pos, length): + self.file_object.seek(self.file_offset + pos) + b = self.file_object.read(length) + if len(b) == length: + return b + + raise ReadException('Cannot read data (expected: {} bytes, read: {} bytes)'.format(length, len(b))) + + def write_binary(self, pos, data): + self.file_object.seek(self.file_offset + pos) + self.file_object.write(data) + + def read_uint32(self, pos): + b = self.read_binary(pos, 4) + return unpack('> (bit_pos % 8)) & 1) != 0 + if is_bit_set: + dirty_page_meta = DirtyPageMeta(relative_offset_primary = bit_pos * 512, relative_offset_log = i * 512) + yield dirty_page_meta + i += 1 + + bit_pos += 1 + +class DirtyPage(RegistryFile): + """This is a class for a dirty page, describing its location and bytes (data).""" + + primary_file_offset = None + log_file_offset = None + page_size = None + + def __init__(self, file_object, log_file_offset, page_size, primary_file_offset): + super(DirtyPage, self).__init__(file_object, log_file_offset) + + self.page_size = page_size + self.primary_file_offset = primary_file_offset + self.log_file_offset = log_file_offset + + def get_bytes(self): + bytes_ = self.read_binary(0, self.page_size) + if len(bytes_) != self.page_size: + raise DirtyPageException('Truncated dirty page') + + return bytes_ + +class OldLogFile(object): + """This is a class for a transaction log file (old format).""" + + baseblock = None + """A base block in a log file (a BaseBlock object).""" + + dirtyvector = None + """A dirty vector in a log file (a DirtyVector object).""" + + def __init__(self, file_object): + self.file_object = file_object + + self.baseblock = BaseBlock(self.file_object) + + if self.baseblock.get_file_type() != FILE_TYPE_LOG_OLD and self.baseblock.get_file_type() != FILE_TYPE_LOG_VERYOLD: + raise BaseBlockException('Invalid file type') + + if self.baseblock.is_file_dirty: + raise BaseBlockException('Dirty state') + + file_size = self.baseblock.get_file_size() + if file_size < self.get_dirty_pages_starting_offset() + 512: # Check if at least one dirty page (512 bytes) can be present in the file. + raise FileSizeException('Invalid file size: {}'.format(file_size)) + + self.dirtyvector = DirtyVector(self.file_object, BASE_BLOCK_LENGTH_LOG, self.baseblock.effective_hbins_data_size) + + def get_dirty_pages_starting_offset(self): + offset_unaligned = BASE_BLOCK_LENGTH_LOG + len(b'DIRT') + self.baseblock.effective_hbins_data_size // 4096 + sector_size = 512 # We do not expect other values (even when the sector size is not 512 bytes). + + if offset_unaligned % sector_size == 0: + offset_aligned = offset_unaligned + else: + offset_aligned = offset_unaligned + sector_size - offset_unaligned % sector_size + + return offset_aligned + + def dirty_pages(self): + """This method yields DirtyPage objects.""" + + log_file_base = self.get_dirty_pages_starting_offset() + primary_file_base = BASE_BLOCK_LENGTH_PRIMARY + + for dirty_page_meta in self.dirtyvector.dirty_pages_meta(): + log_file_offset = dirty_page_meta.relative_offset_log + log_file_base + primary_file_offset = dirty_page_meta.relative_offset_primary + primary_file_base + + dirty_page = DirtyPage(self.file_object, log_file_offset, 512, primary_file_offset) + yield dirty_page + +class LogEntry(RegistryFile): + """This is a class for a log entry, it provides methods to read dirty pages references and to map dirty pages. + Most methods are self-explanatory. + """ + + def __init__(self, file_object, file_offset, expected_sequence_number): + super(LogEntry, self).__init__(file_object, file_offset) + + signature = self.get_signature() + if signature != b'HvLE': + raise LogEntryException('Invalid signature: {}'.format(signature)) + + size = self.get_size() + if size < 512 or size % 512 != 0: + raise LogEntryException('Invalid size: {}'.format(size)) + + hbins_data_size = self.get_hbins_data_size() + if hbins_data_size < HIVE_BIN_SIZE_ALIGNMENT or hbins_data_size % HIVE_BIN_SIZE_ALIGNMENT != 0: + raise LogEntryException('Invalid hive bins data size: {}'.format(hbins_data_size)) + + dirty_pages_count = self.get_dirty_pages_count() + if dirty_pages_count == 0: + raise LogEntryException('Invalid dirty pages count: {}'.format(dirty_pages_count)) + + if not self.validate_hashes(): + raise LogEntryException('Invalid hashes'.format(dirty_pages_count)) + + sequence_number = self.get_sequence_number() + if sequence_number != expected_sequence_number: + raise LogEntryException('Unexpected sequence number: {} != {}'.format(sequence_number, expected_sequence_number)) + + def get_signature(self): + return self.read_binary(0, 4) + + def get_size(self): + return self.read_uint32(4) + + def get_flags(self): + return self.read_uint32(8) + + def get_sequence_number(self): + return self.read_uint32(12) + + def get_hbins_data_size(self): + return self.read_uint32(16) + + def get_dirty_pages_count(self): + return self.read_uint32(20) + + def get_hash_1(self): + return self.read_uint64(24) + + def get_hash_2(self): + return self.read_uint64(32) + + def calculate_hash_1(self): + b = bytearray(self.read_binary(40, self.get_size() - 40)) + return Marvin32(b) + + def calculate_hash_2(self): + b = bytearray(self.read_binary(0, 32)) + return Marvin32(b) + + def validate_hashes(self): + """Compare calculated hashes to hashes recorded in a log entry.""" + + return self.get_hash_2() == self.calculate_hash_2() and self.get_hash_1() == self.calculate_hash_1() + + def get_dirty_pages_starting_offset(self): + return 40 + self.get_dirty_pages_count() * 8 + + def dirty_pages_references(self): + """This method yields DirtyPageReference tuples.""" + + curr_pos = 40 + i = 0 + while i < self.get_dirty_pages_count(): + primary_file_offset_relative = self.read_uint32(curr_pos) + page_size = self.read_uint32(curr_pos + 4) + + dirty_page_reference = DirtyPageReference(relative_offset_primary = primary_file_offset_relative, size = page_size) + yield dirty_page_reference + + curr_pos += 8 + i += 1 + + def dirty_pages(self): + """This method yields DirtyPage objects.""" + + log_file_base = self.file_offset + self.get_dirty_pages_starting_offset() + primary_file_base = BASE_BLOCK_LENGTH_PRIMARY + + delta = 0 + for dirty_page_reference in self.dirty_pages_references(): + primary_file_offset = dirty_page_reference.relative_offset_primary + primary_file_base + page_size = dirty_page_reference.size + + log_file_offset = log_file_base + delta + + dirty_page = DirtyPage(self.file_object, log_file_offset, page_size, primary_file_offset) + yield dirty_page + + delta += page_size + +class NewLogFile(object): + """This is a class for a transaction log file (new format).""" + + baseblock = None + """A base block in a log file (a BaseBlock object).""" + + def __init__(self, file_object): + self.file_object = file_object + + self.baseblock = BaseBlock(self.file_object) + + if self.baseblock.get_file_type() != FILE_TYPE_LOG_NEW: + raise BaseBlockException('Invalid file type') + + if self.baseblock.is_file_dirty: + raise BaseBlockException('Dirty state') + + self.file_size = self.baseblock.get_file_size() + if self.file_size <= BASE_BLOCK_LENGTH_LOG + 40: # Check if at least one log entry can be present in the file. + raise FileSizeException('Invalid file size: {}'.format(self.file_size)) + + def log_entries(self): + """This method yields LogEntry objects.""" + + current_sequence_number = self.baseblock.get_primary_sequence_number() + + curr_pos = BASE_BLOCK_LENGTH_LOG + while curr_pos < self.file_size: + try: + curr_logentry = LogEntry(self.file_object, curr_pos, current_sequence_number) + except (LogEntryException, ReadException): + break # We could read garbage at the end of the file, this is normal. + + yield curr_logentry + + curr_pos += curr_logentry.get_size() + current_sequence_number = c_uint32(current_sequence_number + 1).value # Handle a possible overflow. + +class PrimaryFile(object): + """This is a class for a primary file, it provides methods to read the file, to build the maps of cells, and to recover the file using a transaction log.""" + + file = None + """A RegistryFile object for a primary file.""" + + baseblock = None + """A base block in a primary file (a BaseBlock object).""" + + cell_map_allocated = None + """A map of allocated cells.""" + + cell_map_unallocated = None + """A map of unallocated cells.""" + + record_referenced_cells = False + """When True, the get_cell() method will add a requested cell to a map of allocated and referenced cells.""" + + cell_map_referenced = None + """A map of allocated and referenced cells (empty by default).""" + + cell_map_free = None + """A map of free (unallocated, unreferenced) cells (empty by default, see the build_map_free() method).""" + + def __init__(self, file_object, tolerate_minor_errors = True): + self.file_object = file_object + self.writable = False + self.file = RegistryFile(file_object) + self.tolerate_minor_errors = tolerate_minor_errors + + self.old_log_file = None + self.new_log_file = None + self.log_apply_count = 0 + self.last_sequence_number = None + + self.baseblock = BaseBlock(self.file_object) + if not self.baseblock.is_primary_file: + raise NotSupportedException('Invalid file type') + + self.build_cell_maps() + + def hive_bins(self): + """This method yields HiveBin objects.""" + + curr_pos = BASE_BLOCK_LENGTH_PRIMARY + while curr_pos - BASE_BLOCK_LENGTH_PRIMARY < self.baseblock.effective_hbins_data_size: + try: + curr_hivebin = HiveBin(self.file_object, curr_pos, self.tolerate_minor_errors, self.baseblock.use_old_cell_format) + except (HiveBinException, ReadException): + if self.baseblock.is_file_dirty and self.log_apply_count == 0: + # We could read garbage at the end of the dirty file, this is normal. + self.baseblock.effective_hbins_data_size = curr_pos - BASE_BLOCK_LENGTH_PRIMARY + break + else: + raise # If the file is not dirty (or we recovered the data), this is a serious error. + + yield curr_hivebin + + curr_pos += curr_hivebin.get_size() + + def build_cell_maps(self): + """Build the maps of allocated and unallocated cells, clear other maps.""" + + self.cell_map_allocated = set() + self.cell_map_unallocated = set() + + for hbin in self.hive_bins(): + for cell in hbin.cells: + cell_file_offset = cell.file_offset + if cell.is_allocated(): + self.cell_map_allocated.add(cell_file_offset) + else: + self.cell_map_unallocated.add(cell_file_offset) + + self.cell_map_free = set() + self.cell_map_referenced = set() + + def build_map_free(self): + """Build the map of free cells.""" + + self.cell_map_free = set() + + if len(self.cell_map_referenced) > 0: + self.cell_map_free = self.cell_map_allocated - self.cell_map_referenced + + self.cell_map_free.update(self.cell_map_unallocated) + + def get_root_cell(self): + """Get and return data from a root cell.""" + + return self.get_cell(self.baseblock.effective_root_cell_offset) + + def get_cell(self, cell_relative_offset): + """Get and return data from a cell. The cell must be in the map of allocated cells.""" + + if cell_relative_offset == CELL_OFFSET_NIL: + raise CellOffsetException('Got CELL_OFFSET_NIL') + + cell_file_offset = BASE_BLOCK_LENGTH_PRIMARY + cell_relative_offset + if len(self.cell_map_allocated) > 0 and cell_file_offset not in self.cell_map_allocated: + raise CellOffsetException('There is no valid cell starting at this offset (relative): {}'.format(cell_relative_offset)) + + if self.record_referenced_cells: + self.cell_map_referenced.add(cell_file_offset) + + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + return cell.get_cell_data() + + def get_cell_naive(self, cell_relative_offset): + """Get and return data from a cell naively.""" + + if cell_relative_offset == CELL_OFFSET_NIL: + raise CellOffsetException('Got CELL_OFFSET_NIL') + + cell_file_offset = BASE_BLOCK_LENGTH_PRIMARY + cell_relative_offset + + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + + size = cell.get_absolute_size() + if size > CELL_SIZE_MAX_NAIVE: + raise CellOffsetException('Got an obviously invalid offset (relative)') + + return cell.get_cell_data() + + def create_writable_file_object(self): + """Create a writable copy of a file object (used to recover a primary file).""" + + if self.writable: + return + + new_file_object = BytesIO() + + # Copy data to the new writable file object. + self.file_object.seek(0) + copyfileobj(self.file_object, new_file_object) + + self.original_file_object = self.file_object + self.file_object = new_file_object + self.file = RegistryFile(self.file_object) + + self.writable = True + + def discard_writable_file_object(self): + """Discard a writable copy of a file object.""" + + if not self.writable: + return + + self.file_object.close() + self.file_object = self.original_file_object + self.__init__(self.file_object, self.tolerate_minor_errors) + + def save_recovered_hive(self, filepath): + """Save the recovered hive to a new primary file.""" + + if self.log_apply_count == 0: + raise NotSupportedException('Cannot save a hive that was not recovered') + + if self.baseblock.is_baseblock_valid: + # The base block is valid, use it. + self.file_object.seek(0) + baseblock_bytes = self.file_object.read(BASE_BLOCK_LENGTH_PRIMARY) + else: + # The base block is invalid, use another one from a transaction log file. + if self.old_log_file is not None: + self.old_log_file.file_object.seek(0) + baseblock_bytes = self.old_log_file.file_object.read(BASE_BLOCK_LENGTH_LOG) + elif self.new_log_file is not None: + self.new_log_file.file_object.seek(0) + baseblock_bytes = self.new_log_file.file_object.read(BASE_BLOCK_LENGTH_LOG) + else: + raise NotSupportedException('Cannot find a log file to be used to recover the base block') + + # Create a file object for the base block. + baseblock_object = BytesIO(b'\x00' * BASE_BLOCK_LENGTH_PRIMARY) + + # Write the base block to the new file object. + baseblock_object.seek(0) + baseblock_object.write(baseblock_bytes) + + # Create a new BaseBlock object. + baseblock = BaseBlock(baseblock_object, True) + + # Update various fields in the base block. + if self.last_sequence_number is not None: + baseblock.write_synchronized_sequence_numbers(self.last_sequence_number) + else: + baseblock.write_synchronized_sequence_numbers(baseblock.get_primary_sequence_number()) + + baseblock.write_hbins_data_size(self.baseblock.effective_hbins_data_size) + baseblock.write_flags(self.baseblock.effective_flags) + baseblock.write_file_type(FILE_TYPE_PRIMARY) + baseblock.update_checksum() + + with open(filepath, 'wb') as f: + # Copy the old base block and the recovered hive bins data to a file. + self.file_object.seek(0) + copyfileobj(self.file_object, f) + + # Copy the new base block over the old one. + baseblock_object.seek(0) + f.seek(0) + f.write(baseblock_object.read()) + + # Close the file object. + baseblock_object.close() + + def apply_old_log_file(self, log_file_object): + """Apply a transaction log file (old format) to a primary file.""" + + if self.log_apply_count > 0: + raise RecoveryException('A log file has been already applied') + + if not self.baseblock.is_file_dirty: + raise RecoveryException('There is no need to apply the log file') + + self.old_log_file = OldLogFile(log_file_object) + log_timestamp = self.old_log_file.baseblock.effective_last_written_timestamp + primary_timestamp = self.baseblock.effective_last_written_timestamp + + if log_timestamp < primary_timestamp: + raise NotEligibleException('This log file cannot be applied') + + self.baseblock.effective_hbins_data_size = self.old_log_file.baseblock.effective_hbins_data_size + self.baseblock.effective_root_cell_offset = self.old_log_file.baseblock.effective_root_cell_offset + self.baseblock.effective_version = self.old_log_file.baseblock.effective_version + self.baseblock.use_old_cell_format = self.baseblock.effective_version in MINOR_VERSION_NUMBERS_FOR_OLD_CELL_FORMAT + self.baseblock.effective_last_reorganized_timestamp = self.old_log_file.baseblock.effective_last_reorganized_timestamp + self.baseblock.effective_last_written_timestamp = self.old_log_file.baseblock.effective_last_written_timestamp + self.baseblock.effective_flags = self.old_log_file.baseblock.effective_flags + + self.create_writable_file_object() + + for dirty_page in self.old_log_file.dirty_pages(): # Apply dirty pages. + self.file.write_binary(dirty_page.primary_file_offset, dirty_page.get_bytes()) + + self.log_apply_count += 1 + self.build_cell_maps() + + def apply_new_log_file(self, log_file_object, callback = None): + """Apply a single transaction log file (new format) to a primary file. + After a log entry has been applied, call an optional callback function. + """ + + if self.log_apply_count >= 2: + raise RecoveryException('No more than two log files can be applied') + + if not self.baseblock.is_file_dirty: + raise RecoveryException('There is no need to apply the log file') + + self.new_log_file = NewLogFile(log_file_object) + + if self.last_sequence_number is not None and self.last_sequence_number >= self.new_log_file.baseblock.get_primary_sequence_number(): + raise RecoveryException('This log file cannot be applied') + + if self.baseblock.is_baseblock_valid and self.new_log_file.baseblock.get_primary_sequence_number() < self.baseblock.get_secondary_sequence_number(): + raise NotEligibleException('This log file cannot be applied') + + self.baseblock.effective_root_cell_offset = self.new_log_file.baseblock.effective_root_cell_offset + self.baseblock.effective_version = self.new_log_file.baseblock.effective_version + self.baseblock.use_old_cell_format = self.baseblock.effective_version in MINOR_VERSION_NUMBERS_FOR_OLD_CELL_FORMAT + self.baseblock.effective_last_reorganized_timestamp = self.new_log_file.baseblock.effective_last_reorganized_timestamp + self.baseblock.effective_last_written_timestamp = self.new_log_file.baseblock.effective_last_written_timestamp + self.baseblock.effective_flags = self.new_log_file.baseblock.effective_flags + + self.create_writable_file_object() + + for log_entry in self.new_log_file.log_entries(): + self.last_sequence_number = log_entry.get_sequence_number() + self.baseblock.effective_flags = LogEntryFlagsToBaseBlockFlags(log_entry.get_flags(), self.baseblock.effective_flags) + self.baseblock.effective_hbins_data_size = log_entry.get_hbins_data_size() + + for dirty_page in log_entry.dirty_pages(): # Apply dirty pages. + self.file.write_binary(dirty_page.primary_file_offset, dirty_page.get_bytes()) + + if callback is not None: + self.build_cell_maps() + callback() + + self.log_apply_count += 1 + + if callback is None: + self.build_cell_maps() + + def apply_new_log_files(self, log_file_object_1, log_file_object_2, callback = None): + """Apply two transaction log files (new format) to a primary file. + After a log entry has been applied, call an optional callback function. + """ + + def is_starting_log(this_sequence_number, another_sequence_number): + if this_sequence_number >= another_sequence_number: + delta = this_sequence_number - another_sequence_number + starting = False + else: + delta = another_sequence_number - this_sequence_number + starting = True + + if c_uint32(delta).value <= 0x7FFFFFFF: + return starting + else: + return not starting # Sequence numbers did overflow. + + + new_log_file_1 = NewLogFile(log_file_object_1) + sequence_number_1 = new_log_file_1.baseblock.get_primary_sequence_number() + + new_log_file_2 = NewLogFile(log_file_object_2) + sequence_number_2 = new_log_file_2.baseblock.get_primary_sequence_number() + + if is_starting_log(sequence_number_1, sequence_number_2): + first = log_file_object_1 + second = log_file_object_2 + else: + first = log_file_object_2 + second = log_file_object_1 + + if self.baseblock.is_baseblock_valid: + try: + self.apply_new_log_file(first, callback) + except NotEligibleException: + pass + + self.apply_new_log_file(second, callback) + else: + self.apply_new_log_file(second, callback) # This is how Windows works. + +class PrimaryFileTruncated(object): + """This is a class for a truncated primary file, it provides methods to read the truncated file, to build the maps of cells, and to yield each cell.""" + + file = None + """A RegistryFile object for a primary file.""" + + baseblock = None + """A base block in a primary file (a BaseBlock object).""" + + cell_map_allocated = None + """A map of allocated cells.""" + + cell_map_unallocated = None + """A map of unallocated cells.""" + + cell_map_free = None + """A map of free (unallocated only) cells.""" + + def __init__(self, file_object): + self.file_object = file_object + self.writable = False + self.file = RegistryFile(file_object) + + self.baseblock = BaseBlock(self.file_object) + if not self.baseblock.is_primary_file: + raise NotSupportedException('Invalid file type') + + self.build_cell_maps() + + def hive_bins(self): + """This method yields HiveBin objects.""" + + curr_pos = BASE_BLOCK_LENGTH_PRIMARY + while curr_pos - BASE_BLOCK_LENGTH_PRIMARY < self.baseblock.effective_hbins_data_size: + try: + curr_hivebin = HiveBin(self.file_object, curr_pos, True, self.baseblock.use_old_cell_format) + except (HiveBinException, ReadException): + break # Since we expect a truncation point, stop here. + + yield curr_hivebin + + curr_pos += curr_hivebin.get_size() + + def build_cell_maps(self): + """Build the maps of allocated and unallocated cells.""" + + self.cell_map_allocated = set() + self.cell_map_unallocated = set() + + for hbin in self.hive_bins(): + for cell in hbin.cells: + cell_file_offset = cell.file_offset + if cell.is_allocated(): + self.cell_map_allocated.add(cell_file_offset) + else: + self.cell_map_unallocated.add(cell_file_offset) + + self.cell_map_free = self.cell_map_unallocated + + def get_cell(self, cell_relative_offset): + """Get and return data from a cell. The cell must be in the map of allocated cell or in the map of unallocated cells.""" + + if cell_relative_offset == CELL_OFFSET_NIL: + raise CellOffsetException('Got CELL_OFFSET_NIL') + + cell_file_offset = BASE_BLOCK_LENGTH_PRIMARY + cell_relative_offset + if cell_file_offset not in self.cell_map_allocated and cell_file_offset not in self.cell_map_unallocated: + raise CellOffsetException('There is no valid cell starting at this offset (relative): {}'.format(cell_relative_offset)) + + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + return cell.get_cell_data() + + def get_cell_naive(self, cell_relative_offset): + """Get and return data from a cell naively.""" + + if cell_relative_offset == CELL_OFFSET_NIL: + raise CellOffsetException('Got CELL_OFFSET_NIL') + + cell_file_offset = BASE_BLOCK_LENGTH_PRIMARY + cell_relative_offset + + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + return cell.get_cell_data() + + def cells(self, yield_unallocated_cells = False): + """This method yields a HiveCell object for each cell.""" + + for cell_file_offset in self.cell_map_allocated: + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + yield cell + + if yield_unallocated_cells: + for cell_file_offset in self.cell_map_unallocated: + cell = HiveCell(self.file_object, cell_file_offset, self.baseblock.use_old_cell_format) + yield cell diff --git a/yarp/RegistryHelpers.py b/yarp/RegistryHelpers.py new file mode 100644 index 0000000..770356a --- /dev/null +++ b/yarp/RegistryHelpers.py @@ -0,0 +1,105 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from os import path, linesep +from collections import namedtuple + +DiscoveredLogFiles = namedtuple('DiscoveredLogFiles', [ 'log_path', 'log1_path', 'log2_path' ]) + +def DiscoverLogFiles(PrimaryPath): + """Return a named tuple (DiscoveredLogFiles) describing a path to each transaction log file of a supplied primary file.""" + + def DiscoverLogFilesInternal(PrimaryPath): + # We prefer uppercase extensions. + log = PrimaryPath + '.LOG' + log1 = PrimaryPath + '.LOG1' + log2 = PrimaryPath + '.LOG2' + + if path.isfile(log) or path.isfile(log1) or path.isfile(log2): + # At least one file has an uppercase extension, use it and others (if present). + if not path.isfile(log): + log = None + if not path.isfile(log1): + log1 = None + if not path.isfile(log2): + log2 = None + + return DiscoveredLogFiles(log_path = log, log1_path = log1, log2_path = log2) + + # Now, switch to lowercase extensions. + log = PrimaryPath + '.log' + log1 = PrimaryPath + '.log1' + log2 = PrimaryPath + '.log2' + + if path.isfile(log) or path.isfile(log1) or path.isfile(log2): + # At least one file has a lowercase extension, use it and others (if present). + if not path.isfile(log): + log = None + if not path.isfile(log1): + log1 = None + if not path.isfile(log2): + log2 = None + + return DiscoveredLogFiles(log_path = log, log1_path = log1, log2_path = log2) + + directory, filename = path.split(PrimaryPath) + filenames = sorted(set([ filename, filename.lower(), filename.upper() ])) + for filename in filenames: + result = DiscoverLogFilesInternal(path.join(directory, filename)) + if result is not None: + return result + + # Give up. + return DiscoveredLogFiles(log_path = None, log1_path = None, log2_path = None) + +def HexDump(Buffer): + """Return bytes from Buffer as a hexdump-like string (16 bytes per line).""" + + def int2hex(i): + return '{:02X}'.format(i) + + if type(Buffer) is not bytearray: + Buffer = bytearray(Buffer) + + output_lines = '' + + i = 0 + while i < len(Buffer): + bytes_line = Buffer[i : i + 16] + + address = int2hex(i) + address = str(address).zfill(8) + hex_line = '' + ascii_line = '' + + k = 0 + while k < len(bytes_line): + single_byte = bytes_line[k] + + hex_line += int2hex(single_byte) + if k == 7 and k != len(bytes_line) - 1: + hex_line += '-' + elif k != len(bytes_line) - 1: + hex_line += ' ' + + if single_byte >= 32 and single_byte <= 126: + ascii_line += chr(single_byte) + else: + ascii_line += '.' + + k += 1 + + padding_count = 16 - k + if padding_count > 0: + hex_line += ' ' * 3 * padding_count + + output_lines += address + ' ' * 2 + hex_line + ' ' * 2 + ascii_line + + i += 16 + + if i < len(Buffer): + output_lines += linesep + + return output_lines diff --git a/yarp/RegistryRecords.py b/yarp/RegistryRecords.py new file mode 100644 index 0000000..ed1bfa4 --- /dev/null +++ b/yarp/RegistryRecords.py @@ -0,0 +1,524 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from struct import unpack +from collections import namedtuple +from .RegistryFile import RegistryException + +# Key node flags. +KEY_VOLATILE = 0x0001 +KEY_HIVE_EXIT = 0x0002 +KEY_HIVE_ENTRY = 0x0004 +KEY_NO_DELETE = 0x0008 +KEY_SYM_LINK = 0x0010 +KEY_COMP_NAME = 0x0020 +KEY_PREDEF_HANDLE = 0x0040 +KEY_VIRT_SOURCE = 0x0080 +KEY_VIRT_TARGET = 0x0100 +KEY_VIRT_STORE = 0x0200 + +# User flags for a key node. +KEY_FLAG_32BIT = 0x1 +KEY_FLAG_REFLECTED = 0x2 +KEY_FLAG_EXEMPT_REFLECTION = 0x4 +KEY_FLAG_OWNERSHIP_REFLECTION = 0x8 + +# Virtualization control flags for a key node. +REG_KEY_DONT_VIRTUALIZE = 0x2 +REG_KEY_DONT_SILENT_FAIL = 0x4 +REG_KEY_RECURSE_FLAG = 0x8 + +# Debug flags for a key node. +BREAK_ON_OPEN = 0x01 +BREAK_ON_DELETE = 0x02 +BREAK_ON_SECURITY_CHANGE = 0x04 +BREAK_ON_CREATE_SUBKEY = 0x08 +BREAK_ON_DELETE_SUBKEY = 0x10 +BREAK_ON_SET_VALUE = 0x20 +BREAK_ON_DELETE_VALUE = 0x40 +BREAK_ON_KEY_VIRTUALIZE = 0x80 + +# Key value flags. +VALUE_COMP_NAME = 0x0001 +VALUE_TOMBSTONE = 0x0002 + +# Data types for a key value. +REG_NONE = 0x00000000 +REG_SZ = 0x00000001 +REG_EXPAND_SZ = 0x00000002 +REG_BINARY = 0x00000003 +REG_DWORD = 0x00000004 +REG_DWORD_LITTLE_ENDIAN = REG_DWORD +REG_DWORD_BIG_ENDIAN = 0x00000005 +REG_LINK = 0x00000006 +REG_MULTI_SZ = 0x00000007 +REG_RESOURCE_LIST = 0x00000008 +REG_FULL_RESOURCE_DESCRIPTOR = 0x00000009 +REG_RESOURCE_REQUIREMENTS_LIST = 0x0000000a +REG_QWORD = 0x0000000b +REG_QWORD_LITTLE_ENDIAN = REG_QWORD + +LeafElement = namedtuple('LeafElement', [ 'relative_offset', 'name_hint', 'name_hash' ]) + +class ParseException(RegistryException): + """This exception is raised when a registry record is invalid.""" + + def __init__(self, value): + self._value = value + + def __str__(self): + return repr(self._value) + +class MemoryBlock(object): + """This is a generic class for a memory block (cell data), it provides low-level methods for reading and parsing data. + All methods are self-explanatory. + """ + + def __init__(self, buf): + self.buf = buf + + def read_binary(self, pos, length = None): + if length is None: + b = self.buf[pos : ] + return b + + b = self.buf[pos : pos + length] + if len(b) != length: + raise ParseException('Cannot read data (expected: {} bytes, read: {} bytes)'.format(length, len(b))) + + return b + + def read_uint8(self, pos): + b = self.read_binary(pos, 1) + return unpack('> 12 + + def get_user_flags_new(self): + return self.get_virtualization_control_and_user_flags() & 0xF + + def get_virtualization_control_flags(self): + return self.get_virtualization_control_and_user_flags() >> 4 + + def get_debug(self): + return self.read_uint8(55) + + def get_largest_subkey_classname_length(self): + return self.read_uint32(56) + + def get_largest_value_name_length(self): + return self.read_uint32(60) + + def get_largest_value_data_size(self): + return self.read_uint32(64) + + def get_workvar(self): + return self.read_uint32(68) + + def get_key_name_length(self): + return self.read_uint16(72) + + def get_classname_length(self): + return self.read_uint16(74) + + def get_key_name(self): + """Get and return a key name string (as raw bytes).""" + + return self.read_binary(76, self.get_key_name_length()) + + def get_slack(self): + return self.read_binary(76 + self.get_key_name_length()) + +class KeyValuesList(MemoryBlock): + """This is a class for a key values list, it provides methods to read this list.""" + + def __init__(self, buf, elements_count): + super(KeyValuesList, self).__init__(buf) + + self.elements_count = elements_count + + def elements(self): + """This method yields key value offsets.""" + + i = 0 + while i < self.elements_count: + yield self.read_uint32(i * 4) + i += 1 + + def get_slack(self): + return self.read_binary(self.elements_count * 4) + +class KeyValue(MemoryBlock): + """This is a class for a key value, it provides methods to access various fields of the key value. + Most methods are self-explanatory. + """ + + def __init__(self, buf): + super(KeyValue, self).__init__(buf) + + signature = self.get_signature() + if signature != b'vk': + raise ParseException('Invalid signature: {}'.format(signature)) + + def get_signature(self): + return self.read_binary(0, 2) + + def get_value_name_length(self): + return self.read_uint16(2) + + def get_data_size(self): + return self.read_uint32(4) + + def get_data_size_real(self): + """Get and return a real size of data (the most significant bit is ignored).""" + + size = self.get_data_size() + if size >= 0x80000000: + size -= 0x80000000 + + return size + + def is_data_inline(self): + """Return True if data is stored inline (in the data offset field).""" + + return self.get_data_size() >= 0x80000000 + + def get_inline_data(self): + return self.read_binary(8, 4) + + def get_data_offset(self): + return self.read_uint32(8) + + def get_data_type(self): + return self.read_uint32(12) + + def get_flags(self): + return self.read_uint16(16) + + def get_spare(self): + return self.read_uint16(18) + + def get_title_index(self): + return self.read_uint32(16) # The same offset as above. + + def get_value_name(self): + """Get and return a value name string (as raw bytes).""" + + return self.read_binary(20, self.get_value_name_length()) + + def get_slack(self): + return self.read_binary(20 + self.get_value_name_length()) + +class KeySecurity(MemoryBlock): + """This is a class for a key security item, it provides methods to access various fields of the key security item. + All methods are self-explanatory. + """ + + def __init__(self, buf): + super(KeySecurity, self).__init__(buf) + + signature = self.get_signature() + if signature != b'sk': + raise ParseException('Invalid signature: {}'.format(signature)) + + security_descriptor_size = self.get_security_descriptor_size() + if security_descriptor_size == 0: + raise ParseException('Empty security descriptor') + + def get_signature(self): + return self.read_binary(0, 2) + + def get_reserved(self): + return self.read_uint16(2) + + def get_flink(self): + return self.read_uint32(4) + + def get_blink(self): + return self.read_uint32(8) + + def get_reference_count(self): + return self.read_uint32(12) + + def get_security_descriptor_size(self): + return self.read_uint32(16) + + def get_security_descriptor(self): + """Get and return a security descriptor (as raw bytes).""" + + return self.read_binary(20, self.get_security_descriptor_size()) + + def get_slack(self): + return self.read_binary(20 + self.get_security_descriptor_size()) + +class SegmentsList(MemoryBlock): + """This is a class for a segments list (big data), it provides a method to read this list.""" + + def __init__(self, buf, elements_count): + super(SegmentsList, self).__init__(buf) + + self.elements_count = elements_count + + def elements(self): + """This method yields segment offsets.""" + + i = 0 + while i < self.elements_count: + yield self.read_uint32(i * 4) + i += 1 + + def get_slack(self): + return self.read_binary(self.elements_count * 4) + +class BigData(MemoryBlock): + """This is a class for a big data record, it provides methods to access various fields of the big data record. + All methods are self-explanatory. + """ + + def __init__(self, buf): + super(BigData, self).__init__(buf) + + signature = self.get_signature() + if signature != b'db': + raise ParseException('Invalid signature: {}'.format(signature)) + + segments_count = self.get_segments_count() + if segments_count < 2: + raise ParseException('Invalid number of segments: {}'.format(segments_count)) + + def get_signature(self): + return self.read_binary(0, 2) + + def get_segments_count(self): + return self.read_uint16(2) + + def get_segments_list_offset(self): + return self.read_uint32(4) + + def get_slack(self): + return self.read_binary(8) diff --git a/yarp/RegistryRecover.py b/yarp/RegistryRecover.py new file mode 100644 index 0000000..a1f1b5f --- /dev/null +++ b/yarp/RegistryRecover.py @@ -0,0 +1,143 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +from __future__ import unicode_literals + +from . import Registry +from . import RegistryFile + +MAX_PLAUSIBLE_SUBKEYS_COUNT = 80000 +MAX_PLAUSIBLE_VALUES_COUNT = 70000 +MAX_PLAUSIBLE_NAME_LENGTH = 2048 + +def ValidateKey(Key): + """Check whether or not a key looks plausible. If not, an exception is raised.""" + + key_name = Key.name() + if len(key_name) > MAX_PLAUSIBLE_NAME_LENGTH: + raise Registry.RegistryException('Implausible name length') + + if Key.subkeys_count() > MAX_PLAUSIBLE_SUBKEYS_COUNT or Key.key_node.get_volatile_subkeys_count() > MAX_PLAUSIBLE_SUBKEYS_COUNT: + raise Registry.RegistryException('Implausible number of subkeys reported') + + if Key.values_count() > MAX_PLAUSIBLE_VALUES_COUNT: + raise Registry.RegistryException('Implausible number of values reported') + + timestamp_year = Key.last_written_timestamp().year + if timestamp_year < 1970 or timestamp_year > 2100: + raise Registry.RegistryException('Implausible last written timestamp') + +def ValidateValue(Value): + """Check whether or not a value looks plausible. If not, an exception is raised.""" + + value_name = Value.name() + if len(value_name) > MAX_PLAUSIBLE_NAME_LENGTH: + raise Registry.RegistryException('Implausible name length') + + if Value.key_value.is_data_inline() and Value.key_value.get_data_size_real() > 4: + raise Registry.RegistryException('Value data is too large to be stored inline') + +class Scanner(object): + """This class is used to scan free cells for deleted keys and values.""" + + hive = None + """A RegistryHive object.""" + + def __init__(self, hive, scan_remnant_data = True, scan_slack_space = True): + """Argument: + - hive: a RegistryHive object; + - scan_remnant_data: when True, also scan remnant data within a primary file. + """ + + self.hive = hive + self.scan_remnant_data = scan_remnant_data + self.scan_slack_space = scan_slack_space + + def virtual_cell(self): + """Get and return remnant data within a primary file as a virtual cell (if any, else return None).""" + + if not self.scan_remnant_data: + return + + offset = RegistryFile.BASE_BLOCK_LENGTH_PRIMARY + self.hive.registry_file.baseblock.effective_hbins_data_size + self.hive.registry_file.file_object.seek(offset) + data = self.hive.registry_file.file_object.read() + if len(data) == 0: + return + + return data + + def process_cell(self, cell): + """Scan data of a cell for deleted keys and values, yield them as RegistryKey and RegistryValue objects.""" + + pos = 0 + while pos < len(cell): + if pos < len(cell) - 76: # A key node with at least one character in the name. + two_bytes = cell[pos : pos + 2] + if two_bytes == b'nk': + candidate_nk = cell[pos : ] + try: + key = Registry.RegistryKey(self.hive.registry_file, candidate_nk, None, None, True, True) + ValidateKey(key) + except (Registry.RegistryException, UnicodeDecodeError): + pass + else: + yield key + + pos += 76 + key.key_node.get_key_name_length() + if pos % 2 != 0: + pos += 1 + + continue + + pos += 2 + continue + + if pos <= len(cell) - 20: # A key value with no name (at least). + two_bytes = cell[pos : pos + 2] + if two_bytes == b'vk': + candidate_vk = cell[pos : ] + try: + value = Registry.RegistryValue(self.hive.registry_file, candidate_vk, True) + ValidateValue(value) + except (Registry.RegistryException, UnicodeDecodeError): + pass + else: + yield value + + pos += 20 + value.key_value.get_value_name_length() + if pos % 2 != 0: + pos += 1 + + continue + + pos += 2 + continue + + pos += 2 + + def scan(self): + """This method yields RegistryKey objects for deleted keys and RegistryValue objects for deleted values. + A hive is required to have the free map built (or nothing will be recovered). + """ + + for file_offset in self.hive.registry_file.cell_map_free: + cell = self.hive.registry_file.get_cell_naive(file_offset - RegistryFile.BASE_BLOCK_LENGTH_PRIMARY) + + for result in self.process_cell(cell): + yield result + + virtual_cell = self.virtual_cell() + if virtual_cell is not None: + for result in self.process_cell(virtual_cell): + yield result + + if self.scan_slack_space: + for slack in self.hive.effective_slack: + if len(slack) % 2 != 0: + virtual_cell = slack[ 1 : ] + else: + virtual_cell = slack + + for result in self.process_cell(virtual_cell): + yield result diff --git a/yarp/__init__.py b/yarp/__init__.py new file mode 100644 index 0000000..7e8344d --- /dev/null +++ b/yarp/__init__.py @@ -0,0 +1,5 @@ +# yarp: yet another registry parser +# (c) Maxim Suhanov + +__version__ = '1.0.0-beta1' +__all__ = [ 'Registry', 'RegistryFile', 'RegistryRecords', 'RegistryRecover', 'RegistryCarve', 'RegistryHelpers' ]