ExpDepos.libs.core.common.Result 源代码

#!/usr/bin/env python

"""
@Author: Castiel
@Email:  ca3tie1@gmail.com
@Blog:   https://ca3tie1.github.io
@Git:    https://github.com/ca3tie1
@Wechat: Ca5tie1
@Date:   2021/7/31 18:00
"""

from ExpDepos.libs.core.common.Enums import RESULT_STATUS
from ExpDepos.libs.core.base.ExploitBase import ExpDeposExploitException


[文档]class Result(object): """ exploit模块执行结果类 用于存储exploit模块执行的各项结果数据 """ def __init__(self, module): """ 初始化 :param module: exploit模块对象 """ self.status = RESULT_STATUS.FILED self.message = "'{0}' 执行成功".format(module.Name) self.data = dict() if module: self.name = module.Name self.options = module.get_options()
[文档] def success(self, message: str = None, result: dict = None): """ 设置成功信息 :param message: 成功消息 :param result: exploit利用成功结果集,必须是键值对应的字典类型 :return: """ self.status = RESULT_STATUS.SUCCESS if message: self.message = message if result is not None: if not isinstance(result, dict): raise ExpDeposExploitException("'{0}' 模块返回数据格式错误,此处应是个字典类型".format(self.name)) if 'message' in result and not message: self.message = result['message'] self.data.update(result)
[文档] def fail(self, reason: str = None, result: dict = None): """ 设置失败信息 :param reason: 失败原因 :param result: exploit利用失败结果及,必须是键值对应的字典类型 :return: """ self.status = RESULT_STATUS.FILED if reason: self.message = reason if result is not None: if not isinstance(result, dict): raise ExpDeposExploitException("'{0}' 模块返回数据格式错误,此处应是个字典类型".format(self.name)) if 'message' in result and not reason: self.message = result['message'] self.data.update(result)
[文档] def is_success(self): """ 校验模块是否利用成功 :return: bool """ return bool(self.status is RESULT_STATUS.SUCCESS)
def __str__(self): return str(self.__dict__)