Beispiel #1
0
 def _save_tracker(self):
     pz.save(self.tracker, self.tracker_path)
Beispiel #2
0
 def _save_tracker(self):
     pz.save(self.tracker, self.tracker_path)
Beispiel #3
0
    def __init__(self, model_dir, path_conf):

        self.model_dir = model_dir
        self.path_conf = path_conf

        # open conf file
        config = ConfigParser.RawConfigParser()
        fuzzer_conf = os.path.join(path_conf, "fuzzer.conf")
        config.readfp(open(fuzzer_conf))

        # load network config
        self.host = config.get('network', 'host')
        self.port = literal_eval(config.get('network', 'port'))
        self.timeout = literal_eval(config.get('network', 'timeout'))
        self.bsize = literal_eval(config.get('network', 'bsize'))

        # load fuzzer config
        self.fuzzer_mode = config.get('fuzzer', 'fuzzermode')
        self.interactive = literal_eval(config.get('fuzzer', 'interactive'))
        self.fuzz_length = config.get('fuzzer', 'fuzzlength')
        self.timer_termination = literal_eval(config.get('fuzzer',
                                                         'terminationtimer'))

        #load config and initialize LENS object
        model_file = os.path.join(model_dir, os.path.basename(model_dir))
        role = config.get('fuzzer', 'role')
        if role == "client":
            role = "UAC"
        else:
            role = "UAS"
        sim_search = literal_eval(config.get('fuzzer', 'simsearch'))
        transition_mode = literal_eval(config.get('fuzzer', 'transitionmode'))
        lexer_style = config.get('fuzzer', 'lexerstyle')
        templates_no_fields = literal_eval(config.get('fuzzer',
                                                      'nofieldstemplates'))
        self.lens = Lens(model_file,
                         role,
                         sim_search,
                         transition_mode,
                         lexer_style,
                         templates_no_fields)

        #TODO add the passing of the fuzzer to the parameter of lens
        self.lens.set_fuzzer(self)

        #initialize Logger
        log_file_name = "{}.fuzzlog".format(self.lens.modelPath)
        self.logger = Logger(log_file_name)
        self.iteration = 0
        self.status = FUZZ_STATUS_OK
        self.trace = [], []

        self.tracker_path = "{}.tracker.pz".format(self.lens.modelPath)
        if not os.path.isfile(self.tracker_path):
            # every fuzzable template is initialized to 2^num_fields-1
            # to index all possible fuzzing masks of fields
            self.tracker = {}
            for t in self.lens.tl.template_list:
                if t.state.endswith(self.lens.role) and len(t.fields) != 0:
                    self.tracker[t.ID] = 2**len(t.fields)-1
            pz.save(self.tracker, self.tracker_path)
        else:
            self._load_tracker()

        # load cuckoo config
        self.cuckoo_session = literal_eval(config.get('cuckoo', 'active'))
        self.cuckoo_path = config.get('cuckoo', 'path')
        sys.path.insert(0, os.path.abspath(self.cuckoo_path))
        if self.cuckoo_session == 1:
            from lib.cuckoo.core.database import Database
            self.db = Database()
            self.bin_name = model_file
Beispiel #4
0
    def __init__(self, model_dir, path_conf):

        self.model_dir = model_dir
        self.path_conf = path_conf

        # open conf file
        config = ConfigParser.RawConfigParser()
        fuzzer_conf = os.path.join(path_conf, "fuzzer.conf")
        config.readfp(open(fuzzer_conf))

        # load network config
        self.host = config.get('network', 'host')
        self.port = literal_eval(config.get('network', 'port'))
        self.timeout = literal_eval(config.get('network', 'timeout'))
        self.bsize = literal_eval(config.get('network', 'bsize'))

        # load fuzzer config
        self.fuzzer_mode = config.get('fuzzer', 'fuzzermode')
        self.interactive = literal_eval(config.get('fuzzer', 'interactive'))
        self.fuzz_length = config.get('fuzzer', 'fuzzlength')
        self.timer_termination = literal_eval(
            config.get('fuzzer', 'terminationtimer'))

        #load config and initialize LENS object
        model_file = os.path.join(model_dir, os.path.basename(model_dir))
        role = config.get('fuzzer', 'role')
        if role == "client":
            role = "UAC"
        else:
            role = "UAS"
        sim_search = literal_eval(config.get('fuzzer', 'simsearch'))
        transition_mode = literal_eval(config.get('fuzzer', 'transitionmode'))
        lexer_style = config.get('fuzzer', 'lexerstyle')
        templates_no_fields = literal_eval(
            config.get('fuzzer', 'nofieldstemplates'))
        self.lens = Lens(model_file, role, sim_search, transition_mode,
                         lexer_style, templates_no_fields)

        #TODO add the passing of the fuzzer to the parameter of lens
        self.lens.set_fuzzer(self)

        #initialize Logger
        log_file_name = "{}.fuzzlog".format(self.lens.modelPath)
        self.logger = Logger(log_file_name)
        self.iteration = 0
        self.status = FUZZ_STATUS_OK
        self.trace = [], []

        self.tracker_path = "{}.tracker.pz".format(self.lens.modelPath)
        if not os.path.isfile(self.tracker_path):
            # every fuzzable template is initialized to 2^num_fields-1
            # to index all possible fuzzing masks of fields
            self.tracker = {}
            for t in self.lens.tl.template_list:
                if t.state.endswith(self.lens.role) and len(t.fields) != 0:
                    self.tracker[t.ID] = 2**len(t.fields) - 1
            pz.save(self.tracker, self.tracker_path)
        else:
            self._load_tracker()

        # load cuckoo config
        self.cuckoo_session = literal_eval(config.get('cuckoo', 'active'))
        self.cuckoo_path = config.get('cuckoo', 'path')
        sys.path.insert(0, os.path.abspath(self.cuckoo_path))
        if self.cuckoo_session == 1:
            from lib.cuckoo.core.database import Database
            self.db = Database()
            self.bin_name = model_file