katnip.legos.json module

JSON legos - simplified fuzzing of JSON-based protocols

Todo

JsonNumber

class katnip.legos.json.JsonArray(name, values)

Bases: kitty.model.low_level.container.Container

JSON array field

__init__(name, values)
Parameters:
  • name – block name
  • values (list of BaseField) – array members
class katnip.legos.json.JsonBoolean(name, value=None, fuzzable=True)

Bases: kitty.model.low_level.container.Container

JSON boolean field

__init__(name, value=None, fuzzable=True)
Parameters:
  • name – block name
  • value (bool) – value to be used, if None - generate both ‘true’ and ‘false’ (default: None)
  • fuzzable – should we fuzz this field (only if value is not None) (default: True)
class katnip.legos.json.JsonNull(name, fuzzable=False)

Bases: kitty.model.low_level.container.Container

JSON Null field

__init__(name, fuzzable=False)
Parameters:
  • name – block name
  • fuzzable – should we fuzz this field (default: False)
class katnip.legos.json.JsonObject(name, member_dict, fuzz_keys=False)

Bases: kitty.model.low_level.container.Container

JSON object

__init__(name, member_dict, fuzz_keys=False)
Parameters:
  • name – block name
  • member_dict (dictionary (str, BaseField)) – members of this object
  • fuzz_keys – should we fuzz the dictionary keys (default: False)
class katnip.legos.json.JsonString(name, value, fuzzable=True)

Bases: kitty.model.low_level.container.Container

JSON string field

__init__(name, value, fuzzable=True)
Parameters:
  • name – block name
  • value – value to be used
  • fuzzable – should we fuzz this field (default: True)
katnip.legos.json.dict_to_JsonObject(the_dict, name=None, ctx=None)

Create a JsonObject from a dictionary. The context parameter is used for recursive calls, no need to pass it from outside.

Parameters:
  • the_dict – dictionary to base the JsonObject on
  • ctx – context for the parser (default: None)
Return type:

JsonObject

Returns:

JSON object that represents the dictionary

katnip.legos.json.list_to_JsonArray(the_list, name=None, ctx=None)

Create a JsonArray from a list. The context parameter is used for recursive calls, no need to pass it from outside.

Parameters:
  • the_list – list to base the JsonArray on
  • ctx – context for the parser (default: None)
Return type:

JsonArray

Returns:

JSON object that represents the list

katnip.legos.json.str_to_json(json_str, name=None)

Create a JSON lego based on a json string.

Parameters:
  • name – name of the generated container
  • json_str – json string to base the template on
Return type:

JsonArray or JsonObject

Returns:

JSON object or JSON array.