From 6f50b08767488798290f2680823f1c62802c281b Mon Sep 17 00:00:00 2001 From: Gulshan Singh Date: Sun, 11 Dec 2022 19:17:33 -0800 Subject: [PATCH] Add commands to print kernel commandline and version (#1434) Co-authored-by: Gulshan Singh --- pwndbg/commands/__init__.py | 2 ++ pwndbg/commands/kcmdline.py | 12 ++++++++++++ pwndbg/commands/kversion.py | 12 ++++++++++++ pwndbg/gdblib/kernel/__init__.py | 12 ++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 pwndbg/commands/kcmdline.py create mode 100644 pwndbg/commands/kversion.py diff --git a/pwndbg/commands/__init__.py b/pwndbg/commands/__init__.py index 5b34da3db..3b4bbf18d 100644 --- a/pwndbg/commands/__init__.py +++ b/pwndbg/commands/__init__.py @@ -499,7 +499,9 @@ def load_commands(): import pwndbg.commands.ida import pwndbg.commands.ignore import pwndbg.commands.ipython_interactive + import pwndbg.commands.kcmdline import pwndbg.commands.kconfig + import pwndbg.commands.kversion import pwndbg.commands.leakfind import pwndbg.commands.memoize import pwndbg.commands.misc diff --git a/pwndbg/commands/kcmdline.py b/pwndbg/commands/kcmdline.py new file mode 100644 index 000000000..afc541ca0 --- /dev/null +++ b/pwndbg/commands/kcmdline.py @@ -0,0 +1,12 @@ +import argparse + +import pwndbg.commands +import pwndbg.gdblib.kernel + +parser = argparse.ArgumentParser(description="Return the kernel commandline (/proc/cmdline)") + + +@pwndbg.commands.ArgparsedCommand(parser) +@pwndbg.commands.OnlyWhenQemuKernel +def kcmdline(): + print(pwndbg.gdblib.kernel.kcmdline()) diff --git a/pwndbg/commands/kversion.py b/pwndbg/commands/kversion.py new file mode 100644 index 000000000..e051cc319 --- /dev/null +++ b/pwndbg/commands/kversion.py @@ -0,0 +1,12 @@ +import argparse + +import pwndbg.commands +import pwndbg.gdblib.kernel + +parser = argparse.ArgumentParser(description="Outputs the kernel version (/proc/version)") + + +@pwndbg.commands.ArgparsedCommand(parser) +@pwndbg.commands.OnlyWhenQemuKernel +def kversion(): + print(pwndbg.gdblib.kernel.kversion()) diff --git a/pwndbg/gdblib/kernel/__init__.py b/pwndbg/gdblib/kernel/__init__.py index 56935bbe9..e0436cee1 100644 --- a/pwndbg/gdblib/kernel/__init__.py +++ b/pwndbg/gdblib/kernel/__init__.py @@ -21,3 +21,15 @@ def kconfig(): if _kconfig is None: _kconfig = load_kconfig() return _kconfig + + +@pwndbg.lib.memoize.reset_on_start +def kcmdline() -> str: + cmdline_addr = pwndbg.gdblib.memory.pvoid(pwndbg.gdblib.symbol.address("saved_command_line")) + return pwndbg.gdblib.memory.string(cmdline_addr).decode("ascii") + + +@pwndbg.lib.memoize.reset_on_start +def kversion() -> str: + version_addr = pwndbg.gdblib.symbol.address("linux_banner") + return pwndbg.gdblib.memory.string(version_addr).decode("ascii").strip()