Пример #1
0
def reg_diff(first_hive_path, second_hive_path, output_path, verbose):
    with logbook.NestedSetup(
            _get_log_handlers(verbose=verbose)).applicationbound():
        REGDIFF_HEADERS = [
            'difference', 'first_hive', 'second_hive', 'description'
        ]

        found_differences = compare_hives(first_hive_path,
                                          second_hive_path,
                                          verbose=verbose)
        click.secho('Comparing {} vs {}'.format(
            os.path.basename(first_hive_path),
            os.path.basename(second_hive_path)))

        if output_path:
            with open(output_path, 'w') as csvfile:
                csvwriter = csv.writer(csvfile,
                                       delimiter='|',
                                       quoting=csv.QUOTE_MINIMAL)
                csvwriter.writerow(REGDIFF_HEADERS)
                for difference in found_differences:
                    csvwriter.writerow(difference)
        else:
            click.secho(
                tabulate(found_differences,
                         headers=REGDIFF_HEADERS,
                         tablefmt='fancy_grid'))
        click.secho(f'Detected {len(found_differences)} differences',
                    fg='green')
Пример #2
0
def test_regdiff(ntuser_hive, second_hive_path):
    found_differences = compare_hives(ntuser_hive,
                                      second_hive_path,
                                      verbose=True)
    assert len(found_differences) == 7
    assert len([x for x in found_differences if x[0] == 'new_subkey']) == 6
    assert len([x for x in found_differences if x[0] == 'new_value']) == 1
Пример #3
0
def test_ntuser_apply_transaction_logs(transaction_ntuser, transaction_log):
    output_path = os.path.join(mkdtemp(), 'recovered_hive.dat')
    restored_hive_path, recovered_dirty_pages_count = apply_transaction_logs(
        transaction_ntuser, transaction_log, restored_hive_path=output_path)
    assert recovered_dirty_pages_count == 132

    found_differences = compare_hives(transaction_ntuser, restored_hive_path)
    assert len(found_differences) == 588
    assert len([x for x in found_differences if x[0] == 'new_subkey']) == 527
    assert len([x for x in found_differences if x[0] == 'new_value']) == 60
Пример #4
0
def test_system_apply_transaction_logs(transaction_system, transaction_log_1, transaction_log_2):
    output_path = os.path.join(mkdtemp(), 'recovered_hive.dat')
    restored_hive_path, recovered_dirty_pages_count = apply_transaction_logs(transaction_system,
                                                                             primary_log_path=transaction_log_1,
                                                                             secondary_log_path=transaction_log_2,
                                                                             restored_hive_path=output_path)
    assert recovered_dirty_pages_count == 315

    found_differences = compare_hives(transaction_system, restored_hive_path)
    assert len(found_differences) == 2486
    assert len([x for x in found_differences if x[0] == 'new_subkey']) == 2472
    assert len([x for x in found_differences if x[0] == 'new_value']) == 13
Пример #5
0
def test_system_apply_transaction_logs_2(transaction_usrclass, usrclass_tr_log_1, usrclass_tr_log_2):
    output_path = os.path.join(mkdtemp(), 'recovered_hive.dat')
    restored_hive_path, recovered_dirty_pages_count = apply_transaction_logs(transaction_usrclass,
                                                                             primary_log_path=usrclass_tr_log_1,
                                                                             secondary_log_path=usrclass_tr_log_2,
                                                                             restored_hive_path=output_path)
    assert recovered_dirty_pages_count == 158

    found_differences = compare_hives(transaction_usrclass, restored_hive_path)
    assert len(found_differences) == 73
    assert len([x for x in found_differences if x[0] == 'new_subkey']) == 33
    assert len([x for x in found_differences if x[0] == 'new_value']) == 40
Пример #6
0
def test_ntuser_apply_transaction_logs(transaction_ntuser, transaction_log):
    output_path = os.path.join(mkdtemp(), 'recovered_hive.dat')
    restored_hive_path, recovered_dirty_pages_count = apply_transaction_logs(
        transaction_ntuser, transaction_log, restored_hive_path=output_path)
    assert recovered_dirty_pages_count == 132

    found_differences = compare_hives(transaction_ntuser, restored_hive_path)
    assert len(found_differences) == 587
    assert len([x for x in found_differences if x[0] == 'new_subkey']) == 527
    assert len([x for x in found_differences if x[0] == 'new_value']) == 59


# TODO:
# Have a REG file of a couple of registry hives, and compare with output of regipy