Skip to content

Commit b78b7a5

Browse files
committed
Switch virtual and physical addresses to lists to support dumping multiple files at once #1319
1 parent 789081e commit b78b7a5

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

volatility3/framework/plugins/windows/dumpfiles.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]
4444
description="Process ID to include (all other processes are excluded)",
4545
optional=True,
4646
),
47-
requirements.IntRequirement(
47+
requirements.ListRequirement(
4848
name="virtaddr",
49+
element_type=int,
4950
description="Dump a single _FILE_OBJECT at this virtual address",
5051
optional=True,
5152
),
52-
requirements.IntRequirement(
53+
requirements.ListRequirement(
5354
name="physaddr",
55+
element_type=int,
5456
description="Dump a single _FILE_OBJECT at this physical address",
5557
optional=True,
5658
),
@@ -318,6 +320,7 @@ def _generator(self, procs: List, offsets: List):
318320
)
319321

320322
elif offsets:
323+
321324
# Now process any offsets explicitly requested by the user.
322325
for offset, is_virtual in offsets:
323326
try:
@@ -355,10 +358,14 @@ def run(self):
355358
):
356359
raise ValueError("Cannot use filter flag with an address flag")
357360

358-
if self.config.get("virtaddr", None) is not None:
359-
offsets.append((self.config["virtaddr"], True))
360-
elif self.config.get("physaddr", None) is not None:
361-
offsets.append((self.config["physaddr"], False))
361+
if self.config.get("virtaddr"):
362+
for virtaddr in self.config["virtaddr"]:
363+
offsets.append((virtaddr, True))
364+
365+
elif self.config.get("physaddr"):
366+
for physaddr in self.config["physaddr"]:
367+
offsets.append((physaddr, False))
368+
362369
else:
363370
filter_func = pslist.PsList.create_pid_filter(
364371
[self.config.get("pid", None)]

0 commit comments

Comments
 (0)