Beispiel #1
0
    class AuthSOA(pypacker.Packet):
        """
		Auth type SOA.
		Not used atm
		"""
        __hdr__ = (("name", "H", 0), ("type", "H", 0), ("cls", "H", 0),
                   ("ttl", "I", 0), ("dlen", "H", 0),
                   ("name2", None, b"\x03www\x04test\x03com\x00"),
                   ("mailbox", None,
                    b"\x03www\x04test\x03com\x00"), ("pserver", "H", 0),
                   ("mbox", "H", 0), ("serial", "H", 0), ("refresh", "H", 0),
                   ("retry", "H", 0), ("expire", "H", 0), ("minttl", "H", 0))

        name_s = pypacker.get_property_dnsname("name")
        mailbox_s = pypacker.get_property_dnsname("mailbox")

        def _dissect(self, buf):
            # set format
            # find server name by 0-termination
            idx = buf.find(b"\x00", 12)
            # logger.debug(buf[12: idx+1])
            # don't add trailing \0
            self.name = buf[12:idx + 1]
            # logger.debug("name: %s" % buf[idx + 1: -14])
            self.mailbox = buf[idx + 1:-14]
            return len(buf)
Beispiel #2
0
    class Auth(pypacker.Packet):
        """Auth, generic type."""
        __hdr__ = (
            ("name", "H", 0),
            ("type", "H", 0),
            ("cls", "H", 0),
            ("ttl", "I", 0),
            (
                "dlen", "H", 0
            ),  # length of the rest of header: server + x, x becmoes body content
            ("server", None, b"\x03www\x04test\x03com\x00")
            # TODO: add fields for mailbox, serial, refresh etc.
        )

        server_s = pypacker.get_property_dnsname("server")

        def _dissect(self, buf):
            # needed set format
            # find server name by 0-termination
            idx = buf.find(b"\x00", 12)
            if idx == -1:
                idx = len(buf)
            self.server = buf[12:idx + 1]
            # logger.debug("server: %s" % self.server)

            return idx + 1
Beispiel #3
0
    class Auth(pypacker.Packet):
        """Auth, generic type."""
        __hdr__ = (
            ("name", "H", 0),
            ("type", "H", 0),
            ("cls", "H", 0),
            ("ttl", "I", 0),
            (
                "dlen", "H", 0
            ),  # length of the rest of header: server + x, x becmoes body content
            ("server", None, b"\x03www\x04test\x03com\x00"))

        server_s = pypacker.get_property_dnsname(
            "server", cb_mc_bytes=get_bts_for_msg_compression)

        def _dissect(self, buf):
            # Needed set format
            # Find server name by 0-termination
            off_end = buf.find(b"\x00", 12)
            if off_end == -1:
                off_end = len(buf)
            else:
                off_end += 1
            self.server = buf[12:off_end]
            #logger.debug("server: %s" % self.server)

            return off_end
Beispiel #4
0
    class Query(pypacker.Packet):
        """DNS question."""
        __hdr__ = (("name", None, b"\x03www\x04test\x03com\x00"),
                   ("type", "H", DNS_A), ("cls", "H", DNS_IN))

        name_s = pypacker.get_property_dnsname("name")

        def _dissect(self, buf):
            q_end = DNS.get_dns_length(buf)
            self.name = buf[:q_end]
            #logger.debug("val / format: %s %s" % (self._name, self._name_format))
            return len(buf)  # name (including 0) + type + cls
Beispiel #5
0
    class Answer(MessageCompression):
        """DNS resource record."""
        __hdr__ = (
            ("name", None, b"\xc0\x0c"),
            ("type", "H", DNS_A),
            ("cls", "H", DNS_IN),
            ("ttl", "I", 180),
            ("dlen", "H", 4),  # length of the next field
            ("address", None, b"1234")  # eg IPv4
        )

        name_s = pypacker.get_property_dnsname("name")
        address_s = pypacker.get_property_dnsname("address")

        def _dissect(self, buf):
            name_end = DNS.get_dns_length(buf)
            self.name = buf[:name_end]
            # needed set format
            start = name_end + 8
            addr_len = unpack_H(buf[start:start + 2])[0]
            self.address = buf[start + 2:start + 2 + addr_len]
            # logger.debug("address: %s" % self.address)
            return start + 2 + addr_len
Beispiel #6
0
    class Answer(pypacker.Packet):
        """DNS resource record."""
        __hdr__ = (
            ("name", None, b"\xc0\x0c"),
            ("type", "H", DNS_A),
            ("cls", "H", DNS_IN),
            ("ttl", "I", 180),
            ("dlen", "H", 4),  # length of the next field
            ("address", None, b"1234")  # eg IPv4
        )

        name_s = pypacker.get_property_dnsname(
            "name", cb_mc_bytes=get_bts_for_msg_compression)

        def _get_address_readable(self):
            if self.type == DNS_A:
                return pypacker.ip4_bytes_to_str(self.address)
            elif self.type == DNS_AAAA:
                return pypacker.ip6_bytes_to_str(self.address)
            elif self.type == DNS_CNAME:
                return pypacker.dns_name_decode(self.address)
            else:
                # Unknown type
                return ""

        address_s = property(_get_address_readable)

        def _dissect(self, buf):
            name_end = DNS.get_dns_length(buf)
            self.name = buf[:name_end]
            # needed set format
            start = name_end + 8
            addr_len = unpack_H(buf[start:start + 2])[0]
            self.address = buf[start + 2:start + 2 + addr_len]
            #logger.debug("address: %s" % self.address)
            return start + 2 + addr_len