Source code for tuoni.TuoniPayloadPlugin
import random
from tuoni.TuoniListener import *
from tuoni.TuoniPayloadTemplate import *
[docs]
class TuoniPayloadPlugin:
"""
A class that provides data for a payload plugin.
Attributes:
name (str): The name of the payload plugin.
vendor (str): The vendor of the payload plugin.
description (str): A description of the payload plugin.
plugin_id (str): The unique identifier of the payload plugin.
templates (list): A list of available payload templates.
Examples:
Iterate over payload plugins, inspect their templates, and create a payload
for each type defined in the template's configuration schema:
>>> payload_plugins = tuoni_c2.load_payload_plugins()
>>> for plugin in payload_plugins.values():
... print(f"Plugin: {plugin.name} ({plugin.plugin_id})")
... for template in plugin.templates:
... print(f" Template: {template.id}")
... type_values = (
... template.conf_schema
... .get("properties", {})
... .get("type", {})
... .get("enum", [])
... )
... for type_value in type_values:
... payload = TuoniPayload(
... conf={
... "templateId": template.id,
... "configuration": {"type": type_value}
... },
... c2=tuoni_c2
... )
... payload.create(listener_id=1)
... print(f" Created payload ID: {payload.payload_id}")
"""
def __init__(self, conf, c2):
"""
Constructor for the payload plugin class.
Args:
conf (dict): Data from the server.
c2 (TuoniC2): The related server object that manages communication.
"""
self.name = conf["info"]["name"]
self.vendor = conf["info"]["vendor"]
self.description = conf["info"]["description"]
self.plugin_id = conf["identifier"]["id"]
self.templates = []
for payloadTemplateName, payloadTemplate in conf["payloads"].items():
self.templates.append(TuoniPayloadTemplate(payloadTemplate, c2))
self.c2 = c2