dissect.database 1.2.dev2__tar.gz → 1.2.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dissect_database-1.2.dev2/dissect.database.egg-info → dissect_database-1.2.dev3}/PKG-INFO +1 -1
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/ntds.py +47 -2
- dissect_database-1.2.dev3/dissect/database/ese/ntds/objects/secret.py +99 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3/dissect.database.egg-info}/PKG-INFO +1 -1
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_ntds.py +28 -0
- dissect_database-1.2.dev2/dissect/database/ese/ntds/objects/secret.py +0 -13
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/COPYRIGHT +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/LICENSE +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/MANIFEST.in +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/README.md +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/c_db.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/c_db.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/db.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/c_rpm.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/c_rpm.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/rpm.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/c_ese.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/c_ese.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/compression.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/cursor.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ese.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/exception.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/index.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/lcmapstring.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_ds.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_ds.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_pek.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_pek.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_sd.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/c_sd.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/database.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/applicationsettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/attributeschema.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/builtindomain.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/certificationauthority.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/classschema.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/classstore.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/computer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/configuration.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/container.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/controlaccessright.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/crldistributionpoint.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/crossref.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/crossrefcontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dfsconfiguration.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/displayspecifier.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dmd.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dnsnode.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dnszone.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/domain.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/domaindns.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/domainpolicy.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dsuisettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/filelinktracking.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/foreignsecurityprincipal.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/group.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/grouppolicycontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/infrastructureupdate.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/intersitetransport.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/intersitetransportcontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecbase.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecfilter.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecisakmppolicy.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecnegotiationpolicy.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecnfa.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ipsecpolicy.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/leaf.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/linktrackobjectmovetable.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/linktrackvolumetable.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/locality.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/lostandfound.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msauthz_centralaccesspolicies.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msauthz_centralaccessrules.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_content.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_contentset.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_globalsettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_localsettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_member.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_replicationgroup.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_subscriber.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_subscription.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdfsr_topology.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msdns_serversettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_authnpolicies.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_authnpolicysilos.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_claimstransformationpolicies.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_claimtype.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_claimtypepropertybase.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_claimtypes.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_optionalfeature.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_passwordsettingscontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_quotacontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_resourceproperties.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_resourceproperty.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_resourcepropertylist.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_shadowprincipalcontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msds_valuetype.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msimaging_psps.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/mskds_provserverconfiguration.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msmqenterprisesettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/mspki_enterpriseoid.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/mspki_privatekeyrecoveryagent.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/msspp_activationobjectscontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/mstpm_informationobjectscontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntdsconnection.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntdsdsa.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntdsservice.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntdssitesettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntfrssettings.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/object.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/organizationalperson.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/organizationalunit.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/person.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/physicallocation.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/pkicertificatetemplate.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/pkienrollmentservice.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/querypolicy.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ridmanager.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ridset.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/rpccontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/rrasadministrationdictionary.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/samserver.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/securityobject.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/server.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/serverscontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/site.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/sitelink.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/sitescontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/subnetcontainer.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/subschema.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/top.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/trusteddomain.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/user.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/pek.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/query.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/schema.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/sd.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/tools/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/tools/ntds.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/page.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/record.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/sorting_table.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/table.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/certlog.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/impacket.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/sru.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/ual.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/exception.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/c_sqlite3.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/c_sqlite3.pyi +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/encryption/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/encryption/sqlcipher/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/encryption/sqlcipher/exception.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/encryption/sqlcipher/sqlcipher.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/exception.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/sqlite3.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/wal.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/SOURCES.txt +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/dependency_links.txt +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/entry_points.txt +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/requires.txt +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/top_level.txt +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/pyproject.toml +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/setup.cfg +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_docs/Makefile +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_docs/conf.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_docs/index.rst +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_tools/sqlite3/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_tools/sqlite3/generate_sqlite.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/bsd/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/bsd/conftest.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/bsd/test_db.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/bsd/test_rpm.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/conftest.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/conftest.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/conftest.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_benchmark.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_pek.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_query.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_schema.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_sd.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/ntds/test_util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_cursor.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_ese.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_index.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_page.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_record.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/test_table.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/tools/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/tools/test_certlog.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/tools/test_sru.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/ese/tools/test_ual.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/__init__.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/conftest.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_default_values.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_row.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_sqlcipher.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_sqlite3.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_util.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_wal.py +0 -0
- {dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.database
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.dev3
|
|
4
4
|
Summary: A Dissect module implementing parsers for various database formats, including Berkeley DB, Microsofts Extensible Storage Engine (ESE) and SQLite3
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING, BinaryIO
|
|
4
|
+
from uuid import UUID
|
|
4
5
|
|
|
5
6
|
from dissect.database.ese.ntds.database import Database
|
|
7
|
+
from dissect.database.ese.ntds.objects.secret import BackupKey
|
|
6
8
|
|
|
7
9
|
if TYPE_CHECKING:
|
|
8
10
|
from collections.abc import Iterator
|
|
9
11
|
|
|
10
|
-
from dissect.database.ese.ntds.objects import
|
|
11
|
-
|
|
12
|
+
from dissect.database.ese.ntds.objects import (
|
|
13
|
+
Computer,
|
|
14
|
+
DomainDNS,
|
|
15
|
+
Group,
|
|
16
|
+
GroupPolicyContainer,
|
|
17
|
+
Object,
|
|
18
|
+
Secret,
|
|
19
|
+
Server,
|
|
20
|
+
TrustedDomain,
|
|
21
|
+
User,
|
|
22
|
+
)
|
|
12
23
|
from dissect.database.ese.ntds.pek import PEK
|
|
13
24
|
|
|
14
25
|
|
|
@@ -93,3 +104,37 @@ class NTDS:
|
|
|
93
104
|
def group_policies(self) -> Iterator[GroupPolicyContainer]:
|
|
94
105
|
"""Get all group policy objects (GPO) objects from the database."""
|
|
95
106
|
yield from self.search(objectClass="groupPolicyContainer")
|
|
107
|
+
|
|
108
|
+
def secrets(self) -> Iterator[Secret]:
|
|
109
|
+
"""Get all secret objects from the database."""
|
|
110
|
+
yield from self.search(objectClass="secret")
|
|
111
|
+
|
|
112
|
+
def backup_keys(self) -> Iterator[BackupKey]:
|
|
113
|
+
"""Get all DPAPI backup keys from the database."""
|
|
114
|
+
if not self.pek.unlocked:
|
|
115
|
+
raise ValueError("PEK must be unlocked to retrieve backup keys")
|
|
116
|
+
|
|
117
|
+
for secret in self.secrets():
|
|
118
|
+
if secret.is_phantom or not secret.name.startswith("BCKUPKEY_") or secret.name.startswith("BCKUPKEY_P"):
|
|
119
|
+
continue
|
|
120
|
+
|
|
121
|
+
yield BackupKey(secret)
|
|
122
|
+
|
|
123
|
+
def preferred_backup_keys(self) -> Iterator[BackupKey]:
|
|
124
|
+
"""Get preferred DPAPI backup keys from the database."""
|
|
125
|
+
if not self.pek.unlocked:
|
|
126
|
+
raise ValueError("PEK must be unlocked to retrieve backup keys")
|
|
127
|
+
|
|
128
|
+
# We could do this the proper way (lookup the BCKUPKEY_P* secrets and then directly lookup the
|
|
129
|
+
# corresponding BCKUPKEY_* secrets), but in practice there are only a few backup keys, so just
|
|
130
|
+
# filter after the fact
|
|
131
|
+
preferred_guids = []
|
|
132
|
+
for secret in self.secrets():
|
|
133
|
+
if secret.is_phantom or not secret.name.startswith("BCKUPKEY_P"):
|
|
134
|
+
continue
|
|
135
|
+
|
|
136
|
+
preferred_guids.append(UUID(bytes_le=secret.current_value))
|
|
137
|
+
|
|
138
|
+
for key in self.backup_keys():
|
|
139
|
+
if key.guid in preferred_guids:
|
|
140
|
+
yield key
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from functools import cached_property
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
5
|
+
from uuid import UUID
|
|
6
|
+
|
|
7
|
+
from dissect.util.ts import wintimestamp
|
|
8
|
+
|
|
9
|
+
from dissect.database.ese.ntds.c_ds import c_ds
|
|
10
|
+
from dissect.database.ese.ntds.objects.leaf import Leaf
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from datetime import datetime
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Secret(Leaf):
|
|
17
|
+
"""Represents a secret object in the Active Directory.
|
|
18
|
+
|
|
19
|
+
References:
|
|
20
|
+
- https://learn.microsoft.com/en-us/windows/win32/adschema/c-secret
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
__object_class__ = "secret"
|
|
24
|
+
|
|
25
|
+
def __repr_body__(self) -> str:
|
|
26
|
+
return f"name={self.name!r} last_set_time={self.last_set_time} prior_set_time={self.prior_set_time}"
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def current_value(self) -> bytes:
|
|
30
|
+
"""Return the current value of the secret."""
|
|
31
|
+
return self.get("currentValue")
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def last_set_time(self) -> datetime | None:
|
|
35
|
+
"""Return the last set time of the secret."""
|
|
36
|
+
if (ts := self.get("lastSetTime")) is not None:
|
|
37
|
+
return wintimestamp(ts)
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def prior_value(self) -> bytes:
|
|
42
|
+
"""Return the prior value of the secret."""
|
|
43
|
+
return self.get("priorValue")
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def prior_set_time(self) -> datetime | None:
|
|
47
|
+
"""Return the prior set time of the secret."""
|
|
48
|
+
if (ts := self.get("priorSetTime")) is not None:
|
|
49
|
+
return wintimestamp(ts)
|
|
50
|
+
return None
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class BackupKey:
|
|
54
|
+
"""Represents a DPAPI backup key object in the Active Directory."""
|
|
55
|
+
|
|
56
|
+
def __init__(self, secret: Secret):
|
|
57
|
+
self.secret = secret
|
|
58
|
+
|
|
59
|
+
def __repr__(self) -> str:
|
|
60
|
+
return f"<BackupKey guid={self.guid} version={self.version}>"
|
|
61
|
+
|
|
62
|
+
@cached_property
|
|
63
|
+
def guid(self) -> UUID:
|
|
64
|
+
"""The GUID of the backup key."""
|
|
65
|
+
return UUID(self.secret.name.removeprefix("BCKUPKEY_").removesuffix(" Secret"))
|
|
66
|
+
|
|
67
|
+
@cached_property
|
|
68
|
+
def version(self) -> int:
|
|
69
|
+
"""The version of the backup key."""
|
|
70
|
+
return c_ds.DWORD(self.secret.current_value)
|
|
71
|
+
|
|
72
|
+
@cached_property
|
|
73
|
+
def is_legacy(self) -> bool:
|
|
74
|
+
"""Whether the backup key is a legacy key (version 1)."""
|
|
75
|
+
return self.version == 1
|
|
76
|
+
|
|
77
|
+
@cached_property
|
|
78
|
+
def key(self) -> bytes:
|
|
79
|
+
"""The key bytes of the backup key, for legacy keys (version 1)."""
|
|
80
|
+
if self.version == 1:
|
|
81
|
+
return self.secret.current_value[4:]
|
|
82
|
+
raise TypeError(f"Backup key version {self.version} does not have a single key value")
|
|
83
|
+
|
|
84
|
+
@cached_property
|
|
85
|
+
def private_key(self) -> bytes:
|
|
86
|
+
"""The private key bytes of the backup key, for version 2 keys."""
|
|
87
|
+
if self.version == 2:
|
|
88
|
+
private_length = c_ds.DWORD(self.secret.current_value[4:8])
|
|
89
|
+
return self.secret.current_value[12 : 12 + private_length]
|
|
90
|
+
raise TypeError(f"Backup key version {self.version} does not have a private key value")
|
|
91
|
+
|
|
92
|
+
@cached_property
|
|
93
|
+
def public_key(self) -> bytes:
|
|
94
|
+
"""The public key bytes of the backup key, for version 2 keys."""
|
|
95
|
+
if self.version == 2:
|
|
96
|
+
private_length = c_ds.DWORD(self.secret.current_value[4:8])
|
|
97
|
+
public_length = c_ds.DWORD(self.secret.current_value[8:12])
|
|
98
|
+
return self.secret.current_value[12 + private_length : 12 + private_length + public_length]
|
|
99
|
+
raise TypeError(f"Backup key version {self.version} does not have a public key value")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.database
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.dev3
|
|
4
4
|
Summary: A Dissect module implementing parsers for various database formats, including Berkeley DB, Microsofts Extensible Storage Engine (ESE) and SQLite3
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import hashlib
|
|
3
4
|
from typing import TYPE_CHECKING
|
|
5
|
+
from uuid import UUID
|
|
4
6
|
|
|
5
7
|
import pytest
|
|
6
8
|
|
|
@@ -265,6 +267,7 @@ def test_all_memberships(large: NTDS) -> None:
|
|
|
265
267
|
|
|
266
268
|
|
|
267
269
|
def test_group_policies(goad: NTDS) -> None:
|
|
270
|
+
"""Test retrieval of group policies."""
|
|
268
271
|
gpos: list[GroupPolicyContainer] = sorted(goad.group_policies(), key=lambda x: x.distinguished_name)
|
|
269
272
|
assert len(gpos) == 5
|
|
270
273
|
assert isinstance(gpos[0], GroupPolicyContainer)
|
|
@@ -275,3 +278,28 @@ def test_group_policies(goad: NTDS) -> None:
|
|
|
275
278
|
"CN={6AC1786C-016F-11D2-945F-00C04FB984F9},CN=POLICIES,CN=SYSTEM,DC=NORTH,DC=SEVENKINGDOMS,DC=LOCAL",
|
|
276
279
|
"CN={6AC1786C-016F-11D2-945F-00C04FB984F9},CN=POLICIES,CN=SYSTEM,DC=SEVENKINGDOMS,DC=LOCAL",
|
|
277
280
|
]
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def test_backup_keys(goad: NTDS) -> None:
|
|
284
|
+
"""Test retrieval of DPAPI backup keys."""
|
|
285
|
+
with pytest.raises(ValueError, match="PEK must be unlocked to retrieve backup keys"):
|
|
286
|
+
list(goad.backup_keys())
|
|
287
|
+
|
|
288
|
+
goad.pek.unlock(bytes.fromhex("079f95655b66f16deb28aa1ab3a81eb0"))
|
|
289
|
+
|
|
290
|
+
keys = list(goad.backup_keys())
|
|
291
|
+
assert len(keys) == 2
|
|
292
|
+
assert keys[0].guid == UUID("dbea00d0-005f-4233-b140-41a9961da100")
|
|
293
|
+
assert keys[0].version == 1
|
|
294
|
+
assert hashlib.sha256(keys[0].key).hexdigest() == "bae7b058f277922b75d63d9803b85fca40a95a3cc9d47c0ef0a644a203009562"
|
|
295
|
+
|
|
296
|
+
assert keys[1].guid == UUID("b7d3c47b-2efe-4cad-b37a-bb2f8b18bd87")
|
|
297
|
+
assert keys[1].version == 2 # Current key version
|
|
298
|
+
assert (
|
|
299
|
+
hashlib.sha256(keys[1].private_key).hexdigest()
|
|
300
|
+
== "e7317dfe5f962121afead04e0dbb4249aa395ef281e2332f6179f940b54f202f"
|
|
301
|
+
)
|
|
302
|
+
assert (
|
|
303
|
+
hashlib.sha256(keys[1].public_key).hexdigest()
|
|
304
|
+
== "398fef9281677096b18785d0ad000251d41f76b82e28687718d6a9812ddaca8a"
|
|
305
|
+
)
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from dissect.database.ese.ntds.objects.leaf import Leaf
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Secret(Leaf):
|
|
7
|
-
"""Represents a secret object in the Active Directory.
|
|
8
|
-
|
|
9
|
-
References:
|
|
10
|
-
- https://learn.microsoft.com/en-us/windows/win32/adschema/c-secret
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
__object_class__ = "secret"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/bsd/tools/c_rpm.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dmd.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dnsnode.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/dnszone.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/domain.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/group.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/leaf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ntdsdsa.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/object.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/person.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/ridset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/server.py
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/site.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/top.py
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/objects/user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/tools/__init__.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/ntds/tools/ntds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/sorting_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/__init__.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/certlog.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/ese/tools/impacket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/__init__.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/c_sqlite3.py
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/c_sqlite3.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect/database/sqlite3/exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/requires.txt
RENAMED
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/dissect.database.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/_tools/sqlite3/generate_sqlite.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_database-1.2.dev2 → dissect_database-1.2.dev3}/tests/sqlite3/test_default_values.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|