diff --git a/mythic_container/AuthBase.py b/mythic_container/AuthBase.py index c4494c5..523a7b6 100644 --- a/mythic_container/AuthBase.py +++ b/mythic_container/AuthBase.py @@ -312,5 +312,5 @@ async def SendMythicRPCSyncAuth(auth_name: str) -> bool: await mythic_container.mythic_service.syncAuthData(auth) return True return False - except Exception as e: + except: return False \ No newline at end of file diff --git a/mythic_container/C2ProfileBase.py b/mythic_container/C2ProfileBase.py index d33260e..2660f2d 100644 --- a/mythic_container/C2ProfileBase.py +++ b/mythic_container/C2ProfileBase.py @@ -26,7 +26,7 @@ def __init__(self, self.Name = c2_profile_name self.Parameters = parameters for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self) -> dict: return { @@ -61,7 +61,7 @@ def __init__(self, self.Message = Message self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -92,7 +92,7 @@ def __init__(self, self.Name = c2_profile_name self.Parameters = parameters for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -127,7 +127,7 @@ def __init__(self, self.Message = Message self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -158,7 +158,7 @@ def __init__(self, self.Name = c2_profile_name self.Parameters = parameters for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -213,7 +213,7 @@ def __init__(self, self.IOCs = IOCs self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -244,7 +244,7 @@ def __init__(self, self.Name = c2_profile_name self.Parameters = parameters for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -279,7 +279,7 @@ def __init__(self, self.Message = Message self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -307,7 +307,7 @@ def __init__(self, **kwargs): self.Name = c2_profile_name for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -344,7 +344,7 @@ def __init__(self, self.InternalServerRunning = InternalServerRunning self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -376,7 +376,7 @@ def __init__(self, self.Name = c2_profile_name self.Parameters = parameters for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -411,7 +411,7 @@ def __init__(self, self.Message = Message self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -439,7 +439,7 @@ def __init__(self, **kwargs): self.Name = c2_profile_name for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -474,7 +474,7 @@ def __init__(self, self.Message = Message self.InternalServerRunning = InternalServerRunning for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -503,7 +503,7 @@ def __init__(self, **kwargs): self.Name = c2_profile_name for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -538,7 +538,7 @@ def __init__(self, self.Message = Message self.InternalServerRunning = InternalServerRunning for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -582,7 +582,7 @@ def __init__(self, if self.ServiceRPCFunctionArguments is None: self.ServiceRPCFunctionArguments = service_arguments for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -627,7 +627,7 @@ def __init__(self, self.Result = result self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -664,7 +664,7 @@ def __init__(self, self.HostURL = host_url self.Remove = remove for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -698,7 +698,7 @@ def __init__(self, self.Error = Error self.RestartInternalServer = RestartInternalServer for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { diff --git a/mythic_container/EventingBase.py b/mythic_container/EventingBase.py index d3a8fe9..c5e37a6 100644 --- a/mythic_container/EventingBase.py +++ b/mythic_container/EventingBase.py @@ -345,5 +345,5 @@ async def SendMythicRPCSyncEventing(eventing_name: str) -> bool: await mythic_container.mythic_service.syncEventingData(event) return True return False - except Exception as e: + except: return False \ No newline at end of file diff --git a/mythic_container/LoggingBase.py b/mythic_container/LoggingBase.py index f1dc2ab..4f23cfb 100644 --- a/mythic_container/LoggingBase.py +++ b/mythic_container/LoggingBase.py @@ -105,7 +105,7 @@ def __init__(self, self.LockedOperatorID = locked_operator_id self.Timestamp = timestamp for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -182,7 +182,7 @@ def __init__(self, self.OperationID = operation_id self.Host = host for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -252,7 +252,7 @@ def __init__(self, self.Comment = comment self.Deleted = deleted for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -371,7 +371,7 @@ def __init__(self, self.SHA1 = sha1 self.Comment = comment for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -442,7 +442,7 @@ def __init__(self, self.Window = window self.User = user for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -548,7 +548,7 @@ def __init__(self, self.TaskID = task_id self.FileID = file_id for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -606,7 +606,7 @@ def __init__(self, self.Response = base64.b64decode(response).decode() self.Timestamp = timestamp for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -675,7 +675,7 @@ def __init__(self, else: self.Data = data for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -785,5 +785,5 @@ async def SendMythicRPCSyncLogger(logger_name: str) -> bool: await mythic_container.mythic_service.syncLoggingData(log) return True return False - except Exception as e: + except: return False \ No newline at end of file diff --git a/mythic_container/MythicCommandBase.py b/mythic_container/MythicCommandBase.py index 3367865..d8aad85 100644 --- a/mythic_container/MythicCommandBase.py +++ b/mythic_container/MythicCommandBase.py @@ -567,12 +567,8 @@ def value(self, value): try: self.validation_func(type_validated) self._value = type_validated - except Exception as e: - raise ValueError( - "Failed validation check for parameter {} with value {}".format( - self.name, str(value) - ) - ) + except: + raise ValueError(f"Failed validation check for parameter {self.name} with value {value}") self.user_supplied = True return else: @@ -860,9 +856,8 @@ def load_args_from_json_string(self, command_line: str, add_unknown_args: bool = self.add_arg(key=k, value=v, type=ParameterType.Array) else: self.add_arg(key=k, value=v, type=ParameterType.String) - except Exception as e: - logger.error(e) - logger.error("Tried parsing command line as JSON when it's not") + except: + logger.exception("Tried parsing command line as JSON when it's not") return def load_args_from_dictionary(self, dictionary, add_unknown_args: bool = False) -> None: @@ -977,7 +972,7 @@ async def get_unused_args(self) -> str: else: groupName = self.get_parameter_group_name() except Exception as e: - logger.error(f"Failed to get group name for tasking: {e}\n") + logger.error("Failed to get group name for tasking") caughtException = f"Failed to get group name for tasking: {e}\n" groupName = "N/A" temp = {} @@ -1012,7 +1007,7 @@ def __str__(self) -> str: if len(self.args) > 0: try: groupName = self.get_parameter_group_name() - except Exception as e: + except: return self.command_line temp = {} for arg in self.args: @@ -1026,7 +1021,7 @@ def __str__(self) -> str: elif arg.value is not None: temp[arg.name] = arg.value else: - logger.debug(f"Argument {arg.name} has a Null value, not adding it to JSON") + logger.debug("Argument %s has a Null value, not adding it to JSON", arg.name) return json.dumps(temp) else: return self.command_line @@ -1057,25 +1052,23 @@ def __init__(self, script_name: str, author: str = None, for_new_ui: bool = Fals self.author = author def to_json(self, base_path: Path): - try: - code_file = ( - base_path - / "{}.js".format(self.script_name) - ) - if code_file.exists(): - code = code_file.read_bytes().decode() - # code = base64.b64encode(code).decode() - return {"script": code, "name": self.script_name, "author": self.author} - elif Path(self.script_name).exists(): - code = Path(self.script_name).read_bytes().decode() - # code = base64.b64encode(code).decode() - return {"script": code, "name": self.script_name, "author": self.author} - else: - raise Exception( - "Code for Browser Script, " + self.script_name + ", does not exist on disk at path: " + str( - code_file)) - except Exception as e: - raise e + code_file = ( + base_path + / "{}.js".format(self.script_name) + ) + if code_file.exists(): + code = code_file.read_bytes().decode() + # code = base64.b64encode(code).decode() + return {"script": code, "name": self.script_name, "author": self.author} + elif Path(self.script_name).exists(): + code = Path(self.script_name).read_bytes().decode() + # code = base64.b64encode(code).decode() + return {"script": code, "name": self.script_name, "author": self.author} + else: + raise Exception( + "Code for Browser Script, " + self.script_name + ", does not exist on disk at path: " + str( + code_file)) + class MythicTask: @@ -1218,7 +1211,7 @@ def __init__(self, self.OpsecPreBypassed = OpsecPreBypassed self.OpsecPreBypassRole = OpsecPreBypassRole for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1270,7 +1263,7 @@ def __init__(self, self.OpsecPostBypassed = OpsecPostBypassed self.OpsecPostBypassRole = OpsecPostBypassRole for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1343,7 +1336,7 @@ def __init__(self, self.ParameterGroupName = ParameterGroupName self.ReprocessAtNewCommandPayloadType = ReprocessAtNewCommandPayloadType for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1674,7 +1667,7 @@ def __init__(self, self.SleepInfo = sleep_info self.RegisteredPayloadID = registered_payload_id for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1735,7 +1728,7 @@ def __init__(self, self.UUID = uuid self.PayloadType = payload_type for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1800,7 +1793,7 @@ def __init__(self, else: self.args = args for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -1929,7 +1922,7 @@ def __init__(self, self.Secrets = secrets for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -2009,7 +2002,7 @@ def __init__(self, else: self.SubtaskData = None for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -2076,7 +2069,7 @@ def __init__(self, self.Params = Params self.ParameterGroupName = ParameterGroupName for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -2223,13 +2216,13 @@ def to_json(self): params = [] if self.browser_script is not None: if isinstance(self.browser_script, list): - logger.error(f"{self.cmd}'s browserscript attribute should not be an array, but a single script") + logger.error("%s's browserscript attribute should not be an array, but a single script", self.cmd) sys.exit(1) else: try: bscript = {"browserscript": self.browser_script.to_json(self.agent_browserscript_path)} - except Exception as e: - logger.error(f"Failed to get browser script for {self.cmd}:\n{e}") + except: + logger.exception("Failed to get browser script for %s", self.cmd) bscript = {} else: bscript = {"browser_script": {}} diff --git a/mythic_container/MythicGoRPC/callback_display_to_real_id.py b/mythic_container/MythicGoRPC/callback_display_to_real_id.py index 09b016f..a2ec4f2 100644 --- a/mythic_container/MythicGoRPC/callback_display_to_real_id.py +++ b/mythic_container/MythicGoRPC/callback_display_to_real_id.py @@ -14,7 +14,7 @@ def __init__(self, self.OperationName = OperationName self.OperationID = OperationID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -34,7 +34,7 @@ def __init__(self, self.Error = error self.CallbackID = callback_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackDisplayToRealIdSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_create.py index 444290f..9ed7e53 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_create.py @@ -13,7 +13,7 @@ def __init__(self, self.UniqueID = UniqueID self.DataToStore = DataToStore for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -30,7 +30,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCAgentStorageCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_remove.py b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_remove.py index ab151b0..581b03b 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_remove.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_remove.py @@ -10,7 +10,7 @@ def __init__(self, **kwargs): self.UniqueID = UniqueID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -26,7 +26,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCAgentStorageRemove( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_search.py index c13050b..6bbadcb 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_agentstorage_search.py @@ -11,7 +11,7 @@ def __init__(self, **kwargs): self.SearchUniqueID = SearchUniqueID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -27,7 +27,7 @@ def __init__(self, self.UniqueID = unique_id self.Data = base64.b64decode(data) for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) class MythicRPCAgentStorageSearchMessageResponse: @@ -40,7 +40,7 @@ def __init__(self, self.Error = error self.AgentStorageMessages = agentstorage_messages for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCAgentStorageSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_apitoken_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_apitoken_create.py index f7a325d..58b7257 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_apitoken_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_apitoken_create.py @@ -17,7 +17,7 @@ def __init__(self, self.PayloadUUID = PayloadUUID self.OperationID = OperationID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -38,7 +38,7 @@ def __init__(self, self.Error = error self.APIToken = apitoken for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCAPITokenCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_create.py index 89c2c2e..2b7445e 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_create.py @@ -16,7 +16,7 @@ def __init__(self, self.BaseArtifactType = BaseArtifactType self.ArtifactHost = ArtifactHost for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -35,7 +35,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCArtifactCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_search.py index 8d58355..a339e6b 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_artifact_search.py @@ -16,7 +16,7 @@ def __init__(self, self.ArtifactMessage = artifact_message self.TaskID = task_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -35,7 +35,7 @@ def __init__(self, self.TaskID = TaskID self.SearchArtifacts = SearchArtifacts for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -54,7 +54,7 @@ def __init__(self, self.Error = error self.Artifacts = [MythicRPCArtifactSearchArtifactData(**x) for x in artifacts] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCArtifactSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_c2_update_status.py b/mythic_container/MythicGoRPC/send_mythic_rpc_c2_update_status.py index ca214b9..d0167d5 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_c2_update_status.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_c2_update_status.py @@ -18,7 +18,7 @@ def __init__(self, self.InternalServerRunning = InternalServerRunning self.Error = Error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -36,7 +36,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCC2UpdateStatus( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_add_command.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_add_command.py index dbf09a3..7289bc4 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_add_command.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_add_command.py @@ -18,7 +18,7 @@ def __init__(self, self.PayloadType = PayloadType self.CallbackIDs = CallbackIDs for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -38,7 +38,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackAddCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_create.py index 4b207d1..97e352b 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_create.py @@ -49,7 +49,7 @@ def __init__(self, self.Domain = Domain self.Architecture = Architecture for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -82,7 +82,7 @@ def __init__(self, self.Error = error self.CallbackUUID = callback_uuid for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_decrypt_bytes.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_decrypt_bytes.py index ffd05b0..dd84707 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_decrypt_bytes.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_decrypt_bytes.py @@ -19,7 +19,7 @@ def __init__(self, self.IsBase64Encoded = IsBase64Encoded self.C2Profile = C2Profile for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -41,7 +41,7 @@ def __init__(self, self.Error = error self.Message = base64.b64decode(message) for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackDecryptBytes( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_edge_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_edge_search.py index 1512c2c..21ec00e 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_edge_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_edge_search.py @@ -18,7 +18,7 @@ def __init__(self, self.SearchC2ProfileName = SearchC2ProfileName self.SearchActiveEdgesOnly = SearchActiveEdgesOnly for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -46,7 +46,7 @@ def __init__(self, self.C2ProfileName = c2profile for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -71,7 +71,7 @@ def __init__(self, self.Error = error self.Results = [MythicRPCCallbackEdgeSearchMessageResult(**x) for x in results] if results is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackEdgeSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_encrypt_bytes.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_encrypt_bytes.py index 907ba62..9ecf4d9 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_encrypt_bytes.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_encrypt_bytes.py @@ -19,7 +19,7 @@ def __init__(self, self.IsBase64Encoded = IsBase64Encoded self.C2Profile = C2Profile for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -41,7 +41,7 @@ def __init__(self, self.Error = error self.Message = base64.b64decode(message) for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackEncryptBytes( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_next_checkin_range.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_next_checkin_range.py index 2fab1ca..65836ec 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_next_checkin_range.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_next_checkin_range.py @@ -15,7 +15,7 @@ def __init__(self, self.SleepJitter = SleepJitter self.LastCheckin = LastCheckin for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -37,7 +37,7 @@ def __init__(self, self.Min = min self.Max = max for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_remove_command.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_remove_command.py index 04e0478..8234ab1 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_remove_command.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_remove_command.py @@ -18,7 +18,7 @@ def __init__(self, self.PayloadType = PayloadType self.CallbackIDs = CallbackIDs for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -38,7 +38,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackRemoveCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search.py index bd73e34..29c5750 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search.py @@ -45,7 +45,7 @@ def __init__(self, self.SearchCallbackDescription = SearchCallbackDescription self.SearchCallbackPayloadTypes = SearchCallbackPayloadTypes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -134,7 +134,7 @@ def __init__(self, self.Dead = dead self.PayloadType = payloadtype for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "id": self.ID, @@ -182,7 +182,7 @@ def __init__(self, self.Error = error self.Results = [MythicRPCCallbackSearchMessageResult(**x) for x in results] if results is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search_command.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search_command.py index d4eab6d..e0dd771 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search_command.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_search_command.py @@ -21,7 +21,7 @@ def __init__(self, self.SearchScriptOnly = SearchScriptOnly self.SearchAttributes = SearchAttributes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -46,7 +46,7 @@ def __init__(self, self.Error = error self.Commands = [MythicRPCCommandSearchData(**x) for x in commands] if commands is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackSearchCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_update.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_update.py index 189383b..8e9069b 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callback_update.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callback_update.py @@ -50,7 +50,7 @@ def __init__(self, self.UpdateLastCheckinTime = UpdateLastCheckinTime self.UpdateLastCheckinTimeViaC2Profile = UpdateLastCheckinTimeViaC2Profile for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -86,7 +86,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackUpdate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_create.py index bef5158..5a68e86 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_create.py @@ -39,7 +39,7 @@ def __init__(self, self.AppContainerSID = AppContainerSID self.AppContainerNumber = AppContainerNumber for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "action": self.Action, @@ -71,7 +71,7 @@ def __init__(self, self.TokenInfo = TokenInfo self.TokenId = TokenId for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -90,7 +90,7 @@ def __init__(self, self.TaskID = TaskID self.CallbackTokens = CallbackTokens for k, v in kwargs: - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -107,7 +107,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackTokenCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_remove.py b/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_remove.py index 4347039..d3747fa 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_remove.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_callbacktoken_remove.py @@ -12,7 +12,7 @@ def __init__(self, self.TaskID = TaskID self.CallbackTokens = CallbackTokens for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -29,7 +29,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCallbackTokenRemove( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_command_search_.py b/mythic_container/MythicGoRPC/send_mythic_rpc_command_search_.py index 64b8c77..53d18d4 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_command_search_.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_command_search_.py @@ -19,7 +19,7 @@ def __init__(self, self.SearchScriptOnly = SearchScriptOnly self.SearchAttributes = SearchAttributes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -54,7 +54,7 @@ def __init__(self, self.Author = author self.ScriptOnly = script_only for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "cmd": self.Name, @@ -80,7 +80,7 @@ def __init__(self, self.Error = error self.Commands = [MythicRPCCommandSearchData(**x) for x in commands] if commands is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCommandSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_credential_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_credential_create.py index 6ff9fc1..b98fca0 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_credential_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_credential_create.py @@ -20,7 +20,7 @@ def __init__(self, self.Comment = Comment self.ExtraData = ExtraData for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "credential_type": self.CredentialType, @@ -39,7 +39,7 @@ def __init__(self, self.TaskID = TaskID self.Credentials = Credentials for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -56,7 +56,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCredentialCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_credential_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_credential_search.py index a0fe36c..1f3a4b6 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_credential_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_credential_search.py @@ -20,7 +20,7 @@ def __init__(self, self.Comment = comment self.ExtraData = metadata for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.info("Unknown kwarg %s: %s", k, v) def to_json(self): return { "credential_type": self.CredentialType, @@ -39,7 +39,7 @@ def __init__(self, self.TaskID = TaskID self.Credential = Credential for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.info("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -60,7 +60,7 @@ def __init__(self, self.Error = error self.Credentials = [MythicRPCCredentialData(**x) for x in credentials] if credentials is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.info("Unknown kwarg %s: %s", k, v) async def SendMythicRPCCredentialSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_file_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_file_create.py index 2941663..0ec6a69 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_file_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_file_create.py @@ -34,7 +34,7 @@ def __init__(self, self.TargetHostName = TargetHostName self.Comment = Comment for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -61,7 +61,7 @@ def __init__(self, self.Error = error self.AgentFileId = agent_file_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_file_get_content.py b/mythic_container/MythicGoRPC/send_mythic_rpc_file_get_content.py index f4fd04c..3934855 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_file_get_content.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_file_get_content.py @@ -11,7 +11,7 @@ def __init__(self, **kwargs): self.AgentFileId = AgentFileId for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -29,7 +29,7 @@ def __init__(self, self.Error = error self.Content = content for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileGetContent( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_file_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_file_search.py index f22f97d..07b9014 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_file_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_file_search.py @@ -29,7 +29,7 @@ def __init__(self, self.IsPayload = IsPayload self.AgentFileID = AgentFileID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -80,7 +80,7 @@ def __init__(self, self.Tags = tags self.Complete = complete for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} with value {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "agent_file_id": self.AgentFileId, @@ -113,7 +113,7 @@ def __init__(self, self.Error = error self.Files = [FileData(**x) for x in files] if files is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_file_update.py b/mythic_container/MythicGoRPC/send_mythic_rpc_file_update.py index 10a4d3b..9ac6cd2 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_file_update.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_file_update.py @@ -23,7 +23,7 @@ def __init__(self, self.Delete = Delete self.DeleteAfterFetch = DeleteAfterFetch for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -44,7 +44,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileUpdate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_create.py index dcf386c..aa095f0 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_create.py @@ -19,7 +19,7 @@ def __init__(self, self.ModifyTime = ModifyTime self.Size = Size for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "is_file": self.IsFile, @@ -55,7 +55,7 @@ def __init__(self, self.UpdateDeleted = UpdateDeleted self.Files = Files for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -81,7 +81,7 @@ def __init__(self, self.TaskID = TaskID self.FileBrowser = FileBrowser for k, v in kwargs: - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -98,7 +98,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileBrowserCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_parse_path.py b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_parse_path.py index b242fe1..7d96ed4 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_parse_path.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_parse_path.py @@ -11,7 +11,7 @@ def __init__(self, **kwargs): self.Path = Path for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -43,7 +43,7 @@ def __init__(self, self.Error = error self.AnalyzedPath = AnalyzedPath(**analyzed_path) for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_remove.py b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_remove.py index 2b0df30..3a387e7 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_remove.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_filebrowser_remove.py @@ -11,7 +11,7 @@ def __init__(self, self.Host = Host self.Path = Path for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -28,7 +28,7 @@ def __init__(self, self.TaskID = TaskID self.RemovedFiles = RemovedFiles for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -45,7 +45,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCFileBrowserRemove( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_create.py index 25beebe..981bd3a 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_create.py @@ -13,7 +13,7 @@ def __init__(self, self.User = User self.Keystrokes = Keystrokes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -31,7 +31,7 @@ def __init__(self, self.TaskID = TaskID self.Keylogs = Keylogs for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -48,7 +48,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCKeylogCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_search.py index 4988fd1..830b693 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_keylog_search.py @@ -13,7 +13,7 @@ def __init__(self, self.User = User self.Keystrokes = Keystrokes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -32,7 +32,7 @@ def __init__(self, self.User = user self.Keystrokes = keystrokes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -50,7 +50,7 @@ def __init__(self, self.TaskID = TaskID self.Keylog = Keylog for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -71,7 +71,7 @@ def __init__(self, self.Error = error self.Keylogs = [MythicRPCKeylogSearchResultData(**x) for x in keylogs] if keylogs is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCKeylogCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_operationeventlog_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_operationeventlog_create.py index 2b083f6..7357551 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_operationeventlog_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_operationeventlog_create.py @@ -20,7 +20,7 @@ def __init__(self, self.Message = Message self.MessageLevel = MessageLevel for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -41,7 +41,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCOperationEventLogCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_other_service_rpc.py b/mythic_container/MythicGoRPC/send_mythic_rpc_other_service_rpc.py index 0267451..92ed39a 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_other_service_rpc.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_other_service_rpc.py @@ -23,7 +23,7 @@ def __init__(self, if self.ServiceRPCFunctionArguments is None: self.ServiceRPCFunctionArguments = service_arguments for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "service_name": self.ServiceName, @@ -49,7 +49,7 @@ def __init__(self, if self.Result is None: self.Result = result for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "success": self.Success, diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_add_command.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_add_command.py index e48c86b..47f95b0 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_add_command.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_add_command.py @@ -12,7 +12,7 @@ def __init__(self, self.PayloadUUID = PayloadUUID self.Commands = Commands for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -29,7 +29,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadAddCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_scratch.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_scratch.py index 9d517eb..d9660da 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_scratch.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_scratch.py @@ -20,7 +20,7 @@ def __init__(self, if c2_profile_parameters is not None: self.Parameters = c2_profile_parameters for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -44,7 +44,7 @@ def __init__(self, if value is not None: self.Value = value for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -77,7 +77,7 @@ def __init__(self, self.UUID = UUID self.AgentFileId = AgentFileId for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -104,7 +104,7 @@ def __init__(self, self.PayloadConfiguration = PayloadConfiguration self.RemoteHost = RemoteHost for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -124,7 +124,7 @@ def __init__(self, self.Error = error self.NewPayloadUUID = new_payload_uuid for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadCreateFromScratch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_uuid.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_uuid.py index 1ae89cd..7c9a63d 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_uuid.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_create_from_uuid.py @@ -18,7 +18,7 @@ def __init__(self, self.NewFilename = NewFilename self.RemoteHost = RemoteHost for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -40,7 +40,7 @@ def __init__(self, self.Error = error self.NewPayloadUUID = new_payload_uuid for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadCreateFromUUID( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_get_content.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_get_content.py index a0a72fc..5a71303 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_get_content.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_get_content.py @@ -11,7 +11,7 @@ def __init__(self, **kwargs): self.PayloadUUID = PayloadUUID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -29,7 +29,7 @@ def __init__(self, self.Error = error self.Content = content for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadGetContent( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_remove_command.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_remove_command.py index 5dfdaee..2cf1ba0 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_remove_command.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_remove_command.py @@ -12,7 +12,7 @@ def __init__(self, self.PayloadUUID = PayloadUUID self.Commands = Commands for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -29,7 +29,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadRemoveCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_search.py index 8e64802..db71b74 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_search.py @@ -11,7 +11,7 @@ def __init__(self, self.PayloadType = PayloadType self.BuildParameterValues = BuildParameterValues for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -37,7 +37,7 @@ def __init__(self, self.IncludeAutoGeneratedPayloads = IncludeAutoGeneratedPayloads self.BuildParameters = BuildParameters for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -58,7 +58,7 @@ def __init__(self, self.Name = c2_profile self.Parameters = c2_profile_parameters for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "c2_profile": self.Name, @@ -72,7 +72,7 @@ def __init__(self, self.Name = name self.Value = value for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "name": self.Name, @@ -116,7 +116,7 @@ def __init__(self, self.AgentFileId = agent_file_id self.BuildPhase = build_phase for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -144,7 +144,7 @@ def __init__(self, self.Error = error self.Payloads = [MythicRPCPayloadConfiguration(**x) for x in payloads] if payloads is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_update_build_step.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_update_build_step.py index f1cb1d1..2db1df0 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payload_update_build_step.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payload_update_build_step.py @@ -20,7 +20,7 @@ def __init__(self, self.StepSuccess = StepSuccess self.StepSkip = StepSkip for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -41,7 +41,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadUpdatebuildStep( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_payloadonhost_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_payloadonhost_create.py index c6e09bf..f0b77ea 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_payloadonhost_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_payloadonhost_create.py @@ -15,7 +15,7 @@ def __init__(self, self.PayloadId = PayloadId self.PayloadUUID = PayloadUUID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "host": self.Host, @@ -31,7 +31,7 @@ def __init__(self, self.TaskID = TaskID self.PayloadOnHost = PayloadOnHost for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -48,7 +48,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCPayloadOnHostCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_process_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_process_create.py index e942bb0..177612f 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_process_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_process_create.py @@ -61,7 +61,7 @@ def __init__(self, self.TaskID = TaskID self.Processes = Processes for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -78,7 +78,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCProcessCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_process_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_process_search.py index 023a779..65b1521 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_process_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_process_search.py @@ -104,7 +104,7 @@ def __init__(self, self.TaskID = TaskID self.Process = Process for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -125,7 +125,7 @@ def __init__(self, self.Error = error self.Processes = [MythicRPCProcessSearchResponseData(**x) for x in processes] if processes is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCProcessSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_start.py b/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_start.py index cb40db4..09c8e24 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_start.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_start.py @@ -39,7 +39,7 @@ def __init__(self, self.Username = Username self.Password = Password for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -63,7 +63,7 @@ def __init__(self, self.Error = error self.LocalPort = local_port for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCProxyStartCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_stop.py b/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_stop.py index f708ec1..873cbc7 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_stop.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_proxy_stop.py @@ -18,7 +18,7 @@ def __init__(self, self.Username = Username self.Password = Password for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -40,7 +40,7 @@ def __init__(self, self.Error = error self.LocalPort = local_port for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCProxyStopCommand( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_response_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_response_create.py index 213bdfe..d5aad80 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_response_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_response_create.py @@ -13,7 +13,7 @@ def __init__(self, self.TaskID = TaskID self.Response = Response for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -30,7 +30,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCResponseCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_response_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_response_search.py index ccdf984..05936ff 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_response_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_response_search.py @@ -13,7 +13,7 @@ def __init__(self, self.TaskID = TaskID self.Response = Response for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -32,7 +32,7 @@ def __init__(self, self.Response = base64.b64decode(response).decode() self.TaskID = task_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return{ "id": self.ResponseID, @@ -52,7 +52,7 @@ def __init__(self, self.Error = error self.Responses = [MythicRPCResponseSearchData(**x) for x in responses] if responses is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCResponseSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_tag_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_tag_create.py index 4a09e2b..c12ed0a 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_tag_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_tag_create.py @@ -24,7 +24,7 @@ def __init__(self, self.CredentialID = CredentialID self.MythicTreeID = MythicTreeID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -53,7 +53,7 @@ def __init__(self, self.Color = color self.OperationID = operation_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -89,7 +89,7 @@ def __init__(self, self.CredentialID = credential_id self.MythicTreeID = mythic_tree_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -116,7 +116,7 @@ def __init__(self, self.Error = error self.Tag = MythicRPCTagData(**tag) if tag is not None else None for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTagCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_tag_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_tag_search.py index c502bd6..a7a01eb 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_tag_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_tag_search.py @@ -26,7 +26,7 @@ def __init__(self, self.SearchTagData = SearchTagData self.SearchTagURL = SearchTagURL for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -56,7 +56,7 @@ def __init__(self, self.Color = color self.OperationID = operation_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -92,7 +92,7 @@ def __init__(self, self.CredentialID = credential_id self.MythicTreeID = mythic_tree_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -121,7 +121,7 @@ def __init__(self, self.Error = error self.Tags = [MythicRPCTagData(**x) for x in tags] if tags is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTagSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_tagtype_get_or_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_tagtype_get_or_create.py index 360170e..52e1de1 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_tagtype_get_or_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_tagtype_get_or_create.py @@ -18,7 +18,7 @@ def __init__(self, self.GetOrCreateTagTypeDescription = GetOrCreateTagTypeDescription self.GetOrCreateTagTypeColor = GetOrCreateTagTypeColor for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -44,7 +44,7 @@ def __init__(self, self.Color = color self.OperationID = operation_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -66,7 +66,7 @@ def __init__(self, self.Error = error self.TagType = MythicRPCTagTypeData(**tagtype) if tagtype is not None else None for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTagTypeGetOrCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create.py index 630601f..327f7c9 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create.py @@ -18,7 +18,7 @@ def __init__(self, self.ParameterGroupName = ParameterGroupName self.Token = Token for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -42,7 +42,7 @@ def __init__(self, self.TaskID = task_id self.TaskDisplayID = task_display_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask.py b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask.py index 24fc11c..b5a8042 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask.py @@ -20,7 +20,7 @@ def __init__(self, self.ParameterGroupName = ParameterGroupName self.Token = Token for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -43,7 +43,7 @@ def __init__(self, self.Error = error self.TaskID = task_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTaskCreateSubtask( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask_group.py b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask_group.py index 02fb589..0a53c90 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask_group.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_task_create_subtask_group.py @@ -18,7 +18,7 @@ def __init__(self, self.ParameterGroupName = ParameterGroupName self.Token = Token for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "subtask_callback_function": self.SubtaskCallbackFunction, @@ -40,7 +40,7 @@ def __init__(self, self.GroupCallbackFunction = GroupCallbackFunction self.Tasks = Tasks for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -61,7 +61,7 @@ def __init__(self, self.Error = error self.TaskIDs = task_ids for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTaskCreateSubtaskGroup( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_task_search.py b/mythic_container/MythicGoRPC/send_mythic_rpc_task_search.py index 8ba5a3c..c5b99a9 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_task_search.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_task_search.py @@ -28,7 +28,7 @@ def __init__(self, self.SearchParams = SearchParams self.SearchParentTaskID = SearchParentTaskID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -127,7 +127,7 @@ def __init__(self, self.IsInteractiveTask = is_interactive_task self.InteractiveTaskType = interactive_task_type for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { "id": self.TaskID, @@ -183,7 +183,7 @@ def __init__(self, self.Error = error self.Tasks = [MythicRPCTaskSearchData(**x) for x in tasks] if tasks is not None else [] for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTaskSearch( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_task_update.py b/mythic_container/MythicGoRPC/send_mythic_rpc_task_update.py index 36cc7dd..442c7b9 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_task_update.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_task_update.py @@ -20,7 +20,7 @@ def __init__(self, self.UpdateCommandName = UpdateCommandName self.UpdateCompleted = UpdateCompleted for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -41,7 +41,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTaskUpdate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_token_create.py b/mythic_container/MythicGoRPC/send_mythic_rpc_token_create.py index 7d598ce..e18eae5 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_token_create.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_token_create.py @@ -14,7 +14,7 @@ def __init__(self, self.TaskID = TaskID self.Tokens = Tokens for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -31,7 +31,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTokenCreate( diff --git a/mythic_container/MythicGoRPC/send_mythic_rpc_token_remove.py b/mythic_container/MythicGoRPC/send_mythic_rpc_token_remove.py index 1a19430..312ed32 100644 --- a/mythic_container/MythicGoRPC/send_mythic_rpc_token_remove.py +++ b/mythic_container/MythicGoRPC/send_mythic_rpc_token_remove.py @@ -14,7 +14,7 @@ def __init__(self, self.TaskID = TaskID self.Tokens = Tokens for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -31,7 +31,7 @@ def __init__(self, self.Success = success self.Error = error for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTokenRemove( diff --git a/mythic_container/MythicGoRPC/task_display_to_real_id.py b/mythic_container/MythicGoRPC/task_display_to_real_id.py index 86d903f..5b03855 100644 --- a/mythic_container/MythicGoRPC/task_display_to_real_id.py +++ b/mythic_container/MythicGoRPC/task_display_to_real_id.py @@ -14,7 +14,7 @@ def __init__(self, self.OperationName = OperationName self.OperationID = OperationID for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -34,7 +34,7 @@ def __init__(self, self.Error = error self.TaskID = task_id for k, v in kwargs.items(): - logger.info(f"Unknown kwarg {k} - {v}") + logger.debug("Unknown kwarg %s: %s", k, v) async def SendMythicRPCTaskDisplayToRealIdSearch( diff --git a/mythic_container/MythicRPC.py b/mythic_container/MythicRPC.py index 46acdc6..2d20afb 100644 --- a/mythic_container/MythicRPC.py +++ b/mythic_container/MythicRPC.py @@ -743,12 +743,12 @@ class MythicRPC: } async def execute(self, function_name: str, **func_kwargs) -> RPCResponse: - logger.warning(f"[-] MythicRPC().execute and this function, {function_name}, are deprecated and will be removed in the next major " - f"release. Please update to the corresponding SendMythicRPC* function") + logger.warning("[-] MythicRPC().execute and this function, %s, are deprecated and will be removed in the next" + " major release. Please update to the corresponding SendMythicRPC* function", function_name) if function_name in self.queueMap: return await self.queueMap[function_name](func_kwargs) else: - logger.error(f"[-] Unknown legacy RPC function {function_name} or function was completely removed") + logger.error("[-] Unknown legacy RPC function %s or function was completely removed", function_name) return RPCResponse({"status": "error", "error": "Unknown RPC Function name"}) async def call_c2rpc(self, n: dict, receiver: str = None) -> RPCResponse: @@ -758,8 +758,9 @@ async def call_c2rpc(self, n: dict, receiver: str = None) -> RPCResponse: async def execute_c2rpc(self, c2_profile: str, function_name: str, message: str, task_id: int) -> RPCResponse: try: - logger.warning(f"[-] MythicRPC().execute_c2rpc and this function, {function_name}, are deprecated and will be removed in the next major " - f"release. Please update to the corresponding SendMythicRPC* function") + logger.warning("[-] MythicRPC().execute_c2rpc and this function, {}, are deprecated and will be removed in" + " the next major release. Please update to the corresponding SendMythicRPC* function", + function_name) resp = await self.call_c2rpc( {"action": function_name, "message": message, diff --git a/mythic_container/PayloadBuilder.py b/mythic_container/PayloadBuilder.py index ede4518..ddd2bfe 100644 --- a/mythic_container/PayloadBuilder.py +++ b/mythic_container/PayloadBuilder.py @@ -417,7 +417,7 @@ def __init__(self, if self.ServiceRPCFunctionArguments is None: self.ServiceRPCFunctionArguments = service_arguments for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -460,7 +460,7 @@ def __init__(self, if self.Result is None: self.Result = result for k, v in kwargs.items(): - logger.error(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -617,10 +617,10 @@ def __init__( self.secrets = secrets if self.agent_path is None: self.agent_path = pathlib.Path(".") / self.name - logger.error(f"{self.name} has no agent_path set, setting to {self.agent_path}") + logger.error("%s has no agent_path set, setting to %s", self.name, self.agent_path) if self.agent_code_path is None: self.agent_code_path = self.agent_path / "agent_code" - logger.error(f"{self.name} has no agent_code_path set, setting to {self.agent_code_path}") + logger.error("%s has no agent_code_path set, setting to %s", self.name, self.agent_code_path) if self.agent_browserscript_path is None: self.agent_browserscript_path = self.agent_path / "browser_scripts" @@ -649,9 +649,7 @@ async def set_and_validate_build_parameters(self, buildinfo: dict): if bp.name in buildinfo and buildinfo[bp.name] is not None: bp.value = buildinfo[bp.name] if bp.required and bp.value is None: - raise ValueError( - "{} is a required parameter but has no value".format(bp.name) - ) + raise ValueError(f"{bp.name} is a required parameter but has no value") def get_build_instance_values(self): values = {} @@ -670,20 +668,19 @@ def to_json(self): try: with open(self.agent_icon_path, "rb") as f: agent_bytes = f.read() - except Exception as e: - logger.exception(f"failed to read agent icon from ({self.agent_icon_path}): {e}") + except: + logger.exception("failed to read agent icon from (%s)", self.agent_icon_path) agent_bytes = b"" else: - logger.error(f"{self.name} has no agent_icon_bytes or agent_icon_path specified, no icon will be used") + logger.error("%s has no agent_icon_bytes or agent_icon_path specified, no icon will be used", self.name) agent_bytes = b"" if dark_mode_agent_bytes is None: if self.dark_mode_agent_icon_path is not None: try: with open(self.dark_mode_agent_icon_path, "rb") as f: dark_mode_agent_bytes = f.read() - except Exception as e: - logger.exception( - f"failed to read dark mode agent icon from ({self.dark_mode_agent_icon_path}): {e}") + except: + logger.exception("failed to read dark mode agent icon from (%s)", self.dark_mode_agent_icon_path) dark_mode_agent_bytes = b"" else: dark_mode_agent_bytes = agent_bytes @@ -732,6 +729,6 @@ async def SendMythicRPCSyncPayloadType(payload_type: str, extraCommands: [mythic await mythic_container.mythic_service.syncPayloadData(pt, extraCommands, True) return True return False - except Exception as e: - logger.exception(f"Failed to re-sync payload type: {e}") + except: + logger.exception("Failed to re-sync payload type") return False diff --git a/mythic_container/TranslationBase.py b/mythic_container/TranslationBase.py index 98706ba..1e50983 100644 --- a/mythic_container/TranslationBase.py +++ b/mythic_container/TranslationBase.py @@ -277,7 +277,7 @@ async def handleTranslationServices(tr_name: str): maxInt = 2**31 - 1 while True: try: - logger.info(f"Attempting connection to gRPC for {tr_name}...") + logger.info("Attempting connection to gRPC for %s...", tr_name) channel = grpc.aio.insecure_channel( f'{settings.get("mythic_server_host", "127.0.0.1")}:{settings.get("mythic_server_grpc_port", 17444)}', options=[ @@ -289,10 +289,10 @@ async def handleTranslationServices(tr_name: str): genKeys = handleGenerateKeys(tr_name, client) customToMythic = handleCustomToMythic(tr_name, client) mythicToCustom = handleMythicToCustom(tr_name, client) - logger.info(f"[+] Successfully connected to gRPC for {tr_name}") + logger.info("[+] Successfully connected to gRPC for %s", tr_name) await asyncio.gather(genKeys, customToMythic, mythicToCustom) - except Exception as e: - logger.exception(f"Translation gRPC services closed for {tr_name}: {e}") + except: + logger.exception("Translation gRPC services closed for %s", tr_name) async def handleGenerateKeys(tr_name: str, client): @@ -303,7 +303,7 @@ async def handleGenerateKeys(tr_name: str, client): Success=True, TranslationContainerName=tr_name )) - logger.info(f"Connected to gRPC for generating encryption keys for {tr_name}") + logger.info("Connected to gRPC for generating encryption keys for %s", tr_name) async for request in stream: try: result = await translationServices[tr_name].generate_keys(TrGenerateEncryptionKeysMessage( @@ -320,15 +320,15 @@ async def handleGenerateKeys(tr_name: str, client): DecryptionKey=result.DecryptionKey )) except Exception as d: - logger.exception(f"Failed to process handleGenerateKeys message:\n{d}") + logger.exception("Failed to process handleGenerateKeys message") await stream.write(grpcFuncs.TrGenerateEncryptionKeysMessageResponse( Success=False, TranslationContainerName=tr_name, Error=f"Failed to process handleGenerateKeys message:\n{d}" )) - logger.error(f"disconnected from gRPC for generating encryption keys for {tr_name}") - except Exception as e: - logger.exception(f"[-] exception in handleGenerateKeys for {tr_name}") + logger.error("disconnected from gRPC for generating encryption keys for %s", tr_name) + except: + logger.exception("[-] exception in handleGenerateKeys for %s", tr_name) async def handleCustomToMythic(tr_name: str, client): @@ -339,7 +339,7 @@ async def handleCustomToMythic(tr_name: str, client): Success=True, TranslationContainerName=tr_name )) - logger.info(f"Connected to gRPC for handling CustomC2 to MythicC2 Translations for {tr_name}") + logger.info("Connected to gRPC for handling CustomC2 to MythicC2 Translations for %s", tr_name) async for request in stream: try: grpcCryptoKeys = request.CryptoKeys @@ -367,15 +367,15 @@ async def handleCustomToMythic(tr_name: str, client): ) await stream.write(response) except Exception as d: - logger.exception(f"Failed to process handleCustomToMythic message:\n{d}") + logger.exception("Failed to process handleCustomToMythic message") await stream.write(grpcFuncs.TrCustomMessageToMythicC2FormatMessageResponse( Success=False, TranslationContainerName=tr_name, Error=f"Failed to process handleCustomToMythic message:\n{d}" )) - logger.error(f"disconnected from gRPC for doing custom->mythic c2 for {tr_name}") - except Exception as e: - logger.exception(f"[-] exception in handleCustomToMythic for {tr_name}") + logger.error("disconnected from gRPC for doing custom->mythic c2 for %s", tr_name) + except: + logger.exception("[-] exception in handleCustomToMythic for %s", tr_name) async def handleMythicToCustom(tr_name: str, client): @@ -386,7 +386,7 @@ async def handleMythicToCustom(tr_name: str, client): Success=True, TranslationContainerName=tr_name )) - logger.info(f"Connected to gRPC for handling MythicC2 to CustomC2 Translations for {tr_name}") + logger.info("Connected to gRPC for handling MythicC2 to CustomC2 Translations for %s", tr_name) async for request in stream: try: grpcCryptoKeys = request.CryptoKeys @@ -414,12 +414,12 @@ async def handleMythicToCustom(tr_name: str, client): ) await stream.write(response) except Exception as d: - logger.exception(f"Failed to process handleMythicToCustom message:\n{d}") + logger.exception("Failed to process handleMythicToCustom message") await stream.write(grpcFuncs.TrMythicC2ToCustomMessageFormatMessageResponse( Success=False, TranslationContainerName=tr_name, Error=f"Failed to process handleMythicToCustom message:\n{d}" )) - logger.error(f"disconnected from gRPC for doing mythic->custom c2 for {tr_name}") - except Exception as e: - logger.exception(f"[-] exception in handleMythicToCustom for {tr_name}") + logger.error("disconnected from gRPC for doing mythic->custom c2 for %s", tr_name) + except: + logger.exception("[-] exception in handleMythicToCustom for %s", tr_name) diff --git a/mythic_container/WebhookBase.py b/mythic_container/WebhookBase.py index a60f5aa..ccdd457 100644 --- a/mythic_container/WebhookBase.py +++ b/mythic_container/WebhookBase.py @@ -112,7 +112,7 @@ def __init__(self, self.FeedbackType = feedback_type self.DisplayID = display_id for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -139,7 +139,7 @@ def __init__(self, **kwargs): self.StartupMessage = startup_message for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -175,7 +175,7 @@ def __init__(self, self.Count = count self.Timestamp = timestamp for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -239,7 +239,7 @@ def __init__(self, else: self.Data = data for k, v in kwargs.items(): - logger.info(f"unknown kwarg {k} {v}") + logger.debug("Unknown kwarg %s: %s", k, v) def to_json(self): return { @@ -328,7 +328,7 @@ def getWebhookChannel(self, inputMsg: WebhookMessage) -> str: elif self.webhook_channel is not None: return self.webhook_channel else: - logger.error(f"No webhook channel found") + logger.error("No webhook channel found") return "" async def on_container_start(self, message: ContainerOnStartMessage) -> ContainerOnStartMessageResponse: @@ -360,7 +360,7 @@ async def sendWebhookMessage(contents: dict, url: str) -> (int, str): async with session.post(url, json=contents, ssl=False) as resp: return resp.status, await resp.text() except Exception as e: - logger.exception(f"[-] Failed to send webhook: {e}") + logger.exception("[-] Failed to send webhook") return 400, f"[-] Failed to send webhook: {e}" webhooks: dict[str, Webhook] = {} @@ -379,5 +379,5 @@ async def SendMythicRPCSyncWebhook(webhook_name: str) -> bool: await mythic_container.mythic_service.syncWebhookData(web) return True return False - except Exception as e: + except: return False diff --git a/mythic_container/agent_utils.py b/mythic_container/agent_utils.py index 3d21ed0..e611ba5 100644 --- a/mythic_container/agent_utils.py +++ b/mythic_container/agent_utils.py @@ -30,8 +30,8 @@ async def makePayloadBuildResponse(buildMessage: dict, buildResponse: PayloadBui response["build_stderr"] = response["build_message"] await uploadPayloadBuildResponse(buildMessage, buildResponse) return response - except Exception as e: - logger.exception(f"Failed to generate payload build response: {e}") + except: + logger.exception("Failed to generate payload build response") return {} @@ -77,7 +77,7 @@ async def buildWrapper(msg: bytes) -> None: ) except Exception as b: - logger.exception(f"[-] Failed to process build function for agent {pt.name}") + logger.exception("[-] Failed to process build function for agent %s", pt.name) await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=mythic_container.PT_BUILD_RESPONSE_ROUTING_KEY, body={"status": "error", "build_stderr": f"{traceback.format_exc()}\n{b}", @@ -85,7 +85,7 @@ async def buildWrapper(msg: bytes) -> None: ) except Exception as e: - logger.exception(f"[-] Failed to process build request") + logger.exception("[-] Failed to process build request") await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=mythic_container.PT_BUILD_RESPONSE_ROUTING_KEY, body={"status": "error", "build_stderr": f"{traceback.format_exc()}\n{e}"} @@ -106,14 +106,14 @@ async def onNewCallback(msg: bytes) -> None: body=callback_response.to_json() ) except Exception as b: - logger.exception(f"[-] Failed to process on_new_callback for agent {pt.name}") + logger.exception("[-] Failed to process on_new_callback for agent %s", pt.name) await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=mythic_container.PT_ON_NEW_CALLBACK_RESPONSE_ROUTING_KEY, body={"success": False, "error": f"{traceback.format_exc()}\n{b}", "agent_callback_id": msgDict["callback"]["agent_callback_id"]} ) except Exception as e: - logger.exception(f"[-] Failed to process on_new_callback request") + logger.exception("[-] Failed to process on_new_callback request") await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=mythic_container.PT_ON_NEW_CALLBACK_RESPONSE_ROUTING_KEY, body={"success": False, "build_stderr": f"{traceback.format_exc()}\n{e}"} @@ -131,11 +131,11 @@ async def checkIfCallbacksAlive(msg: bytes) -> bytes: callback_response = await agent_builder.check_if_callbacks_alive(callbackData) return ujson.dumps(callback_response.to_json()).encode() except Exception as b: - logger.exception(f"[-] Failed to process check_if_callbacks_alive for agent {pt.name}") + logger.exception("[-] Failed to process check_if_callbacks_alive for agent %s", pt.name) response = {"success": False, "error": f"{traceback.format_exc()}\n{b}"} return ujson.dumps(response.to_json()).encode() except Exception as e: - logger.exception(f"[-] Failed to process check_if_callbacks_alive request") + logger.exception("[-] Failed to process check_if_callbacks_alive request") response = {"success": False, "error": f"{traceback.format_exc()}\n{e}"} return ujson.dumps(response).encode() @@ -214,7 +214,7 @@ async def initialize_task( queue=error_routing_key, body=message ) - logger.error(f"failed to parse arguments and hit exception: {pa}") + logger.exception("failed to parse arguments and hit exception") return None try: if error_routing_key == mythic_container.PT_TASK_OPSEC_PRE_CHECK_RESPONSE or \ @@ -222,7 +222,7 @@ async def initialize_task( await task.args.verify_required_args_have_values() task.parameter_group_name = task.args.get_parameter_group_name() except Exception as va: - logger.error(f"failed to verify args have values and hit exception: {va}") + logger.exception("failed to verify args have values and hit exception") message = { "task_id": message_json["task"]["id"], "message": f"[-] {message_json['task']['command_name']} has arguments with invalid values: {va} \n" @@ -299,7 +299,7 @@ async def verifyTaskArgs( + str(traceback.format_exc()), } if error_routing_key == "": - logger.exception(f"{ujson.dumps(message, indent=4)}") + logger.exception(ujson.dumps(message, indent=4)) else: await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=error_routing_key, @@ -318,7 +318,7 @@ async def verifyTaskArgs( + str(traceback.format_exc()), } if error_routing_key == "": - logger.exception(f"{ujson.dumps(message, indent=4)}") + logger.exception(ujson.dumps(message, indent=4)) else: await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=error_routing_key, @@ -335,7 +335,7 @@ async def opsecPreCheck(msg: bytes) -> None: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do opsec pre-check") + logger.error("[-] no commands for payload type, can't do opsec pre-check") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["task"]["command_name"]: @@ -353,8 +353,8 @@ async def opsecPreCheck(msg: bytes) -> None: body=response.to_json() ) return - except Exception as opsecError: - logger.exception(f"Failed to run opsec pre check: {opsecError}") + except: + logger.exception("Failed to run opsec pre check") response = MythicCommandBase.PTTTaskOPSECPreTaskMessageResponse( TaskID=msgDict["task"]["id"], Success=False, Error=str(traceback.format_exc()) ) @@ -374,7 +374,7 @@ async def opsecPreCheck(msg: bytes) -> None: return except Exception as e: - logger.exception(f"[-] Failed to process OPSEC request") + logger.exception("[-] Failed to process OPSEC request") await mythic_container.RabbitmqConnection.SendDictDirectMessage( queue=mythic_container.PT_TASK_OPSEC_PRE_CHECK_RESPONSE, body={"status": "error", "error": f"{traceback.format_exc()}\n{e}"} @@ -387,7 +387,7 @@ async def opsecPostCheck(msg: bytes) -> None: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do opsec post-check") + logger.error("[-] no commands for payload type, can't do opsec post-check") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["task"]["command_name"]: @@ -403,8 +403,8 @@ async def opsecPostCheck(msg: bytes) -> None: body=response.to_json() ) return - except Exception as opsecError: - logger.exception(f"Failed to run opsec post check: {opsecError}") + except: + logger.exception("Failed to run opsec post check") response = MythicCommandBase.PTTTaskOPSECPostTaskMessageResponse( TaskID=msgDict["task"]["id"], Success=False, Error=str(traceback.format_exc()) ) @@ -423,7 +423,7 @@ async def opsecPostCheck(msg: bytes) -> None: ) return except Exception as e: - logger.exception(f"[-] Failed to process OPSEC request") + logger.exception("[-] Failed to process OPSEC request") response = MythicCommandBase.PTTTaskOPSECPostTaskMessageResponse( TaskID=0, Success=False, Error=str(traceback.format_exc()), ) @@ -439,7 +439,7 @@ async def createTasking(msg: bytes) -> None: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do create tasking") + logger.error("[-] no commands for payload type, can't do create tasking") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["task"]["command_name"]: @@ -491,8 +491,8 @@ async def createTasking(msg: bytes) -> None: body=response.to_json() ) return - except Exception as opsecError: - logger.exception(f"Failed to run create tasking: {opsecError}") + except: + logger.exception("Failed to run create tasking") response = MythicCommandBase.PTTaskCreateTaskingMessageResponse( TaskID=msgDict["task"]["id"], Success=False, @@ -513,7 +513,7 @@ async def createTasking(msg: bytes) -> None: ) return except Exception as e: - logger.exception(f"[-] Failed to process create tasking request") + logger.exception("[-] Failed to process create tasking request") response = MythicCommandBase.PTTaskCreateTaskingMessageResponse( TaskID=0, Error=f"{traceback.format_exc()}\n{e}", @@ -531,7 +531,7 @@ async def completionFunction(msg: bytes) -> None: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["task"]["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do completion function") + logger.error("[-] no commands for payload type, can't do completion function") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["task"]["task"]["command_name"]: @@ -588,7 +588,7 @@ async def completionFunction(msg: bytes) -> None: ) except Exception as e: - logger.error(f"Failed to call completion function: {traceback.format_exc()}\n{e}") + logger.exception("Failed to call completion function") response = mythic_container.MythicCommandBase.PTTaskCompletionFunctionMessageResponse( Success=False, TaskID=0, @@ -607,7 +607,7 @@ async def processResponse(msg: bytes) -> None: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["task"]["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do process response") + logger.error("[-] no commands for payload type, can't do process response") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["task"]["task"]["command_name"]: @@ -622,8 +622,8 @@ async def processResponse(msg: bytes) -> None: body=response.to_json() ) return - except Exception as opsecError: - logger.exception(f"Failed to run process response: {opsecError}") + except: + logger.exception("Failed to run process response") response = MythicCommandBase.PTTaskProcessResponseMessageResponse( TaskID=msgDict["task"]["task"]["id"], Success=False, Error=str(traceback.format_exc()) @@ -655,7 +655,7 @@ async def dynamicQueryFunction(msg: bytes) -> bytes: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do dynamic query function") + logger.error("[-] no commands for payload type, can't do dynamic query function") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["command"]: @@ -668,8 +668,7 @@ async def dynamicQueryFunction(msg: bytes) -> bytes: mythic_container.MythicCommandBase.PTRPCDynamicQueryFunctionMessage( **msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call dynamic query function for {cmd.cmd}") + logger.exception("Failed to call dynamic query function for %s", cmd.cmd) result = mythic_container.MythicCommandBase.PTRPCDynamicQueryFunctionMessageResponse( Success=False, Error=f"Failed to call dynamic query function: {traceback.format_exc()}" @@ -678,7 +677,7 @@ async def dynamicQueryFunction(msg: bytes) -> bytes: if result is None: response = mythic_container.MythicCommandBase.PTRPCDynamicQueryFunctionMessageResponse( Success=False, - Error=f"Failed to call dynamic query function: No result returned" + Error="Failed to call dynamic query function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, list): @@ -697,7 +696,7 @@ async def dynamicQueryFunction(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"dynamic query function for {cmd.cmd} isn't callable") + logger.error("dynamic query function for %s isn't callable", cmd.cmd) response = mythic_container.MythicCommandBase.PTRPCDynamicQueryFunctionMessageResponse( Success=False, Error=f"dynamic query function for {cmd.cmd} isn't callable" @@ -733,7 +732,7 @@ async def typedTaskParseFunction(msg: bytes) -> bytes: for name, pt in PayloadBuilder.payloadTypes.items(): if pt.name == msgDict["command_payload_type"]: if pt.name not in MythicCommandBase.commands: - logger.error(f"[-] no commands for payload type, can't do typedarray parse function") + logger.error("[-] no commands for payload type, can't do typedarray parse function") else: for cmd in MythicCommandBase.commands[pt.name]: if cmd.cmd == msgDict["command"]: @@ -746,8 +745,7 @@ async def typedTaskParseFunction(msg: bytes) -> bytes: mythic_container.MythicCommandBase.PTRPCTypedArrayParseFunctionMessage( **msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call typedarray parse function for {cmd.cmd}") + logger.exception("Failed to call typedarray parse function for %s", cmd.cmd) result = mythic_container.MythicCommandBase.PTRPCTypedArrayParseFunctionMessageResponse( Success=False, Error=f"Failed to call typedarray parse function: {traceback.format_exc()}" @@ -756,7 +754,7 @@ async def typedTaskParseFunction(msg: bytes) -> bytes: if result is None: response = mythic_container.MythicCommandBase.PTRPCTypedArrayParseFunctionMessageResponse( Success=False, - Error=f"Failed to call typedarray parse function: No result returned" + Error="Failed to call typedarray parse function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, list): @@ -775,7 +773,7 @@ async def typedTaskParseFunction(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"typedarray parse function for {cmd.cmd} isn't callable") + logger.error("typedarray parse function for %s isn't callable", cmd.cmd) response = mythic_container.MythicCommandBase.PTRPCTypedArrayParseFunctionMessageResponse( Success=False, Error=f"typedarray parse function for {cmd.cmd} isn't callable" @@ -863,5 +861,5 @@ async def reSyncPayloadType(msg: bytes) -> bytes: return ujson.dumps({"success": True}).encode() return ujson.dumps({"success": False, "error": "Failed to find payload type"}).encode() except Exception as e: - logger.exception(f"Failed to re-sync payload type: {e}") + logger.exception("Failed to re-sync payload type") return ujson.dumps({"success": False, "error": f"Failed to sync: {traceback.format_exc()}\n{e}"}).encode() diff --git a/mythic_container/c2_utils.py b/mythic_container/c2_utils.py index af71079..e0da370 100644 --- a/mythic_container/c2_utils.py +++ b/mythic_container/c2_utils.py @@ -21,8 +21,8 @@ def kill(proc_pid): target_processes.kill() except psutil.NoSuchProcess: pass - except Exception as e: - logger.exception(f"[-] Failed to kill process: {e}") + except: + logger.exception("[-] Failed to kill process") async def keep_reading_stdout(c2_profile: str): @@ -48,8 +48,8 @@ async def keep_reading_stdout(c2_profile: str): except TimeoutError: await asyncio.sleep(1) continue - except Exception as e: - logger.exception(f"hit exception trying to get server output: {traceback.format_exc()}") + except: + logger.exception("hit exception trying to get server output") del mythic_container.C2ProfileBase.runningServers[c2_profile]["reading"] return @@ -62,8 +62,8 @@ async def deal_with_stdout(c2_profile: str) -> str: output += mythic_container.C2ProfileBase.runningServers[c2_profile]["output"].popleft() except IndexError: pass - except Exception as e: - logger.exception(f"hit exception trying to read server output: {traceback.format_exc()}") + except: + logger.exception("hit exception trying to read server output") return output @@ -76,8 +76,7 @@ async def opsecChecks(msg: bytes) -> bytes: try: result = await c2.opsec(mythic_container.C2ProfileBase.C2OPSECMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call opsec for {c2.name}") + logger.exception("Failed to call opsec for %s", c2.name) response = mythic_container.C2ProfileBase.C2OPSECMessageResponse( Success=False, Error=f"Failed to call opsec function: {traceback.format_exc()}\n{callEx}" @@ -86,7 +85,7 @@ async def opsecChecks(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2OPSECMessageResponse( Success=False, - Error=f"Failed to call opsec function: No result returned" + Error="Failed to call opsec function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -105,7 +104,7 @@ async def opsecChecks(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"opsec function for {c2.name} isn't callable") + logger.error("opsec function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2OPSECMessageResponse( Success=False, Error=f"opsec function for {c2.name} isn't callable" @@ -128,8 +127,7 @@ async def configChecks(msg: bytes) -> bytes: try: result = await c2.config_check(mythic_container.C2ProfileBase.C2ConfigCheckMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call config check for {c2.name}") + logger.exception("Failed to call config check for %s", c2.name) response = mythic_container.C2ProfileBase.C2ConfigCheckMessageResponse( Success=False, Error=f"Failed to call config check function: {traceback.format_exc()}\n{callEx}" @@ -138,7 +136,7 @@ async def configChecks(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2ConfigCheckMessageResponse( Success=False, - Error=f"Failed to call config check function: No result returned" + Error="Failed to call config check function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -157,7 +155,7 @@ async def configChecks(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"config check function for {c2.name} isn't callable") + logger.error("config check function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2ConfigCheckMessageResponse( Success=False, Error=f"config check function for {c2.name} isn't callable" @@ -180,8 +178,7 @@ async def getIOC(msg: bytes) -> bytes: try: result = await c2.config_check(mythic_container.C2ProfileBase.C2GetIOCMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call get_ioc for {c2.name}") + logger.exception("Failed to call get_ioc for %s", c2.name) response = mythic_container.C2ProfileBase.C2GetIOCMessageResponse( Success=False, Error=f"Failed to call config check function: {traceback.format_exc()}\n{callEx}" @@ -190,7 +187,7 @@ async def getIOC(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2GetIOCMessageResponse( Success=False, - Error=f"Failed to call config check function: No result returned" + Error="Failed to call config check function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -209,7 +206,7 @@ async def getIOC(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"get_ioc function for {c2.name} isn't callable") + logger.error("get_ioc function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2GetIOCMessageResponse( Success=False, Error=f"get ioc function for {c2.name} isn't callable" @@ -232,8 +229,7 @@ async def sampleMessage(msg: bytes) -> bytes: try: result = await c2.config_check(mythic_container.C2ProfileBase.C2SampleMessageMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call get_ioc for {c2.name}") + logger.exception("Failed to call get_ioc for %s", c2.name) response = mythic_container.C2ProfileBase.C2SampleMessageMessageResponse( Success=False, Error=f"Failed to call sample_message function: {traceback.format_exc()}\n{callEx}" @@ -242,7 +238,7 @@ async def sampleMessage(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2SampleMessageMessageResponse( Success=False, - Error=f"Failed to call sample message function: No result returned" + Error="Failed to call sample message function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -261,7 +257,7 @@ async def sampleMessage(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"sample_message function for {c2.name} isn't callable") + logger.error("sample_message function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2SampleMessageMessageResponse( Success=False, Error=f"sample message function for {c2.name} isn't callable" @@ -287,7 +283,7 @@ async def getDebugOutput(msg: bytes) -> bytes: running = False try: kill(mythic_container.C2ProfileBase.runningServers[c2.name]["process"].pid) - except Exception as e: + except: pass response = mythic_container.C2ProfileBase.C2GetDebugOutputMessageResponse( Success=True, Error="", Message=f"{await deal_with_stdout(c2.name)}", @@ -323,8 +319,7 @@ async def getRedirectorRules(msg: bytes) -> bytes: result = await c2.redirect_rules( mythic_container.C2ProfileBase.C2GetRedirectorRulesMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call get redirector rules for {c2.name}") + logger.exception("Failed to call get redirector rules for %s", c2.name) response = mythic_container.C2ProfileBase.C2GetRedirectorRulesMessageResponse( Success=False, Error=f"Failed to call get redirector rules function: {traceback.format_exc()}\n{callEx}" @@ -333,7 +328,7 @@ async def getRedirectorRules(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2GetRedirectorRulesMessageResponse( Success=False, - Error=f"Failed to call get redirector rules function: No result returned" + Error="Failed to call get redirector rules function: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -352,7 +347,7 @@ async def getRedirectorRules(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"get redirector rules function for {c2.name} isn't callable") + logger.error("get redirector rules function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2GetRedirectorRulesMessageResponse( Success=False, Error=f"get redirector rules function for {c2.name} isn't callable" @@ -425,7 +420,7 @@ async def startServer(msg: bytes) -> bytes: else: try: kill(mythic_container.C2ProfileBase.runningServers[c2.name]["process"].pid) - except Exception as e: + except: pass # now try to start it again response = await startServerBinary(c2) @@ -458,7 +453,7 @@ async def stopServer(msg: bytes) -> bytes: if mythic_container.C2ProfileBase.runningServers[c2.name]["process"] is None: # process isn't running, so we need to start it response = mythic_container.C2ProfileBase.C2StopServerMessageResponse( - Success=True, Error="", Message=f"The server is not running", + Success=True, Error="", Message="The server is not running", InternalServerRunning=False ) return ujson.dumps(response.to_json()).encode() @@ -473,7 +468,7 @@ async def stopServer(msg: bytes) -> bytes: else: try: kill(mythic_container.C2ProfileBase.runningServers[c2.name]["process"].pid) - except Exception as e: + except: pass # now try to start it again await asyncio.sleep(3) @@ -488,7 +483,7 @@ async def stopServer(msg: bytes) -> bytes: else: # just means we've never started it before, so start it now response = mythic_container.C2ProfileBase.C2StopServerMessageResponse( - Success=True, Error="", Message=f"The server was never started", + Success=True, Error="", Message="The server was never started", InternalServerRunning=False ) return ujson.dumps(response.to_json()).encode() @@ -551,7 +546,7 @@ async def reSyncC2Profile(msg: bytes) -> bytes: return ujson.dumps({"success": True}).encode() return ujson.dumps({"success": False, "error": "Failed to find c2 profile"}).encode() except Exception as e: - logger.exception(f"Failed to re-sync c2 profile: {e}") + logger.exception("Failed to re-sync c2 profile") return ujson.dumps({"success": False, "error": f"Failed to sync: {traceback.format_exc()}\n{e}"}).encode() @@ -564,8 +559,7 @@ async def hostFile(msg: bytes) -> bytes: try: result = await c2.host_file(mythic_container.C2ProfileBase.C2HostFileMessage(**msgDict)) except Exception as callEx: - logger.exception( - f"Failed to call host_file for {c2.name}") + logger.exception("Failed to call host_file for %s", c2.name) response = mythic_container.C2ProfileBase.C2HostFileMessageResponse( Success=False, Error=f"Failed to call config check function: {traceback.format_exc()}\n{callEx}" @@ -574,7 +568,7 @@ async def hostFile(msg: bytes) -> bytes: if result is None: response = mythic_container.C2ProfileBase.C2HostFileMessageResponse( Success=False, - Error=f"Failed to call host file: No result returned" + Error="Failed to call host file: No result returned" ) return ujson.dumps(response.to_json()).encode() elif isinstance(result, dict): @@ -593,7 +587,7 @@ async def hostFile(msg: bytes) -> bytes: ) return ujson.dumps(response.to_json()).encode() else: - logger.error(f"host_file function for {c2.name} isn't callable") + logger.error("host_file function for %s isn't callable", c2.name) response = mythic_container.C2ProfileBase.C2HostFileMessageResponse( Success=False, Error=f"host file function for {c2.name} isn't callable" diff --git a/mythic_container/logging.py b/mythic_container/logging.py index 26c6da9..520b5dd 100644 --- a/mythic_container/logging.py +++ b/mythic_container/logging.py @@ -32,7 +32,7 @@ def update_log_to_file(filename: str, maxSizeInMB: int, maxBackups: int, debugLe logger.setLevel(logging.WARNING) handler.setLevel(logging.WARNING) logger.addHandler(handler) - logger.info(f"[*] Using debug level: {debugLevel}") + logger.info("[*] Using debug level: %s", debugLevel) def update_log_to_stdout(debugLevel: str): @@ -53,4 +53,4 @@ def update_log_to_stdout(debugLevel: str): formatter = logging.Formatter(LOG_FORMAT) handler.setFormatter(formatter) logger.addHandler(handler) - logger.info(f"[*] Using debug level: {settingLogLevel}") + logger.info("[*] Using debug level: %s", settingLogLevel) diff --git a/mythic_container/logging_utils.py b/mythic_container/logging_utils.py index b3017c6..5f2ef21 100644 --- a/mythic_container/logging_utils.py +++ b/mythic_container/logging_utils.py @@ -10,9 +10,9 @@ async def new_callback(msg: bytes) -> None: if definedLogger.new_callback is not None and callable(definedLogger.new_callback): await definedLogger.new_callback(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_callback from logger") - except Exception as e: - logger.exception(f"Failed to execute new_callback log: {e}") + logger.error("No valid function for new_callback from logger") + except: + logger.exception("Failed to execute new_callback log") async def new_credential(msg: bytes) -> None: @@ -22,9 +22,9 @@ async def new_credential(msg: bytes) -> None: if definedLogger.new_credential is not None and callable(definedLogger.new_credential): await definedLogger.new_credential(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_credential from logger") - except Exception as e: - logger.exception(f"Failed to execute new_credential log: {e}") + logger.error("No valid function for new_credential from logger") + except: + logger.exception("Failed to execute new_credential log") async def new_keylog(msg: bytes) -> None: @@ -34,9 +34,9 @@ async def new_keylog(msg: bytes) -> None: if definedLogger.new_keylog is not None and callable(definedLogger.new_keylog): await definedLogger.new_keylog(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_keylog from logger") - except Exception as e: - logger.exception(f"Failed to execute new_keylog log: {e}") + logger.error("No valid function for new_keylog from logger") + except: + logger.exception("Failed to execute new_keylog log") async def new_file(msg: bytes) -> None: @@ -46,9 +46,9 @@ async def new_file(msg: bytes) -> None: if definedLogger.new_file is not None and callable(definedLogger.new_file): await definedLogger.new_file(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_file from logger") - except Exception as e: - logger.exception(f"Failed to execute new_file log: {e}") + logger.error("No valid function for new_file from logger") + except: + logger.exception("Failed to execute new_file log") async def new_payload(msg: bytes) -> None: @@ -58,9 +58,9 @@ async def new_payload(msg: bytes) -> None: if definedLogger.new_payload is not None and callable(definedLogger.new_payload): await definedLogger.new_payload(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_payload from logger") - except Exception as e: - logger.exception(f"Failed to execute new_payload log: {e}") + logger.error("No valid function for new_payload from logger") + except: + logger.exception("Failed to execute new_payload log") async def new_artifact(msg: bytes) -> None: @@ -70,9 +70,9 @@ async def new_artifact(msg: bytes) -> None: if definedLogger.new_artifact is not None and callable(definedLogger.new_artifact): await definedLogger.new_artifact(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_artifact from logger") - except Exception as e: - logger.exception(f"Failed to execute new_artifact log: {e}") + logger.error("No valid function for new_artifact from logger") + except: + logger.exception("Failed to execute new_artifact log:") async def new_task(msg: bytes) -> None: @@ -82,9 +82,9 @@ async def new_task(msg: bytes) -> None: if definedLogger.new_task is not None and callable(definedLogger.new_task): await definedLogger.new_task(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_task from logger") - except Exception as e: - logger.exception(f"Failed to execute new_task log: {e}") + logger.error("No valid function for new_task from logger") + except: + logger.exception("Failed to execute new_task log") async def new_response(msg: bytes) -> None: @@ -94,6 +94,6 @@ async def new_response(msg: bytes) -> None: if definedLogger.new_response is not None and callable(definedLogger.new_response): await definedLogger.new_response(LoggingMessage(**msgDict)) else: - logger.error(f"No valid function for new_response from logger") - except Exception as e: - logger.exception(f"Failed to execute new_response log: {e}") + logger.error("No valid function for new_response from logger") + except: + logger.exception("Failed to execute new_response log") diff --git a/mythic_container/mythic_service.py b/mythic_container/mythic_service.py index ac476ed..c7349db 100755 --- a/mythic_container/mythic_service.py +++ b/mythic_container/mythic_service.py @@ -153,7 +153,7 @@ async def writeFile(msg: bytes) -> bytes: response = writeFileOfPath(path, inputMsg.Contents) return ujson.dumps(response.to_json()).encode() except Exception as e: - logger.exception(f"[-] Failed to write to file with exception: {e}") + logger.exception("[-] Failed to write to file with exception") response = mythic_container.SharedClasses.WriteFileMessageResponse( Success=False, Error=f"Hit exception trying to call write file function function: {traceback.format_exc()}\n{e}" @@ -169,7 +169,7 @@ def writeFileOfPath(path: str, bytesToWrite: bytes) -> mythic_container.SharedCl response.Success = True response.Message = "Successfully wrote file" except Exception as e: - logger.exception(f"[-] Failed to write to file: {e}") + logger.exception("[-] Failed to write to file") response.Error = f"{traceback.format_exc()}\n{e}" return response @@ -236,8 +236,8 @@ async def onStart(msg: bytes) -> None: body=response.to_json() ) return - except Exception as e: - logger.exception(f"[-] Failed to call container on start with exception: {e}") + except: + logger.exception("[-] Failed to call container on start with exception") return @@ -330,7 +330,7 @@ async def syncPayloadData(pt: PayloadBuilder.PayloadType, explicitCommands: [Myt for cls in commandClasses: if len(cls.supported_payload_types) > 0 and pt.name not in cls.supported_payload_types: continue - logger.info(f"[*] Processing command {cls.cmd} for {pt.name}") + logger.info("[*] Processing command %s for %s", cls.cmd, pt.name) if pt.name not in MythicCommandBase.commands: MythicCommandBase.commands[pt.name] = [] existing = [x for x in MythicCommandBase.commands[pt.name] if x.cmd == cls.cmd] @@ -347,7 +347,7 @@ async def syncPayloadData(pt: PayloadBuilder.PayloadType, explicitCommands: [Myt cls(pt.agent_path, pt.agent_code_path, pt.agent_browserscript_path).to_json()) if explicitCommands is not None: for cls in explicitCommands: - logger.info(f"[*] Processing command {cls.cmd}") + logger.info("[*] Processing command %s", cls.cmd) if pt.name not in MythicCommandBase.commands: MythicCommandBase.commands[pt.name] = [] existing = [x for x in MythicCommandBase.commands[pt.name] if x.cmd == cls.cmd] @@ -373,10 +373,10 @@ async def syncPayloadData(pt: PayloadBuilder.PayloadType, explicitCommands: [Myt logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {pt.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", pt.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {pt.name}") + logger.info("[+] Successfully synced %s", pt.name) return @@ -457,10 +457,10 @@ async def syncC2ProfileData(c2: C2ProfileBase.C2Profile) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {c2.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", c2.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {c2.name}") + logger.info("[+] Successfully synced %s", c2.name) return @@ -485,10 +485,10 @@ async def syncTranslatorData(tr: TranslationBase.TranslationContainer) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {tr.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", tr.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {tr.name}") + logger.info("[+] Successfully synced %s", tr.name) return @@ -509,10 +509,10 @@ async def syncWebhookData(wb: WebhookBase.Webhook) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {wb.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", wb.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {wb.name}") + logger.info("[+] Successfully synced %s", wb.name) break if wb.new_startup is not None and callable(wb.new_startup): @@ -555,7 +555,7 @@ async def syncWebhookData(wb: WebhookBase.Webhook) -> None: routing_key=getRoutingKey(wb.name, mythic_container.CONSUMING_CONTAINER_RESYNC_ROUTING_KEY), handler=consumingContainerReSync ))) - logger.info(f"Successfully started webhook service") + logger.info("Successfully started webhook service") async def syncLoggingData(wb: LoggingBase.Log) -> None: @@ -575,10 +575,10 @@ async def syncLoggingData(wb: LoggingBase.Log) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {wb.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", wb.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {wb.name}") + logger.info("[+] Successfully synced %s", wb.name) break if wb.new_callback is not None and callable(wb.new_callback): @@ -642,7 +642,7 @@ async def syncLoggingData(wb: LoggingBase.Log) -> None: routing_key=getRoutingKey(wb.name, mythic_container.CONSUMING_CONTAINER_RESYNC_ROUTING_KEY), handler=consumingContainerReSync ))) - logger.info(f"Successfully started logging service") + logger.info("Successfully started logging service") async def syncAuthData(wb: AuthBase.Auth) -> None: @@ -662,10 +662,10 @@ async def syncAuthData(wb: AuthBase.Auth) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {wb.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", wb.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {wb.name}") + logger.info("[+] Successfully synced %s", wb.name) break payloadQueueTasks.append(asyncio.create_task(mythic_container.RabbitmqConnection.ReceiveFromRPCQueue( @@ -703,7 +703,7 @@ async def syncAuthData(wb: AuthBase.Auth) -> None: routing_key=getRoutingKey(wb.name, mythic_container.CONSUMING_CONTAINER_RESYNC_ROUTING_KEY), handler=consumingContainerReSync ))) - logger.info(f"Successfully started auth service") + logger.info("Successfully started auth service") async def syncEventingData(wb: EventingBase.Eventing) -> None: @@ -723,10 +723,10 @@ async def syncEventingData(wb: EventingBase.Eventing) -> None: logger.error("[-] RPC response doesn't contain success, trying again...") await asyncio.sleep(failedConnectRetryDelay) elif not response["success"]: - logger.error(f"[-] Failed to sync {wb.name}: {response['error']}, trying again...") + logger.error("[-] Failed to sync %s: %s, trying again...", wb.name, response['error']) await asyncio.sleep(failedConnectRetryDelay) else: - logger.info(f"[+] Successfully synced {wb.name}") + logger.info("[+] Successfully synced %s", wb.name) break payloadQueueTasks.append(asyncio.create_task(mythic_container.RabbitmqConnection.ReceiveFromMythicDirectExchange( @@ -754,7 +754,7 @@ async def syncEventingData(wb: EventingBase.Eventing) -> None: routing_key=getRoutingKey(wb.name, mythic_container.CONSUMING_CONTAINER_RESYNC_ROUTING_KEY), handler=consumingContainerReSync ))) - logger.info(f"Successfully started Eventing service") + logger.info("Successfully started Eventing service") async def startSharedServices(containerName: str): @@ -787,29 +787,29 @@ async def startSharedServices(containerName: str): async def start_services(): initialize() - logger.info( - f"[+] Starting Services with version {mythic_container.containerVersion} and PyPi version {mythic_container.PyPi_version}\n") + logger.info("[+] Starting Services with version %s and PyPi version %s", + mythic_container.containerVersion, mythic_container.PyPi_version) webhook_services = WebhookBase.Webhook.__subclasses__() for cls in webhook_services: - logger.info(f"[*] Processing webhook service") + logger.info("[*] Processing webhook service") webhook = cls() if webhook.name == "": logger.error("missing name for webhook") continue if webhook.name in WebhookBase.webhooks: - logger.error(f"[-] attempting to import {webhook.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", webhook.name) continue WebhookBase.webhooks[webhook.name] = webhook await syncWebhookData(webhook) logging_services = LoggingBase.Log.__subclasses__() for cls in logging_services: - logger.info(f"[*] Processing logging services") + logger.info("[*] Processing logging services") definedLog = cls() if definedLog.name == "": logger.error("missing name for logger") continue if definedLog.name in LoggingBase.loggers: - logger.error(f"[-] attempting to import {definedLog.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", definedLog.name) continue LoggingBase.loggers[definedLog.name] = definedLog await syncLoggingData(definedLog) @@ -820,10 +820,10 @@ async def start_services(): logger.error("missing name for translator") continue if translator.name in TranslationBase.translationServices: - logger.error(f"[-] attempting to import {translator.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", translator.name) continue TranslationBase.translationServices[translator.name] = translator - logger.info(f"[*] Processing translation service: {translator.name}") + logger.info("[*] Processing translation service: %s", translator.name) await syncTranslatorData(translator) await startTranslatorRabbitMQ(translator) auth_services = AuthBase.Auth.__subclasses__() @@ -833,10 +833,10 @@ async def start_services(): logger.error("missing name for auth service") continue if auth.name in AuthBase.authServices: - logger.error(f"[-] attempting to import {auth.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", auth.name) continue AuthBase.authServices[auth.name] = auth - logger.info(f"[*] Processing auth service: {auth.name}") + logger.info("[*] Processing auth service: %s", auth.name) await syncAuthData(auth) eventing_services = EventingBase.Eventing.__subclasses__() for cls in eventing_services: @@ -845,10 +845,10 @@ async def start_services(): logger.error("missing name for event service") continue if event.name in EventingBase.eventingServices: - logger.error(f"[-] attempting to import {event.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", event.name) continue EventingBase.eventingServices[event.name] = event - logger.info(f"[*] Processing eventing service: {event.name}") + logger.info("[*] Processing eventing service: %s", event.name) await syncEventingData(event) payloadTypes = PayloadBuilder.PayloadType.__subclasses__() for cls in payloadTypes: @@ -857,10 +857,10 @@ async def start_services(): logger.error("missing name for payload_type") continue if payload_type.name in PayloadBuilder.payloadTypes: - logger.error(f"[-] attempting to import {payload_type.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", payload_type.name) continue PayloadBuilder.payloadTypes[payload_type.name] = payload_type - logger.info(f"[*] Processing agent: {payload_type.name}") + logger.info("[*] Processing agent: %s", payload_type.name) await syncPayloadData(payload_type) await startPayloadRabbitMQ(payload_type) c2Profiles = C2ProfileBase.C2Profile.__subclasses__() @@ -870,10 +870,10 @@ async def start_services(): logger.error("missing name for c2profile") continue if c2profile.name in C2ProfileBase.c2Profiles: - logger.error(f"[-] attempting to import {c2profile.name} multiple times - probably due to import issues") + logger.error("[-] attempting to import %s multiple times - probably due to import issues", c2profile.name) continue C2ProfileBase.c2Profiles[c2profile.name] = c2profile - logger.info(f"[*] Processing c2 profile: {c2profile.name}") + logger.info("[*] Processing c2 profile: %s", c2profile.name) await startC2RabbitMQ(c2profile) await syncC2ProfileData(c2profile) @@ -890,10 +890,10 @@ async def test_command(payload_type_name: str, tasking_location: str = "command_line", parameters_string: str = None, parameters_dictionary: dict = None): - logger.info(f"[*] Started testing {payload_type_name}'s {command_name} command") + logger.info("[*] Started testing %s's %s command", payload_type_name, command_name) if operation_name is None or task_id is None: - logger.info(f"[*] Specify an operation_name and task_id to get real data for testing." - f"\nThis does not adjust your specified command/parameters, but allows MythicRPC calls to work properly") + logger.info("[*] Specify an operation_name and task_id to get real data for testing." + "\nThis does not adjust your specified command/parameters, but allows MythicRPC calls to work properly") params = parameters_string if parameters_dictionary is not None: params = json.dumps(parameters_dictionary) @@ -901,13 +901,13 @@ async def test_command(payload_type_name: str, for cls in payloadTypes: payload_type = cls() if payload_type.name == payload_type_name: - logger.info(f"[+] Found payload type: {payload_type.name}") + logger.info("[+] Found payload type: %s", payload_type.name) for cmdcls in MythicCommandBase.CommandBase.__subclasses__(): if cmdcls.__module__.split(".")[0] == payload_type.name: if cmdcls.cmd == command_name: commandInstance = cmdcls(payload_type.agent_path, payload_type.agent_code_path, payload_type.agent_browserscript_path) - logger.info(f"[+] Found command: {commandInstance.cmd}") + logger.info("[+] Found command: %s", commandInstance.cmd) opsecPre = MythicCommandBase.PTTaskMessageAllData( task={ "tasking_location": tasking_location, @@ -935,16 +935,16 @@ async def test_command(payload_type_name: str, ) if operation_name is None or task_id is None: logger.info( - f"[*] operation_name is None, testing with fake data. Some MythicRPC functions might not work") + "[*] operation_name is None, testing with fake data. Some MythicRPC functions might not work") else: - logger.info(f"[*] Fetching information for task {task_id} of operation {operation_name}") + logger.info("[*] Fetching information for task %s of operation %s", task_id, operation_name) fetchResp = await MythicGoRPC.SendMythicRPCTaskDisplayToRealIdSearch( MythicGoRPC.MythicRPCTaskDisplayToRealIdSearchMessage( TaskDisplayID=task_id, OperationName=operation_name )) if not fetchResp.Success: - logger.error(f"[-] Failed to find task: {fetchResp.Error}") + logger.error("[-] Failed to find task: %s", fetchResp.Error) sys.exit(1) else: taskResp = await MythicGoRPC.SendMythicRPCTaskSearch( @@ -952,10 +952,10 @@ async def test_command(payload_type_name: str, TaskID=fetchResp.TaskID, )) if not taskResp.Success: - logger.error(f"[-] Failed to get task information: {taskResp.Error}") + logger.error("[-] Failed to get task information: %s", taskResp.Error) sys.exit(1) elif len(taskResp.Tasks) == 0: - logger.error(f"[-] Failed to search for task information") + logger.error("[-] Failed to search for task information") sys.exit(1) else: opsecPre.Task = MythicCommandBase.PTTaskMessageTaskData( @@ -976,16 +976,16 @@ async def test_command(payload_type_name: str, createTasking.Task.Params = params createTasking.Task.OriginalParams = params createTasking.Task.TaskingLocation = tasking_location - logger.info(f"[*] Testing OPSEC PRE") + logger.info("[*] Testing OPSEC PRE") if not await agent_utils.verifyTaskArgs(opsecPre, ""): return else: try: response = await commandInstance.opsec_pre(taskData=opsecPre) - logger.info(f"[+] Finished OPSEC PRE:\n{json.dumps(response.to_json(), indent=4)}") - except Exception as e: - logger.exception(f"[*] Hit exception: {e}") - logger.info(f"[*] Testing Create Tasking") + logger.info("[+] Finished OPSEC PRE:\n%s", json.dumps(response.to_json(), indent=4)) + except: + logger.exception("[*] Hit exception") + logger.info("[*] Testing Create Tasking") task = await agent_utils.initialize_task(commandInstance, { "task": createTasking.Task.to_json(), "callback": createTasking.Callback.to_json() @@ -1003,23 +1003,23 @@ async def test_command(payload_type_name: str, if createTaskingResponse.Params is None: # no manual args were set, so parse them from the task.args createTaskingResponse.Params = str(task.args) - logger.info( - f"[+] Finished Create Tasking (new):\n{json.dumps(createTaskingResponse.to_json(), indent=4)}") + logger.info("[+] Finished Create Tasking (new):\n%s", + json.dumps(createTaskingResponse.to_json(), indent=4)) else: createTaskingResponse = await commandInstance.create_tasking(task=task) - logger.info( - f"[+] Finished Create Tasking (legacy):\n{json.dumps(createTaskingResponse.to_json(), indent=4)}") - except Exception as createTaskingException: - logger.exception(f"[*] Hit exception: {createTaskingException}") - logger.info(f"[*] Testing OPSEC Post") + logger.info("[+] Finished Create Tasking (legacy):\n%s", + json.dumps(createTaskingResponse.to_json(), indent=4)) + except: + logger.exception("[*] Hit exception") + logger.info("[*] Testing OPSEC Post") if not await agent_utils.verifyTaskArgs(opsecPost, ""): return else: try: response = await commandInstance.opsec_post(taskData=opsecPost) - logger.info(f"[+] Finished OPSEC POST:\n{json.dumps(response.to_json(), indent=4)}") - except Exception as e: - logger.exception(f"[*] Hit exception: {e}") + logger.info("[+] Finished OPSEC POST:\n%s", json.dumps(response.to_json(), indent=4)) + except: + logger.exception("[*] Hit exception") return - logger.error(f"[-] Failed to find command: {command_name}") - logger.error(f"[-] Failed to find payload type: {payload_type_name}") + logger.error("[-] Failed to find command: %s", command_name) + logger.error("[-] Failed to find payload type: %s", payload_type_name) diff --git a/mythic_container/rabbitmq.py b/mythic_container/rabbitmq.py index aa847e9..1dcfadd 100644 --- a/mythic_container/rabbitmq.py +++ b/mythic_container/rabbitmq.py @@ -25,18 +25,18 @@ async def messageProcessThread(message: aio_pika.abc.AbstractIncomingMessage, trueFunction: Callable[[bytes], Awaitable[None]]) -> None: try: - logger.debug(f"Ack direct call to {message.routing_key}") + logger.debug("Ack direct call to %s", message.routing_key) await message.ack() await trueFunction(message.body) - except Exception as d: - logger.exception(f"inner error: {d}") + except: + logger.exception("inner error") await message.nack(requeue=True) async def directExchangeCallback(message: aio_pika.abc.AbstractIncomingMessage, trueFunction: Callable[[bytes], Awaitable[None]]) -> None: # run async supplied function as background thread - logger.debug(f"Got direct call to {message.routing_key}") + logger.debug("Got direct call to %s", message.routing_key) #async with message.process(ignore_processed=True) as messageContext: # _thread = Thread(target=asyncio.run, # args=(messageProcessThread(message=messageContext, trueFunction=trueFunction),)) @@ -52,7 +52,7 @@ async def messageProcessRPCThread(message: aio_pika.abc.AbstractIncomingMessage, #logger.info(f"rpc response: {response}\nrequest: {message.body}") return response except Exception as d: - logger.exception(f"rpc inner error: {d}") + logger.exception("rpc inner error") return f"rpc error: {d}".encode() @@ -63,7 +63,7 @@ async def rpcExchangeCallback(message: aio_pika.abc.AbstractIncomingMessage, # _thread = Thread(target=asyncio.run, # args=(messageProcessThread(message=messageContext, trueFunction=trueFunction),)) # _thread.start() # start thread - logger.debug(f"Got RPC call to {message.routing_key}, correlation_id: {message.correlation_id}") + logger.debug("Got RPC call to %s, correlation_id: %s", message.routing_key, message.correlation_id) response = await messageProcessRPCThread(message=messageContext, trueFunction=trueFunction) await mythic_container.RabbitmqConnection.ReplyMessage(response=response, message=messageContext) @@ -88,12 +88,10 @@ async def GetConnection(self) -> aio_pika.robust_connection.AbstractRobustConnec try: if self.conn is not None and not self.conn.is_closed: return self.conn - logger.info("[*] Trying to connect to rabbitmq at: " - + settings.get("rabbitmq_host", "127.0.0.1") - + ":" - + str(settings.get("rabbitmq_port", 5672)) - ) - logger.debug(f"connecting with password: {settings.get('rabbitmq_password', 'rabbitmq_password')}...") + logger.info("[*] Trying to connect to rabbitmq at: %s:%s", + settings.get("rabbitmq_host", "127.0.0.1"), + settings.get("rabbitmq_port", 5672)) + logger.debug("connecting with password: %s...", settings.get('rabbitmq_password', 'rabbitmq_password')) self.conn = await aio_pika.connect_robust( host=settings.get("rabbitmq_host", "127.0.0.1"), port=settings.get("rabbitmq_port", 5672), @@ -108,8 +106,8 @@ async def GetConnection(self) -> aio_pika.robust_connection.AbstractRobustConnec ) logger.critical("[+] Successfully connected to rabbitmq") return self.conn - except Exception as e: - logger.error(f"[-] Failed to connect to rabbitmq: {e}") + except: + logger.exception("[-] Failed to connect to rabbitmq") await asyncio.sleep(failedConnectRetryDelay) async def SendMessage(self, queue: str, body: bytes): @@ -131,8 +129,8 @@ async def SendMessage(self, queue: str, body: bytes): immediate=False, ) return - except Exception as e: - logger.exception(f"[-] failed to send message: {e}") + except: + logger.exception("[-] failed to send message") return async def SendDictDirectMessage(self, queue: str, body: dict) -> None: @@ -145,7 +143,7 @@ async def SendRPCMessage(self, queue: str, body: bytes) -> dict: correlation_id = str(uuid.uuid4()) future = asyncio.get_event_loop().create_future() self.futures[correlation_id] = future - logger.debug(f"Sending RPC message to {queue}, correlation_id: {correlation_id}") + logger.debug("Sending RPC message to %s, correlation_id: %s", queue, correlation_id) connection = await self.GetConnection() async with connection.channel(on_return_raises=True) as chan: exchange = await chan.declare_exchange("mythic_exchange", @@ -171,56 +169,59 @@ async def SendRPCMessage(self, queue: str, body: bytes) -> dict: # cancel the current future and move on to try again future.cancel() self.futures.pop(message.correlation_id, None) - logger.error(f"hit timeout waiting for RPC response in {queue} for correlation_id: {message.correlation_id}, retrying...") + logger.error("hit timeout waiting for RPC response in %s for correlation_id: %s, retrying...", + queue, message.correlation_id) continue - except Exception as err: + except: future.cancel() self.futures.pop(message.correlation_id, None) - logger.error(f"hit error trying to send RPC message in {queue} for correlation_id: {message.correlation_id}, retrying...:\n{err}") + logger.exception("hit error trying to send RPC message in %s for correlation_id: %s, retrying...", + queue, message.correlation_id) await asyncio.sleep(5) continue - logger.debug(f"published RPC message to {queue}, correlation id: {message.correlation_id}") + logger.debug("published RPC message to %s, correlation id: %s", queue, message.correlation_id) try: result = await asyncio.wait_for(future, timeout=10) - logger.debug(f"got RPC result to {queue}, correlation id: {message.correlation_id}") + logger.debug("got RPC result to %s, correlation id: %s", queue, message.correlation_id) return result except asyncio.TimeoutError: # cancel the current future and move on to try again future.cancel() - logger.error(f"hit timeout waiting for RPC response on {queue} for correlation_id {message.correlation_id}, retrying...") + logger.error("hit timeout waiting for RPC response on %s for correlation_id %s, retrying...", + queue, message.correlation_id) except Exception as sendError: - logger.error(f"got error on {queue} for correlation_id {message.correlation_id}:\n{sendError}") + logger.exception("got error on %s for correlation_id %s", queue, message.correlation_id) await asyncio.sleep(5) - except Exception as e: - logger.error(f"[-] failed to send rpc message to {queue}: {e}") + except: + logger.error("[-] failed to send rpc message to %s", queue) return {} def on_response(self, message: aio_pika.abc.AbstractIncomingMessage) -> None: try: #logger.debug(f"got on_response for correlation_id: {message.correlation_id}") if message.correlation_id is None: - logger.error(f"Bad message {message!r}") + logger.error("Bad message %s", repr(message)) return future: asyncio.Future = self.futures.pop(message.correlation_id, None) if future: try: if future.cancelled(): - logger.debug(f"got response for {message.correlation_id}, but it was cancelled") + logger.debug("got response for %s, but it was cancelled", message.correlation_id) else: future.set_result(ujson.loads(message.body)) - logger.debug(f"got response for {message.correlation_id}") + logger.debug("got response for %s", message.correlation_id) - except Exception as fe: - logger.exception(f"Failed to process response as json: {fe}") + except Exception: + logger.exception("Failed to process response as json") future.set_result({}) else: - logger.error( - f"Failed to handle response: unknown correlation_id\nmessage: {message}\nbody:{message.body}\nfutures:{self.futures}") + logger.error("Failed to handle response: unknown correlation_id\nmessage: %s\nbody: %s\nfutures: %s", + message, message.body, self.futures) except Exception as e: - logger.exception( - f"Failed to handle response: {e}\nmessage: {message}\nbody:{message.body}\nfutures:{self.futures}") + logger.exception("Failed to handle response: %s\nmessage: %s\nbody:%s\nfutures:%s", + e, message, message.body, self.futures) async def SendRPCDictMessage(self, queue: str, body: dict) -> dict: #logger.debug(f"Sending RPC msg: {body}") @@ -241,10 +242,10 @@ async def ReplyMessage(self, response: bytes, message: aio_pika.abc.AbstractInco routing_key=message.reply_to, mandatory=False ) - logger.debug(f"Send reply for correlation_id: {message.correlation_id}") + logger.debug("Send reply for correlation_id: %s", message.correlation_id) - except Exception as e: - logger.exception(f"[-] failed to send reply message: {e}") + except: + logger.exception("[-] failed to send reply message") pass async def ReceiveFromMythicDirectExchange(self, queue: str, routing_key: str, @@ -273,17 +274,18 @@ async def ReceiveFromMythicDirectExchange(self, queue: str, routing_key: str, await q.consume( callback=partial(directExchangeCallback, trueFunction=handler), ) - logger.info(f"[*] started listening for messages on {queue}") + logger.info("[*] started listening for messages on %s", queue) try: await asyncio.Future() - logger.error(f"asyncio.Future() finished in ReceiveFromMythicDirectExchange for {queue}") - except Exception as directException: - logger.exception(f"[-] exception trying to listen for direct messages on {queue}\n{directException}") + logger.error("asyncio.Future() finished in ReceiveFromMythicDirectExchange for %s", queue) + except: + logger.exception("[-] exception trying to listen for direct messages on %s", queue) except aiormq.exceptions.ChannelLockedResource: - logger.error(f"[-] Another instance of this service, {queue.split('_')[0]}, is running, failed to start, trying again...") + logger.error("[-] Another instance of this service, %s, is running, failed to start, trying again...", + queue.split('_')[0]) await asyncio.sleep(failedConnectRetryDelay) - except Exception as e: - logger.exception(f"[-] stopped listening for messages on {queue}, {e}") + except: + logger.exception("[-] stopped listening for messages on %s", queue) await asyncio.sleep(failedConnectRetryDelay) async def ReceiveFromRPCQueue(self, queue: str, routing_key: str, handler: Coroutine[any, any, None]): @@ -312,16 +314,16 @@ async def ReceiveFromRPCQueue(self, queue: str, routing_key: str, handler: Corou await q.consume( callback=partial(rpcExchangeCallback, trueFunction=handler), ) - logger.info(f"[*] started listening for messages on {queue}") + logger.info("[*] started listening for messages on %s", queue) try: await asyncio.Future() finally: - logger.error(f"asyncio.Future() finished in ReceiveFromRPCQueue for queue {queue}") + logger.error("asyncio.Future() finished in ReceiveFromRPCQueue for queue %s", queue) except aiormq.exceptions.ChannelLockedResource: - logger.error(f"[-] Another instance of this service, {queue.split('_')[0]}, is running, failed to start, trying again...") + logger.error("[-] Another instance of this service, %s, is running, failed to start, trying again...", queue.split('_')[0]) await asyncio.sleep(failedConnectRetryDelay) - except Exception as e: - logger.exception(f"[-] stopped listening for messages on {queue}, {e}") + except: + logger.exception("[-] stopped listening for messages on %s", queue) await asyncio.sleep(failedConnectRetryDelay) async def ReceiveFromMythicDirectTopicExchange(self, queue: str, routing_key: str, @@ -350,12 +352,12 @@ async def ReceiveFromMythicDirectTopicExchange(self, queue: str, routing_key: st await q.consume( callback=partial(directExchangeCallback, trueFunction=handler) ) - logger.info(f"[*] started listening for messages on {queue}") + logger.info("[*] started listening for messages on %s", queue) try: await asyncio.Future() - logger.error(f"asyncio.Future() finished in ReceiveFromMythicDirectTopicExchange for {queue}") - except Exception as directException: - logger.exception(f"[-] exception trying to listen for direct messages on {queue}\n{directException}") - except Exception as e: - logger.exception(f"[-] stopped listening for messages on {queue}, {e}") + logger.error("asyncio.Future() finished in ReceiveFromMythicDirectTopicExchange for %s", queue) + except: + logger.exception(f"[-] exception trying to listen for direct messages on %s", queue) + except: + logger.exception("[-] stopped listening for messages on %s", queue) await asyncio.sleep(failedConnectRetryDelay) diff --git a/mythic_container/utils_mythic_file_transfer.py b/mythic_container/utils_mythic_file_transfer.py index d13e597..ba9649b 100644 --- a/mythic_container/utils_mythic_file_transfer.py +++ b/mythic_container/utils_mythic_file_transfer.py @@ -13,13 +13,13 @@ async def sendFileToMythic(contents: bytes, agentFileId: str) -> bool: if resp.status == 200: responseData = await resp.json() if "status" in responseData and responseData["status"] == "success": - logger.info(f"[+] Successfully uploaded file contents to Mythic") + logger.info("[+] Successfully uploaded file contents to Mythic") return True else: - logger.error(f"[-] Failed to upload file contents to Mythic") + logger.error("[-] Failed to upload file contents to Mythic") return False - except Exception as e: - logger.exception(f"[-] Failed to upload payload contents: {e}") + except: + logger.exception("[-] Failed to upload payload contents") return False @@ -31,6 +31,6 @@ async def getFileFromMythic(agentFileId: str) -> bytes: if resp.status == 200: responseData = await resp.read() return responseData - except Exception as e: - logger.exception(f"[-] Failed to upload payload contents: {e}") + except: + logger.exception("[-] Failed to upload payload contents") return None \ No newline at end of file diff --git a/mythic_container/webhook_utils.py b/mythic_container/webhook_utils.py index 6514150..b492557 100644 --- a/mythic_container/webhook_utils.py +++ b/mythic_container/webhook_utils.py @@ -10,9 +10,9 @@ async def new_startup(msg: bytes) -> None: if webhook.new_startup is not None and callable(webhook.new_startup): await webhook.new_startup(WebhookMessage(**msgDict)) else: - logger.error(f"No valid function for new_startup from webhook") - except Exception as e: - logger.exception(f"Failed to execute new_startup webhook: {e}") + logger.error("No valid function for new_startup from webhook") + except: + logger.exception("Failed to execute new_startup webhook") async def new_callback(msg: bytes) -> None: @@ -22,9 +22,9 @@ async def new_callback(msg: bytes) -> None: if webhook.new_callback is not None and callable(webhook.new_callback): await webhook.new_callback(WebhookMessage(**msgDict)) else: - logger.error(f"No valid function for new_callback from webhook") - except Exception as e: - logger.exception(f"Failed to execute new_callback webhook: {e}") + logger.error("No valid function for new_callback from webhook") + except: + logger.exception("Failed to execute new_callback webhook") async def new_feedback(msg: bytes) -> None: @@ -34,9 +34,9 @@ async def new_feedback(msg: bytes) -> None: if webhook.new_feedback is not None and callable(webhook.new_feedback): await webhook.new_feedback(WebhookMessage(**msgDict)) else: - logger.error(f"No valid function for new_feedback from webhook") - except Exception as e: - logger.exception(f"Failed to execute new_feedback webhook: {e}") + logger.error("No valid function for new_feedback from webhook") + except: + logger.exception("Failed to execute new_feedback webhook") async def new_alert(msg: bytes) -> None: @@ -46,9 +46,9 @@ async def new_alert(msg: bytes) -> None: if webhook.new_alert is not None and callable(webhook.new_alert): await webhook.new_alert(WebhookMessage(**msgDict)) else: - logger.error(f"No valid function for new_alert from webhook") - except Exception as e: - logger.exception(f"Failed to execute new_alert webhook: {e}") + logger.error("No valid function for new_alert from webhook") + except: + logger.exception("Failed to execute new_alert webhook") async def new_custom(msg: bytes) -> None: @@ -58,6 +58,6 @@ async def new_custom(msg: bytes) -> None: if webhook.new_custom is not None and callable(webhook.new_custom): await webhook.new_custom(WebhookMessage(**msgDict)) else: - logger.error(f"No valid function for new_custom from webhook") - except Exception as e: - logger.exception(f"Failed to execute new_custom webhook: {e}") \ No newline at end of file + logger.error("No valid function for new_custom from webhook") + except: + logger.exception("Failed to execute new_custom webhook") \ No newline at end of file