mirror of https://github.com/pwndbg/pwndbg.git
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.
51 lines
1.3 KiB
Python
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
|