예제 #1
0
파일: packet.py 프로젝트: shakefu/dnstk
    def parse(cls, payload, offset):
        name, offset = parse_name(payload, offset)
        resource = unpack('>H', payload[offset:offset + 2])[0]
        offset += 2
        c = unpack('>H', payload[offset:offset + 2])[0]
        offset += 2

        return cls(name, resource=Resource.find(value=resource), cls=find_class(c)), offset
예제 #2
0
파일: resources.py 프로젝트: shakefu/dnstk
    def parse(cls, payload, offset, length):
        mname, offset = parse_name(payload, offset)
        rname, offset = parse_name(payload, offset)

        serial = unpack('>I', payload[offset:offset + 4])[0]
        offset += 4

        refresh = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        retry = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        expire = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        minimum = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        return cls(mname, rname, serial, refresh, retry, expire, minimum)
예제 #3
0
    def parse(cls, payload, offset, length):
        mname, offset = parse_name(payload, offset)
        rname, offset = parse_name(payload, offset)

        serial = unpack('>I', payload[offset:offset + 4])[0]
        offset += 4

        refresh = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        retry = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        expire = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        minimum = unpack('>i', payload[offset:offset + 4])[0]
        offset += 4

        return cls(mname, rname, serial, refresh, retry, expire, minimum)
예제 #4
0
파일: resources.py 프로젝트: shakefu/dnstk
 def parse(cls, payload, offset, length):
     ns = parse_name(payload, offset)[0]
     return cls(ns)
예제 #5
0
파일: resources.py 프로젝트: shakefu/dnstk
 def parse(cls, payload, offset, length):
     preference = unpack('>H', payload[offset:offset + 2])[0]
     offset += 2
     name = parse_name(payload, offset)[0]
     return cls(name, preference)
예제 #6
0
 def test_recursion(self):
     payload = b'\x05apple\x03com\x00\ndevelopers' + pack('>H', (0xc000 | 0))
     self.assertEqual(parse_name(payload, 11)[0], 'developers.apple.com')
예제 #7
0
 def test_empty(self):
     self.assertEqual(pack_name(''), b'\x00')
     self.assertEqual(parse_name(b'\x00', 0)[0], '')
예제 #8
0
 def parse(cls, payload, offset, length):
     ns = parse_name(payload, offset)[0]
     return cls(ns)
예제 #9
0
 def parse(cls, payload, offset, length):
     preference = unpack('>H', payload[offset:offset + 2])[0]
     offset += 2
     name = parse_name(payload, offset)[0]
     return cls(name, preference)
예제 #10
0
파일: test_names.py 프로젝트: shakefu/dnstk
 def test_recursion(self):
     payload = b'\x05apple\x03com\x00\ndevelopers' + pack(
         '>H', (0xc000 | 0))
     self.assertEqual(parse_name(payload, 11)[0], 'developers.apple.com')
예제 #11
0
파일: test_names.py 프로젝트: shakefu/dnstk
 def test_empty(self):
     self.assertEqual(pack_name(''), b'\x00')
     self.assertEqual(parse_name(b'\x00', 0)[0], '')