Source code for dfvfs.lib.bde_helper

"""Helper function for BitLocker Drive Encryption (BDE) support."""


[docs] def BDEOpenVolume(bde_volume, path_spec, file_object, key_chain): """Opens the BDE volume using the path specification. Args: bde_volume (pybde.volume): BDE volume. path_spec (PathSpec): path specification. file_object (FileIO): file-like object. key_chain (KeyChain): key chain. """ password = key_chain.GetCredential(path_spec, "password") if password: bde_volume.set_password(password) recovery_password = key_chain.GetCredential(path_spec, "recovery_password") if recovery_password: bde_volume.set_recovery_password(recovery_password) startup_key = key_chain.GetCredential(path_spec, "startup_key") if startup_key: bde_volume.read_startup_key(startup_key) bde_volume.open_file_object(file_object)
[docs] def BDEUnlockVolume(bde_volume, path_spec, key_chain): """Unlocks a BDE volume using the path specification. Args: bde_volume (pybde.volume): BDE volume. path_spec (PathSpec): path specification. key_chain (KeyChain): key chain. Returns: bool: True if the volume is unlocked, False otherwise. """ is_locked = bde_volume.is_locked() if is_locked: password = key_chain.GetCredential(path_spec, "password") if password: bde_volume.set_password(password) recovery_password = key_chain.GetCredential(path_spec, "recovery_password") if recovery_password: bde_volume.set_recovery_password(recovery_password) startup_key = key_chain.GetCredential(path_spec, "startup_key") if startup_key: bde_volume.read_startup_key(startup_key) is_locked = not bde_volume.unlock() return not is_locked