コード例 #1
0
    def __init__(self,
                 name=str,
                 host=str,
                 port=int,
                 max_retries=10,
                 timeout=None,
                 logger=None,
                 pb2_module=None) -> None:
        """
        Class creates the protobuf payload with the marriage of Fuzzed data.

        :param name: name of the class
        :param host: target host
        :param port: target port
        :param max_retries: maximum retries of connection
        :param timeout: timeout
        :param logger: kitty logger
        """
        super(ProtobufTarget, self).__init__(name, logger)
        self.host = host
        self.port = port
        if (host is None) or (port is None):
            raise ValueError('Host and port may not be None')
        self.timeout = timeout
        self.socket = None
        self.max_retries = max_retries
        self.pb2_module = pb2_module
        self.set_expect_response(False)
        self.config = ConfigParser()
        self.verbosity = self.config.get_generic_verbosity()
        self.logger.setLevel(self.verbosity)
        self.module_path = self.config.get_module_path()
        self._uuid = GenerateUUID.generate_uuid()
        self.frmwrk_utils = FrameworkUtils()
コード例 #2
0
 def __init__(self,
              name,
              host,
              port,
              max_retries=10,
              timeout=None,
              logger=None) -> object:
     """
     :param name: name of the target
     :param host: host ip (to send data to) currently unused
     :param port: port to send to
     :param max_retries: maximum connection retries (default: 10)
     :param timeout: socket timeout (default: None)
     :param logger: logger for the object (default: None)
     """
     super(HttpTarget, self).__init__(name, logger)
     self.host = host
     self.port = port
     if (host is None) or (port is None):
         raise ValueError('host and port may not be None')
     self.timeout = timeout
     self.socket = None
     self.max_retries = max_retries
     self.config = ConfigParser()
     self.use_tls = self.config.get_tls()
     self.target_host = self.config.get_target_host_name()
     self.report = Report('report')
     self._uuid = GenerateUUID.generate_uuid()
コード例 #3
0
 def __init__(self, name, host, port, timeout=None, logger=None):
     """
     :param name: name of the target
     :param host: host ip (to send data to) currently unused
     :param port: port to send to
     :param timeout: socket timeout (default: None)
     :param logger: logger for the object (default: None)
     """
     super(DnsTarget, self).__init__(name, logger)
     self.host = host
     self.port = port
     if (host is None) or (port is None):
         raise ValueError('Host and port may not be None!')
     self.timeout = timeout
     self.socket = None
     self.bind_host = None
     self.bind_port = None
     self.expect_response = False
     self.config = ConfigParser()
     self.dns_a_record_status = self.config.get_dns_a_record_status()
     self.dns_ns_record_status = self.config.get_dns_ns_record_status()
     self.dns_txt_record_status = self.config.get_dns_txt_record_status()
     self.verbosity = self.config.get_generic_verbosity()
     self.logger.setLevel(self.verbosity)
     self._uuid = GenerateUUID.generate_uuid()
     self.question_length = None
コード例 #4
0
ファイル: utils.py プロジェクト: netlounge/fuzzer_framework
 def __init__(self, name='FrameworkUtils', logger=None):
     """
     Constructor of utils
     :type name of the object: object
     """
     super(FrameworkUtils, self).__init__(name, logger)
     self.logger = FuzzObject.get_logger()
     self._uuid = GenerateUUID.generate_uuid()
コード例 #5
0
 def test_08_archive_locally(self):
     dir_exists = False
     self.framework_utils.archive_locally()
     self._uuid = GenerateUUID.generate_uuid()
     dir_ = str(self._uuid) + '-log'
     if os.path.exists(os.getcwd() + '/' + dir_):
         dir_exists = True
     self.assertTrue(dir_exists, True)
コード例 #6
0
 def test_05_rename_log_file(self):
     self._uuid = GenerateUUID.generate_uuid()
     self.framework_utils.rename_log_file()
     file_name = glob.glob(os.getcwd() + '/kittylogs/' +
                           '*.log')[0].split('/')[-1:]
     expected_file_name = str(
         self._uuid) + '-kitty_' + time.strftime("%Y%m%d-%H%M%S") + '.log'
     shutil.rmtree(os.getcwd() + '/kittylogs/', ignore_errors=True)
     self.assertAlmostEqual(file_name[0], expected_file_name)
