Welcome to pymsfrpc’s documentation!

Indices and tables

Getting started

install from pip.

sudo pip3 install pymsfrpc

open msfconsole and setup the server.

msfconsole
msf> load msgrpc

This will output the username and password of the server. Type this out in a python script. To properly index a returned dict use the b tag before the index str.

from pymsfrpc import msfrpc
ip = "your server ip"
user = "your username"
passwd = "your passwd"
c = msfrpc.Client(ip,user,passwd)
output = c.get_version()
print(output[b"version"])
print(output[b"ruby"])

Docs and reference

Errors
AuthError(Exception)
AuthError is thrown when a problem occurs during authentication
ConnectionError(Exception)
ConnectionError occurs when the script can’t be connected to the server
Class
Client(str adress, str username, str password)

This object contains all the methods dealing with interacting with the server. It takes arguments for the ip of the server, the username and the password.

Client.get_version()
Returns a binary formated dict with the ruby and metasploit versions
Client.list_consoles()
Returns a binary formated dict with the consoles and each id, prompt and if they are busy
Client.create_console()
Creates a console, returns a binary formated dict with the id and prompt.
Client.destroy_console(str id)
Destroys a console based on the id of the console.
Client.read_console(str id)
Reads the text from a console given the id
Client.write_console(str id, str cmd, bool process=True)
Writes to the console given the id the text inside cmd. If process doesn’t equal True the command will not execute.
Client.list_sessions()
Lists all the sessions
Client.stop_sessions(str id)
stops the session with the given id
Client.write_shell(str ses_id, str data, bool process=true)
writes data to a shell using a session id. If process is not true it does not execute
Client.read_shell(str ses_id)
reads data from a shell using a session id
Client.read_meterpreter(str ses_id)
reads data from a meterpreter session
Client.write_meterpreter(str ses_id str data)
sends a command to a meterpreter session
Client.run_module(str _type, str name, str HOST, str PORT, bool payload=false)
runs a given module where _type is the type of module, name is the name, and host and port are the ip and port. PAYLOAD MUST BE TRUE IF USING THE PAYLOAD TYPE

Port other methods

The metasploit project has more methods in the pro version. I can’t properly test any of the modules because I don’t own a copy of the pro version. So instead I can show you how one would port the method.
from pymsfrpc import msfrpc
ip = "your ip"
user = "your user"
passwd = "your passwd"
c = msfrpc.Client(ip,user,passwd)
c.send_command(["your call",self.token])

If there are any args they are added after the token.