#!/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__)