def _mutate(self): current_value = list() current_mutation_length = secure_randint(self.min_length, self.max_length) for st in range(self.position, self.position + current_mutation_length): current_value.append(chr(st)) self._current_value = self.to_bits("".join(current_value)) self.position += current_mutation_length if self.position > self.MAX: self.position = self.init_position()
def get_fuzz_type_by_param_type(fuzz_type): # https://kitty.readthedocs.io/en/latest/data_model/big_list_of_fields.html#atomic-fields # https://swagger.io/docs/specification/data-models/data-types/ string_types = [UnicodeStrings, RandomBitsField, Utf8Chars] number_types = [UnicodeStrings, RandomBitsField] types = { 'integer': number_types, 'float': number_types, 'double': number_types, 'int32': number_types, 'int64': number_types, 'number': number_types, 'string': string_types, 'email': string_types, 'uuid': string_types, 'uri': string_types, 'hostname': string_types, 'ipv4': string_types, 'ipv6': string_types, 'boolean': string_types } fuzzer_list = types.get(fuzz_type, string_types) return fuzzer_list[secure_randint(0, max(len(fuzzer_list) - 1, 1))]
def init_position(self): return secure_randint(0, self.MAX)