diff --git a/dissect/target/tools/shell.py b/dissect/target/tools/shell.py index b772090c5e..e1104f409b 100644 --- a/dissect/target/tools/shell.py +++ b/dissect/target/tools/shell.py @@ -10,6 +10,7 @@ import logging import os import platform +import plistlib import pydoc import random import re @@ -23,6 +24,7 @@ from datetime import datetime, timedelta, timezone from enum import IntEnum from pathlib import Path, PurePosixPath +from pprint import pprint from tarfile import BLKTYPE, CHRTYPE, DIRTYPE, FIFOTYPE, LNKTYPE, REGTYPE, SYMTYPE from typing import TYPE_CHECKING, Any, BinaryIO, ClassVar, TextIO @@ -1504,6 +1506,16 @@ def cmd_hexdump(self, args: argparse.Namespace, stdout: TextIO) -> bool: return False + @arg("path", type=TargetPathArgument) + def cmd_plcat(self, args: argparse.Namespace, stdout: TextIO) -> bool: + """Print the contents of an Apple plist file.""" + paths = list(self.resolve_glob_path(args.path)) + for path in paths: + if len(paths) > 1: + print(path) + pprint(plistlib.load(path.open("rb")), stream=stdout) + return False + @arg("path", type=TargetPathArgument) @alias("digest") @alias("shasum")