diff --git a/volatility/framework/automagic/construct_layers.py b/volatility/framework/automagic/construct_layers.py index 47efd1364..66288db69 100644 --- a/volatility/framework/automagic/construct_layers.py +++ b/volatility/framework/automagic/construct_layers.py @@ -60,4 +60,8 @@ class ConstructionMagic(interfaces.automagic.AutomagicInterface): elif isinstance(requirement, interfaces.configuration.ConstructableRequirementInterface): # We know all the subrequirements are filled, so let's populate requirement.construct(context, config_path) + + if progress_callback is not None: + progress_callback(100, "Reconstruction finished") + return [] diff --git a/volatility/framework/automagic/pdbscan.py b/volatility/framework/automagic/pdbscan.py index 8762c0ddb..f46b110f7 100644 --- a/volatility/framework/automagic/pdbscan.py +++ b/volatility/framework/automagic/pdbscan.py @@ -300,3 +300,6 @@ class KernelPDBScanner(interfaces.automagic.AutomagicInterface): if valid_kernel: self.recurse_symbol_fulfiller(context, valid_kernel, progress_callback) self.set_kernel_virtual_offset(context, valid_kernel) + + if progress_callback is not None: + progress_callback(100, "PDB scanning finished") diff --git a/volatility/framework/automagic/stacker.py b/volatility/framework/automagic/stacker.py index 982c4b0c0..657388c00 100644 --- a/volatility/framework/automagic/stacker.py +++ b/volatility/framework/automagic/stacker.py @@ -66,6 +66,8 @@ class LayerStacker(interfaces.automagic.AutomagicInterface): # Search for suitable requirements self.stack(context, config_path, requirement, progress_callback) + if progress_callback is not None: + progress_callback(100, "Stacking attempts finished") return None def stack(self, context: interfaces.context.ContextInterface, config_path: str, diff --git a/volatility/framework/automagic/symbol_cache.py b/volatility/framework/automagic/symbol_cache.py index fc1b3671e..89d72718f 100644 --- a/volatility/framework/automagic/symbol_cache.py +++ b/volatility/framework/automagic/symbol_cache.py @@ -122,3 +122,6 @@ class SymbolBannerCache(interfaces.automagic.AutomagicInterface): # Rewrite the cached banners each run, since writing is faster than the banner_cache validation portion self.save_banners(banners) + + if progress_callback is not None: + progress_callback(100, "Built {} caches".format(self.os))