示例#1
0
 def _validate_pattern(self, forced_pattern, value, field):
     patterns = forced_pattern[1:-1].split('|')
     for pattern in patterns:
         if self._is_match(pattern, value, field._parent):
             return []
     return ["Value of field '%s' does not match pattern '%s!=%s'" %
             (field._get_recursive_name(), to_0xhex(value), forced_pattern)]
示例#2
0
 def _validate_pattern(self, forced_pattern, value, field):
     if self._validate_or(forced_pattern, value, field):
         return []
     if self._validate_masked(forced_pattern, value):
         return []
     return ["Value of field '%s' does not match pattern '%s!=%s'" %
             (field._get_recursive_name(), to_0xhex(value), forced_pattern)]
示例#3
0
 def _validate_pattern(self, forced_pattern, value, field):
     if self._validate_or(forced_pattern, value, field):
         return []
     if self._validate_masked(forced_pattern, value):
         return []
     return [
         "Value of field '%s' does not match pattern '%s!=%s'" %
         (field._get_recursive_name(), to_0xhex(value), forced_pattern)
     ]
示例#4
0
def convert_to_ip(value):
    try:
        return to_0xhex(
            struct.pack('BBBB', *(int(number) for number in value.split("."))))
    except:
        raise Exception("Malformed IP: %s" % value)
示例#5
0
 def _is_match(self, forced_value, value, message):
     forced_binary_val, _ = self._encode_value(
         forced_value, message)  # TODO: Should pass msg
     return int(to_0xhex(forced_binary_val), 16) == int(to_0xhex(value), 16)
示例#6
0
 def _default_presentation_format(self, value):
     return to_0xhex(value)
示例#7
0
 def _apply_mask_to_values(self, forced_pattern, value):
     val = forced_pattern[1:-1].split('&')[0].strip()
     mask = forced_pattern[1:-1].split('&')[1].strip()
     return to_int(val) & to_int(mask), to_int(
         to_0xhex(value)) & to_int(mask)
 def test_to_0xhex(self):
     self.assertEquals(to_0xhex("\x00"), "0x00")
     self.assertEquals(to_0xhex("\xca\xfe\xba\xbe\xf0\x0d\xd0\x0d\xde\xad\xbe\xef"), "0xcafebabef00dd00ddeadbeef")
示例#9
0
 def _is_match(self, forced_value, value, message):
     forced_binary_val, _ = self._encode_value(forced_value, message)   # TODO: Should pass msg
     return int(to_0xhex(forced_binary_val), 16) == int(to_0xhex(value), 16)
示例#10
0
 def _default_presentation_format(self, value):
     return to_0xhex(value)
示例#11
0
 def _apply_mask_to_values(self, forced_pattern, value):
     val = forced_pattern[1:-1].split('&')[0].strip()
     mask = forced_pattern[1:-1].split('&')[1].strip()
     return to_int(val) & to_int(mask), to_int(to_0xhex(value)) & to_int(mask)
示例#12
0
 def test_to_0xhex(self):
     self.assertEquals(to_0xhex('\x00'), '0x00')
     self.assertEquals(
         to_0xhex('\xca\xfe\xba\xbe\xf0\x0d\xd0\x0d\xde\xad\xbe\xef'),
         '0xcafebabef00dd00ddeadbeef')