Esempio n. 1
0
class SAPHDBOptionPartRow(PacketNoPadded):
    """SAP HANA SQL Command Network Protocol Option Part Row

    This packet represents a row in an Option Part.

    Each row is comprised of a key, type and value.
    """
    part_kind = None
    option_keys = None
    name = "SAP HANA SQL Command Network Protocol Option Part Row"
    fields_desc = [
        MultiEnumField("key", 0, hdb_option_part_key_vals, depends_on=lambda x: x.part_kind, fmt="<b"),
        EnumField("type", 0, hdb_data_type_vals, fmt="<b"),
        ConditionalField(FieldLenField("length", None, length_of="value", fmt="<h"), lambda x: x.type in [29, 30, 33]),
        MultipleTypeField(
            [
                (LESignedByteField("value", 0), lambda x: x.type == 1),
                (LESignedShortField("value", 0), lambda x: x.type == 2),
                (LESignedIntField("value", 0), lambda x: x.type == 3),
                (LESignedLongField("value", 0), lambda x: x.type == 4),
                (Field("value", 0, fmt="<d"), lambda x: x.type == 7),
                (YesNoByteField("value", 0), lambda x: x.type == 28),
                (StrFixedLenField("value", None, length_from=lambda x: x.length), lambda x: x.type in [29, 30, 33]),
            ],
            StrField("value", ""),
        ),
    ]
Esempio n. 2
0
class TZSPTagContentionFree(_TZSPTag):
    """
    packet received in contention free period
    """
    NO = 0x00
    YES = 0x01

    fields_desc = [
        ByteEnumField('type', _TZSPTag.TAG_TYPE_CONTENTION_FREE,
                      _TZSPTag.TAG_TYPES),  # noqa: E501
        ByteField('len', 1),
        YesNoByteField('contention_free', NO)
    ]
Esempio n. 3
0
class TZSPTagDecrypted(_TZSPTag):
    """
    packet was decrypted
    """
    YES = 0x00
    NO = 0x01

    fields_desc = [
        ByteEnumField('type', _TZSPTag.TAG_TYPE_DECRYPTED, _TZSPTag.TAG_TYPES),
        ByteField('len', 1),
        YesNoByteField('decrypted', NO, config={
            'yes': YES,
            'no': (NO, 0xff)
        })
    ]
Esempio n. 4
0
class TZSPTagError(_TZSPTag):
    """
    frame checksum error
    """
    NO = 0x00
    YES = 0x01

    fields_desc = [
        ByteEnumField('type', _TZSPTag.TAG_TYPE_FCS_ERROR, _TZSPTag.TAG_TYPES),
        ByteField('len', 1),
        YesNoByteField('fcs_error',
                       NO,
                       config={
                           'no': NO,
                           'yes': YES,
                           'reserved': (YES + 1, 0xff)
                       })  # noqa: E501
    ]
Esempio n. 5
0
class PFLog(Packet):
    """
    Class for handling PFLog headers
    """
    name = "PFLog"
    # from OpenBSD src/sys/net/pfvar.h
    # and src/sys/net/if_pflog.h (struct pfloghdr)
    fields_desc = [
        ByteField("hdrlen", PFLOG_HDRLEN),
        ByteEnumField("addrfamily", 2, {
            OPENBSD_AF_INET: "IPv4",
            OPENBSD_AF_INET6: "IPv6"
        }),
        ByteEnumField(
            "action", 1, {
                0: "pass",
                1: "drop",
                2: "scrub",
                3: "no-scrub",
                4: "nat",
                5: "no-nat",
                6: "binat",
                7: "no-binat",
                8: "rdr",
                9: "no-rdr",
                10: "syn-proxy-drop"
            }),
        ByteEnumField(
            "reason", 0, {
                0: "match",
                1: "bad-offset",
                2: "fragment",
                3: "short",
                4: "normalize",
                5: "memory",
                6: "bad-timestamp",
                7: "congestion",
                8: "ip-options",
                9: "proto-cksum",
                10: "state-mismatch",
                11: "state-insert",
                12: "state-limit",
                13: "src-limit",
                14: "syn-proxy"
            }),
        StrFixedLenField("iface", "", 16),
        StrFixedLenField("ruleset", "", 16),
        SignedIntField("rulenumber", 0),
        SignedIntField("subrulenumber", 0),
        SignedIntField("uid", 0),
        IntField("pid", 0),
        SignedIntField("ruleuid", 0),
        IntField("rulepid", 0),
        ByteEnumField("direction", 255, {
            0: "inout",
            1: "in",
            2: "out",
            255: "unknown"
        }),
        YesNoByteField("rewritten", 0),
        ByteEnumField("naddrfamily", 2, {
            OPENBSD_AF_INET: "IPv4",
            OPENBSD_AF_INET6: "IPv6"
        }),
        StrFixedLenField("pad", b"\x00", 1),
        MultipleTypeField(
            [
                (PadField(IPField("saddr", "127.0.0.1"), 16, padwith=b"\x00"),
                 lambda pkt: pkt.addrfamily == OPENBSD_AF_INET),
                (IP6Field("saddr", "::1"),
                 lambda pkt: pkt.addrfamily == OPENBSD_AF_INET6),
            ],
            PadField(IPField("saddr", "127.0.0.1"), 16, padwith=b"\x00"),
        ),
        MultipleTypeField(
            [
                (PadField(IPField("daddr", "127.0.0.1"), 16, padwith=b"\x00"),
                 lambda pkt: pkt.addrfamily == OPENBSD_AF_INET),
                (IP6Field("daddr", "::1"),
                 lambda pkt: pkt.addrfamily == OPENBSD_AF_INET6),
            ],
            PadField(IPField("daddr", "127.0.0.1"), 16, padwith=b"\x00"),
        ),
        ShortField("sport", 0),
        ShortField("dport", 0),
    ]

    def mysummary(self):
        return self.sprintf(
            "%PFLog.addrfamily% %PFLog.action% on %PFLog.iface% by rule %PFLog.rulenumber%"
        )  # noqa: E501