Beispiel #1
0
    def __init__(self, key, default_value, length=None, encoder=ENC_STR_DEFAULT, fuzzable=False, name=None):
        '''
        :type key: str
        :param key: key for the data in the session_data dictionary
        :type default_value: str
        :param default_value: default value of the field
        :param length: length of the field in bytes. must be set if fuzzable=True (default: None)
        :type encoder: :class:`~kitty.model.low_levele.encoder.StrEncoder`
        :param encoder: encoder for the field (default: ENC_STR_DEFAULT)
        :param fuzzable: is field fuzzable (default: False)
        :param name: name of the object (default: None)

        :examples:

            ::

                Dynamic(key='session id', default_value='\x01\x02\x03\x04')
                Dynamic(key='session id', default_value='\x01\x02\x03\x04', length=4, fuzzable=True)
        '''
        self._key = key
        super(Dynamic, self).__init__(value=default_value, encoder=encoder, fuzzable=fuzzable, name=name)
        self._length = length
        if self._fuzzable:
            kassert.is_int(self._length)
            self._num_mutations = self._length * 8
        self._last_value = default_value
Beispiel #2
0
    def __init__(self,
                 key,
                 default_value,
                 length=None,
                 encoder=ENC_STR_DEFAULT,
                 fuzzable=False,
                 name=None):
        '''
        :type key: str
        :param key: key for the data in the session_data dictionary
        :type default_value: str
        :param default_value: default value of the field
        :param length: length of the field in bytes. must be set if fuzzable=True (default: None)
        :type encoder: :class:`~kitty.model.low_level.encoder.StrEncoder`
        :param encoder: encoder for the field (default: ENC_STR_DEFAULT)
        :param fuzzable: is field fuzzable (default: False)
        :param name: name of the object (default: None)

        :examples:

            ::

                Dynamic(key='session id', default_value='\x01\x02\x03\x04')
                Dynamic(key='session id', default_value='\x01\x02\x03\x04', length=4, fuzzable=True)
        '''
        self._key = key
        super(Dynamic, self).__init__(value=default_value,
                                      encoder=encoder,
                                      fuzzable=fuzzable,
                                      name=name)
        self._length = length
        if self._fuzzable:
            kassert.is_int(self._length)
            self._num_mutations = self._length * 8
        self._last_value = default_value
Beispiel #3
0
 def _validate_lengths(self, min_length, max_length):
     kassert.is_int(min_length)
     kassert.is_int(max_length)
     if min_length > max_length:
         raise KittyException('min_length(%d) > max_length(%d)' % (min_length, max_length))
     elif min_length < 0:
         raise KittyException('min_length(%d) < 0' % (min_length))
     elif max_length <= 0:
         raise KittyException('max_length(%d) < 0' % (max_length))
Beispiel #4
0
 def _validate_lengths(self, min_length, max_length):
     kassert.is_int(min_length)
     kassert.is_int(max_length)
     if min_length > max_length:
         raise KittyException('min_length(%d) > max_length(%d)' % (min_length, max_length))
     elif min_length < 0:
         raise KittyException('min_length(%d) < 0' % (min_length))
     elif max_length <= 0:
         raise KittyException('max_length(%d) < 0' % (max_length))
Beispiel #5
0
    def _check_times(self, min_times, max_times, step):
        '''
        Make sure that the arguments are valid

        :raises: KittyException if not valid
        '''
        kassert.is_int(min_times)
        kassert.is_int(max_times)
        kassert.is_int(step)
        if not((min_times >= 0) and (max_times > 0) and (max_times >= min_times) and (step > 0)):
            raise KittyException('one of the checks failed: min_times(%d)>=0, max_times(%d)>0, max_times>=min_times, step > 0' % (min_times, max_times))
Beispiel #6
0
    def _check_times(self, min_times, max_times, step):
        '''
        Make sure that the arguments are valid

        :raises: KittyException if not valid
        '''
        kassert.is_int(min_times)
        kassert.is_int(max_times)
        kassert.is_int(step)
        if not((min_times >= 0) and (max_times > 0) and (max_times >= min_times) and (step > 0)):
            raise KittyException('one of the checks failed: min_times(%d)>=0, max_times(%d)>0, max_times>=min_times, step > 0' % (min_times, max_times))