pwncat/tests/test_session.py

69 lines
2.0 KiB
Python

#!/usr/bin/env python3
import pytest
from pwncat.modules import IncorrectPlatformError
def test_session_iter_users(session):
"""Test the ability to iterate users. This happens
implicitly with session.current_user(), but it's worth
testing separately."""
assert "john" in [user.name for user in session.iter_users()]
def test_session_find_user_name(session):
""" Test that locating a user by name works """
assert session.find_user(name="john") is not None
def test_session_find_user_uid(linux):
""" Test locating a user by their UID (for linux only) """
user = linux.find_user(uid=0)
assert user is not None
assert user.name == "root"
def test_session_find_user_sid(windows):
""" Test locating a user by their SID (for windows only) """
# This is the SID of the Administrator in the windows servercore image...
# This will only work from the testing container, but I've decided that's fine.
user = windows.find_user(uid="S-1-5-21-1417486881-3347836355-822217238-500")
assert user is not None
assert user.name == "Administrator"
def test_session_find_module(session):
""" Test that locating modules works """
assert len(list(session.find_module("enumerate.*"))) > 0
assert len(list(session.find_module("enumerate.user"))) == 1
assert len(list(session.find_module("module_does_not_exist"))) == 0
def test_session_run_module(session):
""" Test running a module within a session """
# We should be able to enumerate a hostname
facts = session.run("enumerate", types=["system.hostname"])
assert len(facts) > 0
def test_session_wrong_platform_linux(linux):
""" Test that windows modules don't run in linux """
with pytest.raises(IncorrectPlatformError):
linux.run("windows.enumerate.user")
def test_session_wrong_platform_windows(windows):
""" Test that linux modules don't run on windows """
with pytest.raises(IncorrectPlatformError):
windows.run("linux.enumerate.user")