def create_population(grammars, diversification_factor=1): mutated_grams = [] for g in grammars: cmd_gram = utilityFunctions.copy_dict(g) update_current(cmd_gram) generated = 0 while generated < diversification_factor: ''' global move_command if move_command == 0: move_command = 1 if utilityFunctions.flip_coin(10) == 1 else 0 ''' # 3 steps: # 1. random crossover # check if no crossover fuzzer new_gram = utilityFunctions.copy_dict( gram_crossover(cmd_gram, move_command) ) if fuzz_type != 2 else utilityFunctions.copy_dict(cmd_gram) if fuzz_type != 3: # check if no mutation fuzz # 2. random add or delete if utilityFunctions.flip_coin() == 1: gram_random_add_delete(new_gram, move_command) # 3. random valid/invalid if utilityFunctions.flip_coin() == 1: make_gram_invalid(new_gram) if new_gram not in stored_grammar and new_gram != standard_grammar: mutated_grams.append(new_gram) generated += 1 return mutated_grams
def modify_set(gram_set, diversification_factor): modified_set = [] for _ in range(diversification_factor): modified_set.append([]) for g in gram_set: generated = 0 previous_gram = {} while generated < diversification_factor: new_gram = utilityFunctions.copy_dict(g) modify_grammar(new_gram, fuzz_settings, move_command) if new_gram not in standard_set and new_gram != previous_gram: modified_set[generated].append(new_gram) generated += 1 previous_gram = utilityFunctions.copy_dict(new_gram) return modified_set
def modify_grammar_back(gram): cmd_gram = utilityFunctions.copy_dict(gram) # 3 steps: # 1. random crossover # check if no crossover fuzzer new_gram = utilityFunctions.copy_dict( gram_crossover(cmd_gram, move_command) ) if fuzz_type != 2 else utilityFunctions.copy_dict(cmd_gram) if fuzz_type != 3: # check if no mutation fuzz # 2. random add or delete if utilityFunctions.flip_coin() == 1: gram_random_add_delete(new_gram, move_command) # 3. random valid/invalid if utilityFunctions.flip_coin() == 1: make_gram_invalid(new_gram) return new_gram
def create_population(grammars, diversification_factor=1): mutated_grams = [] if fuzz_settings[1] == '1': # crossover multi_gram_crossover(grammars) for g in grammars: cmd_gram = utilityFunctions.copy_dict(g) update_current(cmd_gram) generated = 0 while generated < diversification_factor: new_gram = utilityFunctions.copy_dict(cmd_gram) modify_grammar(new_gram, fuzz_settings, move_command) if new_gram not in stored_grammar and new_gram != standard_grammar: mutated_grams.append(new_gram) generated += 1 #else: # print ('new_gram not new!') return mutated_grams
def create_population(grammars, diversification_factor=1): mutated_grams = [] for g in grammars: cmd_gram = utilityFunctions.copy_dict(g) update_current(cmd_gram) generated = 0 while generated < diversification_factor: ''' global move_command if move_command == 0: move_command = 1 if utilityFunctions.flip_coin(10) == 1 else 0 ''' new_gram = utilityFunctions.copy_dict(cmd_gram) modify_grammar(new_gram, fuzz_settings, move_command) if new_gram not in stored_grammar and new_gram != standard_grammar: mutated_grams.append(new_gram) generated += 1 #else: # print ('new_gram not new!') return mutated_grams