diff --git a/acquire/acquire.py b/acquire/acquire.py index 3f0392b7..c80967d7 100644 --- a/acquire/acquire.py +++ b/acquire/acquire.py @@ -2334,19 +2334,29 @@ class VolatileProfile: } -def exit_success(default_args: list[str]) -> NoReturn: +def exit_success(args: argparse.Namespace) -> NoReturn: + default_args = args.config.get("arguments") log.info("Acquire finished successful") log.info("Arguments: %s", " ".join(sys.argv[1:])) log.info("Default Arguments: %s", " ".join(default_args)) log.info("Exiting with status code 0 (SUCCESS)") + + if args.wait_exit: + input("Press any key to exit...") + sys.exit(0) -def exit_failure(default_args: list[str]) -> NoReturn: +def exit_failure(args: argparse.Namespace) -> NoReturn: + default_args = args.config.get("arguments") log.error("Acquire FAILED") log.error("Arguments: %s", " ".join(sys.argv[1:])) log.error("Default Arguments: %s", " ".join(default_args)) log.error("Exiting with status code 1 (FAILURE)") + + if args.wait_exit: + input("Press any key to exit...") + sys.exit(1) @@ -2494,9 +2504,9 @@ def main() -> None: log.exception("") if acquire_successful: - exit_success(args.config.get("arguments")) + exit_success(args) else: - exit_failure(args.config.get("arguments")) + exit_failure(args) def load_child(target: Target, child_path: Path) -> None: diff --git a/acquire/utils.py b/acquire/utils.py index 26c3a01e..8e833333 100644 --- a/acquire/utils.py +++ b/acquire/utils.py @@ -185,6 +185,8 @@ def create_argument_parser(profiles: dict, volatile: dict, modules: dict) -> arg parser.add_argument("-K", "--keychain-file", type=Path, help="keychain file in CSV format") parser.add_argument("-Kv", "--keychain-value", help="passphrase, recovery key or key file path value") + parser.add_argument("--wait-exit", help="wait on exit, needs to press a key before closing", action="store_true") + for module_cls in modules.values(): for args, kwargs in module_cls.__cli_args__: parser.add_argument(*args, **kwargs)