From 991a0a1091352938b5a3413b4f0fe0357d78c06d Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Tue, 22 Dec 2020 17:11:46 +0000 Subject: [PATCH] Objects: Make repr(object) more useful --- volatility/framework/objects/__init__.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/volatility/framework/objects/__init__.py b/volatility/framework/objects/__init__.py index 30bbcbe74..dffc031de 100644 --- a/volatility/framework/objects/__init__.py +++ b/volatility/framework/objects/__init__.py @@ -549,6 +549,10 @@ class Array(interfaces.objects.ObjectInterface, collections.abc.Sequence): self._vol['count'] = value self._vol['size'] = value * self._vol['subtype'].size + def __repr__(self) -> str: + """Describes the object appropriately""" + return AggregateType.__repr__(self) + class VolTemplateProxy(interfaces.objects.ObjectInterface.VolTemplateProxy): @classmethod @@ -643,6 +647,15 @@ class AggregateType(interfaces.objects.ObjectInterface): member_name.""" return member_name in self.vol.members + def __repr__(self) -> str: + """Describes the object appropriately""" + extras = member_name = '' + if self.vol.native_layer_name != self.vol.layer_name: + extras += f' (Native: {self.vol.native_layer_name})' + if self.vol.member_name: + member_name = f' (.{self.vol.member_name})' + return f'<{self.__class__.__name__} {self.vol.type_name}{member_name}: {self.vol.layer_name} @ 0x{self.vol.offset:x} #{self.vol.size}{extras}>' + class VolTemplateProxy(interfaces.objects.ObjectInterface.VolTemplateProxy): @classmethod