From 2f1fcb3fcf514601a0abc3bb358c447d220187f8 Mon Sep 17 00:00:00 2001 From: JSCU-CNI <121175071+JSCU-CNI@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:02:03 +0100 Subject: [PATCH 1/2] fix activity plugin for unix When a target system contains (broken) symlinks in /var/log, the activity plugin could break. --- dissect/target/plugins/os/unix/generic.py | 2 ++ dissect/target/tools/info.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dissect/target/plugins/os/unix/generic.py b/dissect/target/plugins/os/unix/generic.py index 5d7c06533..e3cd459c4 100644 --- a/dissect/target/plugins/os/unix/generic.py +++ b/dissect/target/plugins/os/unix/generic.py @@ -20,6 +20,8 @@ def activity(self) -> Optional[datetime]: last_seen = 0 for f in var_log.iterdir(): + if f.is_symlink() or not f.exists(): + continue if f.stat().st_mtime > last_seen: last_seen = f.stat().st_mtime diff --git a/dissect/target/tools/info.py b/dissect/target/tools/info.py index 7c2af20da..ea2361d82 100644 --- a/dissect/target/tools/info.py +++ b/dissect/target/tools/info.py @@ -86,7 +86,8 @@ def main(): print("-" * 70) print_target_info(target) except Exception as e: - target.log.error("Exception in retrieving information for target: `%s`", target, exc_info=e) + target.log.error("Exception in retrieving information for target: `%s`. Use `-vv` for details.", target) + target.log.debug("", exc_info=e) def get_target_info(target: Target) -> dict[str, Union[str, list[str]]]: From 7555ce4edc3b1d05ea074c550c9fb26d8a2f71a7 Mon Sep 17 00:00:00 2001 From: JSCU-CNI <121175071+JSCU-CNI@users.noreply.github.com> Date: Thu, 7 Dec 2023 09:54:02 +0100 Subject: [PATCH 2/2] implement review comment --- dissect/target/plugins/os/unix/generic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dissect/target/plugins/os/unix/generic.py b/dissect/target/plugins/os/unix/generic.py index e3cd459c4..272a57684 100644 --- a/dissect/target/plugins/os/unix/generic.py +++ b/dissect/target/plugins/os/unix/generic.py @@ -20,7 +20,7 @@ def activity(self) -> Optional[datetime]: last_seen = 0 for f in var_log.iterdir(): - if f.is_symlink() or not f.exists(): + if not f.exists(): continue if f.stat().st_mtime > last_seen: last_seen = f.stat().st_mtime