You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pwndbg/tests/gdb-tests/tests/test_command_procinfo.py

51 lines
1.3 KiB
Python

from __future__ import annotations
import os
import shutil
import signal
import subprocess
import gdb
import tests
REFERENCE_BINARY_NET = tests.binaries.get("reference-binary-net.out")
def test_command_procinfo(start_binary):
start_binary(REFERENCE_BINARY_NET)
# Check if netcat exists
nc_path = shutil.which("nc")
assert nc_path is not None, "netcat is not installed"
# Spawn netcat
netcat_process = subprocess.Popen(
[nc_path, "-l", "-p", "31337"],
stdin=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
)
bin_path = gdb.execute("pi pwndbg.gdblib.proc.exe", to_string=True).strip("\n")
pid = gdb.execute("pi pwndbg.gdblib.proc.pid", to_string=True).strip("\n")
gdb.execute("break break_here")
gdb.execute("continue")
result = gdb.execute("procinfo", to_string=True)
res_list = result.split("\n")
assert bin_path in res_list[0]
assert pid in res_list[3]
assert "127.0.0.1:31337" in result
# Close netcat
os.killpg(os.getpgid(netcat_process.pid), signal.SIGTERM)
def test_command_procinfo_before_binary_start():
result = gdb.execute("procinfo", to_string=True)
assert "The program is not being run" in result