コード例 #7
0
 def __init__(self, name='HttpRunner', logger=None) -> object:
     """
     HttpRunner constructor
     :param name: the name of the class
     :param logger: logger from the framework
     """
     super(HttpRunner, self).__init__(name, logger)
     self.config = ConfigParser()
     self.target_host = self.config.get_target_host_name()
     self.target_port = self.config.get_target_port()
     self.http_get = self.config.get_http_get_method()
     self.http_post_put = self.config.get_http_post_put_method()
     self.http_post_update = self.config.get_http_post_update_method()
     self.http_delete = self.config.get_http_delete_method()
     self.http_fuzz_protocol = self.config.get_http_fuzz_protocol()
     self.http_path = self.config.get_http_path()
     self.http_content_type = self.config.get_http_content_type()
     self.http_payload = self.config.get_http_payload()
     self.gen_uuid = GenerateUUID.generate_uuid()
コード例 #8
0
 def __init__(self, name='CreateReport', logger=None):
     super(CreateReport, self).__init__(name, logger)
     self._uuid = GenerateUUID.generate_uuid()
     self.files_to_report = None
コード例 #9
0
 def __init__(self, name='PutArchiveToS3', logger=None):
     super(PutArchiveToS3, self).__init__(name, logger)
     self._uuid = GenerateUUID.generate_uuid()
     self.region = 'eu-central-1'
     self.s3_resource = boto3.resource('s3')
     self.s3_connection = self.s3_resource.meta.client
コード例 #10
0
class FuzzObject:
    """
    Basic class to define specific logging independently from Kitty
    for the fuzzer_framework
    """

    _logger = None
    _uuid = GenerateUUID.generate_uuid()
    log_file_name = './fuzzer_logs/%s-frmwrk_%s.log' % (str(_uuid), time.strftime("%Y%m%d-%H%M%S"),)

    @classmethod
    def get_logger(cls) -> object:
        """
        :return: the class logger
        """
        if FuzzObject._logger is None:
            logger = logging.getLogger('fuzzer')
            logger.setLevel(logging.INFO)
            consolehandler = logging.StreamHandler()
            console_format = logging.Formatter('[%(levelname)-1s] [%(asctime)s] [%(filename)s:%(lineno)s] '
                                               '[%(funcName)s] %(message)s')
            consolehandler.setFormatter(console_format)
            logger.addHandler(consolehandler)
            if not os.path.exists('./fuzzer_logs/'):
                os.mkdir('./fuzzer_logs')
            filehandler = logging.FileHandler(FuzzObject.log_file_name)
            file_format = console_format
            filehandler.setFormatter(file_format)
            logger.addHandler(filehandler)
            FuzzObject._logger = logger
        return FuzzObject._logger

    @classmethod
    def get_log_file_name(cls) -> object:
        """
        Get the logger file name.
        :return: object
        """
        return FuzzObject.get_log_file_name()

    @classmethod
    def set_verbosity(cls, verbosity):
        """

        :param verbosity: the level of the verbosity DEBUG, INFO
        :rtype: object
        """
        # TODO extend point 02: implement WARNING, CRITICAL
        if verbosity > 0:
            logger = FuzzObject.get_logger()
            levels = [logging.DEBUG]
            verbosity = min(verbosity, len(levels)) - 1
            logger.setLevel(levels[verbosity])

    def __init__(self, name, logger=None):
        """

        :type logger: object
        """
        self.name = name
        if logger:
            self.logger = logger
        else:
            self.logger = FuzzObject.get_logger()

    def get_description(self):
        """
        :rtype: str
        :return: the description of the object. by default only prints the object type.
        """
        return type(self).__name__

    def get_name(self):
        """
        :rtype: str
        :return: object's name
        """
        return self.name