def _save_tracker(self): pz.save(self.tracker, self.tracker_path)
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
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