コード例 #1
0
class ISAKMP_payload_ID(ISAKMP_payload):
    name = "ISAKMP Identification"
    fields_desc = [
        _ISAKMP_payload_HDR,
        ByteEnumField("IDtype", 1, ISAKMP_ID_type),
        ByteEnumField("proto", 0, {0: "Unused"}),
        ShortEnumField("port", 0, {0: "Unused"}),
        ConditionalField(IPField("addr4", "127.0.0.1"),
                         lambda pkt: pkt.IDtype in [1, 4, 7]),
        ConditionalField(IPField("addr4sub", "255.255.255.0"),
                         lambda pkt: pkt.IDtype == 4),
        ConditionalField(IPField("addr4end", "127.0.0.1"),
                         lambda pkt: pkt.IDtype == 7),
        ConditionalField(IP6Field("addr6", "::1"),
                         lambda pkt: pkt.IDtype in [5, 6, 8]),
        ConditionalField(IP6Field("addr6sub", "ffff:ffff:ffff:ffff::"),
                         lambda pkt: pkt.IDtype == 6),
        ConditionalField(IP6Field("addr6end", "::1"),
                         lambda pkt: pkt.IDtype == 8),
        ConditionalField(
            StrLenField("domain", "", length_from=lambda x: x.length - 8),
            lambda pkt: pkt.IDtype in [2, 3]),
        ConditionalField(
            StrLenField("load", "", length_from=lambda x: x.length - 8),
            lambda pkt: pkt.IDtype in [9, 10, 11] or pkt.IDtype > 12),
        #ConditionalField(PacketListField("IDlist",... # self-reference, can't define here
    ]
コード例 #2
0
ファイル: ieee1905_tlv.py プロジェクト: evanslai/pyieee1905
class IPv6Entry(Packet):
    name = "IPv6 Entry"
    fields_desc = [
        XByteField("type", None),
        IP6Field("iface_addr", "::"),
        IP6Field("addr_origin", "::")
    ]

    def extract_padding(self, s):
        return "", s
コード例 #3
0
class FlowTableEntryMatchSetLyr24(Packet):
    fields_desc = [
        MACField('smac', '00:00:00:00:00:00'),
        ShortField('ethertype', 0),
        MACField('dmac', '00:00:00:00:00:00'),
        BitField('first_prio', 0, 3),
        BitField('first_cfi', 0, 1),
        BitField('first_vid', 0, 12),
        ByteField('ip_protocol', 0),
        BitField('ip_dscp', 0, 6),
        BitField('ip_ecn', 0, 2),
        BitField('cvlan_tag', 0, 1),
        BitField('svlan_tag', 0, 1),
        BitField('frag', 0, 1),
        BitField('ip_version', 0, 4),
        BitField('tcp_flags', 0, 9),
        ShortField('tcp_sport', 0),
        ShortField('tcp_dport', 0),
        BitField('reserved1', 0, 16),
        BitField('ipv4_ihl', 0, 4),
        BitField('l3_ok', 0, 1),
        BitField('l4_ok', 0, 1),
        BitField('ipv4_checksum_ok', 0, 1),
        BitField('l4_checksum_ok', 0, 1),
        ByteField('ip_ttl_hoplimit', 0),
        ShortField('udp_sport', 0),
        ShortField('udp_dport', 0),
        # Ipv4 and IPv6 fields are edited manually:
        # Added lambda conditioning
        # Field names must be different
        ConditionalField(
            BitField('src_ip_mask', 0, 128),
            lambda pkt: pkt.ip_version != 4 and pkt.ip_version != 6),
        ConditionalField(BitField('reserved', 0, 96),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IPField("src_ip4", "0.0.0.0"),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IP6Field("src_ip6", "::"),
                         lambda pkt: pkt.ip_version == 6),
        ConditionalField(
            BitField('dst_ip_mask', 0, 128),
            lambda pkt: pkt.ip_version != 4 and pkt.ip_version != 6),
        ConditionalField(BitField('reserved', 0, 96),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IPField("dst_ip4", "0.0.0.0"),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IP6Field("dst_ip6", "::"),
                         lambda pkt: pkt.ip_version == 6),
    ]
コード例 #4
0
ファイル: someip.py プロジェクト: 747767263/IGMPv3
class SDOption_IP6_SD_EndPoint(_SDPacketBase):
    name = "IP6 SDEndPoint Option"
    fields_desc = _MAKE_COMMON_SDOPTION_FIELDS_DESC(
        SDOPTION_IP6_SDENDPOINT_TYPE, SDOPTION_IP6_SDENDPOINT_LEN)
    fields_desc += [
        IP6Field("addr", "::"),
    ] + _MAKE_COMMON_IP_SDOPTION_FIELDS_DESC()
コード例 #5
0
ファイル: someip.py プロジェクト: 747767263/IGMPv3
class SDOption_IP6_Multicast(_SDPacketBase):
    name = "IP6 Multicast Option"
    fields_desc = _MAKE_COMMON_SDOPTION_FIELDS_DESC(SDOPTION_IP6_MCAST_TYPE,
                                                    SDOPTION_IP6_MCAST_LEN)
    fields_desc += [
        IP6Field("addr", "::"),
    ] + _MAKE_COMMON_IP_SDOPTION_FIELDS_DESC()
コード例 #6
0
class LLDPManagementAddress(LLDPGeneric):
    name = "LLDP Management Address"
    fields_desc = [
        BitField("type", 8, 7),
        BitField("length", None, 9),
        ByteField("addrlen", None),
        ByteEnumField("addrsubtype", 1, _LLDPManagementAddress_Subtype),
        ConditionalField(IPField("ipaddr", "192.168.0.1"),
                         lambda pkt: pkt.addrsubtype == 1),
        ConditionalField(IP6Field("ip6addr", "2001:db8::1"),
                         lambda pkt: pkt.addrsubtype == 2),
        ConditionalField(MACField("macaddr", "00:11:22:33:44:55"),
                         lambda pkt: pkt.addrsubtype == 6),
        ConditionalField(
            StrLenField("addrval", "", length_from=lambda x: x.addrlen - 1),
            lambda pkt: pkt.addrsubtype not in [1, 2, 6]),
        ByteEnumField("ifsubtype", 2, _LLDPManagementAddress_IfSubtype),
        IntField("ifnumber", 0),
        FieldLenField("oidlen", None, length_of="oid", fmt="B"),
        StrLenField("oid", "", length_from=lambda x: x.oidlen)
    ]

    def post_build(self, p, pay):
        # TODO Remove redundant code. LLDPGeneric.post_build()
        if self.length is None:
            l = len(p) - 2
            p = chr((self.type << 1) ^ (l >> 8)) + chr(l & 0xff) + p[2:]

        if self.addrlen is None:
            addrlen = len(p) - 2 - 8 - len(self.oid) + 1
            p = p[:2] + struct.pack("B", addrlen) + p[3:]

        return p + pay
コード例 #7
0
class SAPMSProperty(PacketNoPadded):
    """SAP Message Server Property packet.

    Packet containing information about properties.
    """
    name = "SAP Message Server Property"
    fields_desc = [
        StrNullFixedLenField("client", None, 39),
        IntEnumField("id", 0x00, ms_property_id_values),

        # MS_PROPERTY_VHOST
        ConditionalField(ShortEnumKeysField("logon", 0, ms_logon_type_values), lambda pkt:pkt.id in [0x02]),

        # MS_PROPERTY_IPADR
        ConditionalField(IPField("address", "0.0.0.0"), lambda pkt:pkt.id in [0x03]),
        ConditionalField(IP6Field("address6", "::"), lambda pkt:pkt.id in [0x03]),

        # MS_PROPERTY_PARAM
        ConditionalField(StrNullField("param", ""), lambda pkt:pkt.id in [0x04]),
        ConditionalField(StrNullField("value", ""), lambda pkt:pkt.id in [0x04]),

        # MS_PROPERTY_SERVICE
        ConditionalField(ShortField("service", 0), lambda pkt:pkt.id in [0x05]),

        # Release Information fields
        ConditionalField(StrNullFixedLenField("release", "720", length=9), lambda pkt:pkt.id in [0x07]),
        ConditionalField(IntField("patchno", 0), lambda pkt:pkt.id in [0x07]),
        ConditionalField(IntField("supplvl", 0), lambda pkt:pkt.id in [0x07]),
        ConditionalField(IntField("platform", 0), lambda pkt:pkt.id in [0x07]),
    ]
コード例 #8
0
class SCTPChunkParamIPv6Addr(Packet):
    name = "SCTP Chunk Parameter: IPv6 Address"
    fields_desc = [
        ShortEnumField("type", 6, sctpchunkparamtypes),
        ShortField("len", 20),
        IP6Field("addr", "::1"),
    ]
コード例 #9
0
class SAPRFC(Packet):
    """SAP Remote Function Call packet

    This packet is used for the Remote Function Call (RFC) protocol.
    """
    name = "SAP Remote Function Call"
    fields_desc = [
        ByteField("version", 3),  # If the version is 3, the packet has a size > 88h, versions 1 and 2 are 40h
        ByteEnumKeysField("req_type", 0, rfc_req_type_values),

        # Normal client fields (GW_NORMAL_CLIENT)
        ConditionalField(IPField("address", "0.0.0.0"), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(IntField("padd1", 0), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenPaddedField("service", "", length=10), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenField("codepage", "1100", length=4), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenField("padd2", "\x00" * 6, length=6), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenPaddedField("lu", "", length=8), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenPaddedField("tp", "", length=8), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(StrFixedLenPaddedField("conversation_id", "", length=8), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(ByteField("appc_header_version", 6), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(ByteField("accept_info", 0xcb), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(SignedShortField("idx", -1), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(IP6Field("address6", "::"), lambda pkt:pkt.req_type == 0x03 and pkt.version == 3),

        ConditionalField(IntField("rc", 0), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(ByteField("echo_data", 0), lambda pkt:pkt.req_type == 0x03),
        ConditionalField(ByteField("filler", 0), lambda pkt:pkt.req_type == 0x03),

        # Monitor Command fields (GW_SEND_CMD)
        ConditionalField(ByteEnumKeysField("cmd", 0, rfc_monitor_cmd_values), lambda pkt:pkt.req_type == 0x09),
    ]
コード例 #10
0
class SAPMSLogon(PacketNoPadded):
    """SAP Message Server Logon packet.

    Packet containing logon data.
    """
    name = "SAP Message Server Logon"
    fields_desc = [
        ShortEnumKeysField("type", 0, ms_logon_type_values),
        ShortField("port", 0),
        IPField("address", "0.0.0.0"),
        FieldLenField("logonname_length",
                      None,
                      length_of="logonname",
                      fmt="!H"),  # <= 80h bytes
        StrLenField("logonname",
                    "",
                    length_from=lambda pkt: pkt.logonname_length),
        FieldLenField("prot_length", None, length_of="prot",
                      fmt="!H"),  # <= 80h bytes
        StrLenField("prot", "", length_from=lambda pkt: pkt.prot_length),
        FieldLenField("host_length", None, length_of="host",
                      fmt="!H"),  # <= 100h bytes
        StrLenField("host", "", length_from=lambda pkt: pkt.host_length),
        FieldLenField("misc_length", None, length_of="misc",
                      fmt="!H"),  # <= 100h bytes
        StrLenField("misc", "", length_from=lambda pkt: pkt.misc_length),
        FieldLenField("address6_length", 16, length_of="address6",
                      fmt="!H"),  # == 16 bytes
        IP6Field("address6", "::"),
    ]
コード例 #11
0
class SAPMSJ2EECluster(Packet):
    """SAP Message Server J2EE Cluster packet

    This packet is used for the Message Server protocol for J2EE cluster nodes.
    """
    name = "SAP Message Server J2EE Cluster"
    cluster_no = 68199
    node_no = 5
    cluster_no_id = cluster_no + 100 + 50 + node_no
    icm_port = 5020

    fields_desc = [
        IntField("cluster_id", cluster_no_id),
        IntField("group_id", cluster_no),
        IntField("join_port", icm_port),
        StrFixedLenField("name", "J2EE{}".format(cluster_no_id), 32),
        StrFixedLenField("host", "localhost", 32),
        IPField("hostaddrv4", "127.0.0.1"),
        ByteField("type", 0x02),
        ByteField("state", 0x00),
        StrFixedLenField("service_mask", 32 * "\xff", 32),
        ByteField("version", 0x02),
        ByteField("modifiers", 0x02),
        StrFixedLenField("reserved", 4 * "\x00", 4),
        IP6Field("hostaddrv6", "::1")
    ]
コード例 #12
0
class ISIS_IPv6NeighborAddressSubTlv(ISIS_GenericSubTlv):
    name = "ISIS IPv6 Neighbor Address (S)"
    fields_desc = [
        ByteEnumField("type", 13, _isis_subtlv_names_1),
        FieldLenField("len", None, length_of="address", fmt="B"),
        IP6Field("address", "::")
    ]
コード例 #13
0
ファイル: dns.py プロジェクト: polybassa/scapy-1
class DNSRR(InheritOriginDNSStrPacket):
    name = "DNS Resource Record"
    show_indent = 0
    fields_desc = [DNSStrField("rrname", ""),
                   ShortEnumField("type", 1, dnstypes),
                   ShortEnumField("rclass", 1, dnsclasses),
                   IntField("ttl", 0),
                   FieldLenField("rdlen", None, length_of="rdata", fmt="H"),
                   MultipleTypeField(
                       [
                           # A
                           (IPField("rdata", "0.0.0.0"),
                               lambda pkt: pkt.type == 1),
                           # AAAA
                           (IP6Field("rdata", "::"),
                               lambda pkt: pkt.type == 28),
                           # NS, MD, MF, CNAME, PTR
                           (DNSStrField("rdata", "",
                                        length_from=lambda pkt: pkt.rdlen),
                               lambda pkt: pkt.type in [2, 3, 4, 5, 12]),
                           # TEXT
                           (DNSTextField("rdata", [],
                                         length_from=lambda pkt: pkt.rdlen),
                               lambda pkt: pkt.type == 16),
                       ],
                       StrLenField("rdata", "",
                                   length_from=lambda pkt:pkt.rdlen)
    )]
コード例 #14
0
class IPFIXHandler(object):
    """Class for handling IPFIX packets. To use, create instance of class before
     dissecting IPFIX packets with scapy, then run update_template every time
     an IPFIX template packet is received."""

    template_elements = {
        4: ByteField("Protocol_ID", 0x00),
        7: ShortField("src_port", 0),
        8: IPField("IPv4_src", ""),
        11: ShortField("dst_port", 0),
        12: IPField("IPv4_dst", ""),
        27: IP6Field("IPv6_src", "::"),
        28: IP6Field("IPv6_dst", "::"),
        86: LongField("packetTotalCount", 0),
        180: ShortField("udp_src_port", 0),
        181: ShortField("udp_dst_port", 0),
        182: ShortField("tcp_src_port", 0),
        183: ShortField("tcp_dst_port", 0),
        193: ByteField("Next_header", 0x00)
    }

    def __init__(self):
        """Initializer, registers IPFIX header and template layers with scapy.
        """
        bind_layers(UDP, IPFIXHeader, dport=4739)
        bind_layers(IPFIXHeader, IPFIXTemplate, Set_ID=2)

    def update_template(self, packet):
        """Updates IPFIXData class with new data template. Registers IPFIX data
        layer with scapy using the new template.

        :param packet: Packet containing an IPFIX template.
        :type packet: scapy.Ether
        """
        template_list = packet['IPFIX template'].Template
        template_id = packet['IPFIX template'].Template_ID

        IPFIXData.fields_desc = []
        for item in template_list[::2]:
            try:
                IPFIXData.fields_desc.append(self.template_elements[item])
            except KeyError:
                raise KeyError(
                    "Unknown IPFIX template element with ID {0}".format(item))
        bind_layers(IPFIXHeader, IPFIXData, Set_ID=template_id)
        # if the packet doesn't end here, assume it contains more data sets
        bind_layers(IPFIXData, IPFIXData)
コード例 #15
0
ファイル: scapy_pcp.py プロジェクト: skyformat99/pcp
class PCPOptionFilter(PacketNoPayload):
    name = "PCP Filter Option"
    fields_desc = [
        StrFixedLenField("reserved", "\x00" * 1, 1),
        ByteField("prefix_len", 0),
        ShortField("peer_port", 1234),
        IP6Field("peer_ip", "::ffff:127.0.0.1")
    ]
コード例 #16
0
ファイル: scapy_pcp.py プロジェクト: skyformat99/pcp
class PCPPeer(Packet):
    name = "PCP Peer"
    fields_desc = [
        StrFixedLenField("nonce", os.urandom(12), 12),
        ByteEnumField("protocol", ProtocolNumbers.TCP, PROTOCOL_NUMBERS),
        StrFixedLenField("reserved1", "\x00" * 3, 3),
        Emph(ShortField("int_port", 1234)),
        Emph(ShortField("ext_port", 5678)),
        Emph(IP6Field("ext_ip", "::ffff:127.0.0.1")),
        Emph(ShortField("peer_port", 9101)),
        StrFixedLenField("reserved2", "\x00" * 2, 2),
        Emph(IP6Field("peer_ip", "::ffff:127.0.0.1")),
        PacketListField("options", None, PCPOption)
    ]

    def answers(self, other):
        return self.nonce == other.nonce
コード例 #17
0
class IE_CharginGatewayAddress(IE_Base):
    name = "Chargin Gateway Address"
    fields_desc = [ByteEnumField("ietype", 251, IEType),
                   ShortField("length", 4),
                   ConditionalField(IPField("ipv4_address", "127.0.0.1"),
                                    lambda
                                    pkt: pkt.length == 4),
                   ConditionalField(IP6Field("ipv6_address", "::1"), lambda
                                    pkt: pkt.length == 16)]
コード例 #18
0
ファイル: scapy_pcp.py プロジェクト: skyformat99/pcp
class PCPRequest(Packet):
    name = "PCP Request"
    fields_desc = [
        ByteEnumField("version", PCPVersions.V2, PCP_VERSIONS),
        BitEnumField("R", PCPMessages.REQUEST, 1, PCP_MESSAGES),
        BitEnumField("opcode", PCPOpcodes.MAP, 7, PCP_OPCODES),
        StrFixedLenField("reserved", "\x00" * 2, 2),
        IntField("lifetime", 0x400),
        Emph(IP6Field("source_ip", "::ffff:127.0.0.1"))
    ]
コード例 #19
0
class CDPAddrRecordIPv6(CDPAddrRecord):
    name = "CDP Address IPv6"
    fields_desc = [
        ByteEnumField("ptype", 0x02, _CDP_addr_record_ptype),
        FieldLenField("plen", 8, "proto", "B"),
        StrLenField("proto",
                    _CDP_addrrecord_proto_ipv6,
                    length_from=lambda x: x.plen),
        ShortField("addrlen", 16),
        IP6Field("addr", "fe80::1")
    ]
コード例 #20
0
class ICMPExtensionInterfaceInformation(ICMPExtensionObject):
    name = 'ICMP Extension Object - Interface Information Object (RFC5837)'

    fields_desc = [
        ShortField('len', None),
        ByteField('classnum', 2),
        BitField('interface_role', 0, 2),
        BitField('reserved', 0, 2),
        BitField('has_ifindex', 0, 1),
        BitField('has_ipaddr', 0, 1),
        BitField('has_ifname', 0, 1),
        BitField('has_mtu', 0, 1),
        ConditionalField(IntField('ifindex', None),
                         lambda pkt: pkt.has_ifindex == 1),
        ConditionalField(ShortField('afi', None),
                         lambda pkt: pkt.has_ipaddr == 1),
        ConditionalField(ShortField('reserved2', 0),
                         lambda pkt: pkt.has_ipaddr == 1),
        ConditionalField(IPField('ip4', None), lambda pkt: pkt.afi == 1),
        ConditionalField(IP6Field('ip6', None), lambda pkt: pkt.afi == 2),
        ConditionalField(
            FieldLenField('ifname_len', None, fmt='B', length_of='ifname'),
            lambda pkt: pkt.has_ifname == 1),
        ConditionalField(
            StrLenField('ifname', None,
                        length_from=lambda pkt: pkt.ifname_len),
            lambda pkt: pkt.has_ifname == 1),
        ConditionalField(IntField('mtu', None), lambda pkt: pkt.has_mtu == 1)
    ]

    def self_build(self, field_pos_list=None):
        if self.afi is None:
            if self.ip4 is not None:
                self.afi = 1
            elif self.ip6 is not None:
                self.afi = 2

        if self.has_ifindex and self.ifindex is None:
            warning('has_ifindex set but ifindex is not set.')
        if self.has_ipaddr and self.afi is None:
            warning('has_ipaddr set but afi is not set.')
        if self.has_ipaddr and self.ip4 is None and self.ip6 is None:
            warning('has_ipaddr set but ip4 or ip6 is not set.')
        if self.has_ifname and self.ifname is None:
            warning('has_ifname set but ifname is not set.')
        if self.has_mtu and self.mtu is None:
            warning('has_mtu set but mtu is not set.')

        return ICMPExtensionObject.self_build(self,
                                              field_pos_list=field_pos_list)
コード例 #21
0
class SCTPChunkParamSetPrimaryAddr(_SCTPChunkParam, Packet):
    fields_desc = [ ShortEnumField("type", 0xc004, sctpchunkparamtypes),
                    FieldLenField("len", None, length_of="addr",
                                  adjust = lambda pkt,x:x+12),
                    XIntField("correlation_id", None),
                    ShortEnumField("addr_type", 5, sctpchunkparamtypes),
                    FieldLenField("addr_len", None, length_of="addr",
                                  adjust = lambda pkt,x:x+4),
                    ConditionalField(
                        IPField("addr", "127.0.0.1"),
                        lambda p: p.addr_type == 5),
                    ConditionalField(
                        IP6Field("addr", "::1"),
                        lambda p: p.addr_type == 6),]
コード例 #22
0
class OSPFv3_Link_LSA(_OSPF_BaseLSA):
    name = "OSPFv3 Link LSA"
    type = 0x0008
    fields_desc = [
        OSPFv3_LSA_Hdr,
        ByteField("prio", 1),
        FlagsField("options", 0, 24, _OSPFv3_options),
        IP6Field("lladdr", "fe80::"),
        IntField("prefixes", 0),
        PacketListField("prefixlist",
                        None,
                        OSPFv3_Prefix_Item,
                        count_from=lambda pkt: pkt.prefixes)
    ]
コード例 #23
0
class IE_GSNAddress(IE_Base):
    name = "GSN Address"
    fields_desc = [ByteEnumField("ietype", 133, IEType),
                   ShortField("length", None),
                   ConditionalField(IPField("ipv4_address", RandIP()),
                                    lambda pkt: pkt.length == 4),
                   ConditionalField(IP6Field("ipv6_address", '::1'),
                                    lambda pkt: pkt.length == 16)]

    def post_build(self, p, pay):
        if self.length is None:
            tmp_len = len(p) - 3
            p = p[:2] + struct.pack("!B", tmp_len) + p[3:]
        return p
コード例 #24
0
class ISAKMP_payload_NAT_OA(ISAKMP_payload):
    name = "ISAKMP NAT Original Address"
    fields_desc = [
        _ISAKMP_payload_HDR,
        ByteEnumField("IDtype", 1, ISAKMP_ID_type),
        ByteField("res2", 0),
        ShortField("res3", 0),
        ConditionalField(IPField("addr4", "127.0.0.1"),
                         lambda pkt: pkt.IDtype == 1),
        ConditionalField(IP6Field("addr6", "::1"),
                         lambda pkt: pkt.IDtype == 5),
        ConditionalField(
            StrLenField("load", "", length_from=lambda x: x.length - 8),
            lambda pkt: pkt.IDtype not in [1, 5]),
    ]
コード例 #25
0
class EIGRPv6IntRoute(EIGRPGeneric):
    name = "EIGRP for IPv6 Internal Route"
    fields_desc = [
        XShortEnumField("type", 0x0402, _EIGRP_tlv_types),
        FieldLenField("len", None, "dst", "!H", adjust=lambda pkt, x: x + 37),
        IP6Field("nexthop", "::"),
        IntField("delay", 128000),
        IntField("bandwidth", 256000),
        ThreeBytesField("mtu", 1500),
        ByteField("hopcount", 1),
        ByteField("reliability", 255),
        ByteField("load", 0),
        XShortField("reserved", 0),
        ByteField("prefixlen", 16),
        _EIGRP_IP6Field("dst", "2001::", length_from=lambda pkt: pkt.prefixlen)
    ]
コード例 #26
0
ファイル: ieee1905_tlv.py プロジェクト: evanslai/pyieee1905
class IPv6IfaceEntry(Packet):
    name = "Interface Entry"
    fields_desc = [
        MACField("iface_mac", None),
        IP6Field("lladdr", "::"),
        FieldLenField("ipv6_entry_cnt",
                      None,
                      fmt='B',
                      count_of="ipv6_entry_list"),
        PacketListField("ipv6_entry_list",
                        None,
                        IPv6Entry,
                        count_from=lambda p: p.ipv6_entry_cnt)
    ]

    def extract_padding(self, s):
        return "", s
コード例 #27
0
class OSPFv3_AS_External_LSA(_OSPF_BaseLSA):
    name = "OSPFv3 AS External LSA"
    type = 0x4005
    fields_desc = [
        OSPFv3_LSA_Hdr,
        FlagsField("flags", 0, 8, ["T", "F", "E"]),
        XThreeBytesField("metric", 20),
        ByteField("prefixlen", 64),
        FlagsField("prefixoptions", 0, 8, _OSPFv3_prefix_options),
        ShortEnumField("reflstype", 0, _OSPFv3_LStypes),
        OspfIP6Field("prefix",
                     "2001:db8:0:42::",
                     length_from=lambda pkt: pkt.prefixlen),
        ConditionalField(IP6Field("fwaddr", "::"),
                         lambda pkt: pkt.flags & 0x02),
        ConditionalField(IntField("tag", 0), lambda pkt: pkt.flags & 0x01),
        ConditionalField(IPField("reflsid", 0), lambda pkt: pkt.reflstype != 0)
    ]
コード例 #28
0
class EIGRPSeq(EIGRPGeneric):
    name = "EIGRP Sequence"
    fields_desc = [
        XShortEnumField("type", 0x0003, _EIGRP_tlv_types),
        ShortField("len", None),
        ByteField("addrlen", 4),
        ConditionalField(IPField("ipaddr", "192.168.0.1"),
                         lambda pkt: pkt.addrlen == 4),
        ConditionalField(IP6Field("ip6addr", "fe80::1"),
                         lambda pkt: pkt.addrlen == 16)
    ]

    def post_build(self, p, pay):
        if self.len is None:
            l = len(p)
            p = p[:2] + chr((l >> 8) & 0xff) + chr(l & 0xff) + p[4:]

        return p + pay
コード例 #29
0
ファイル: sctp.py プロジェクト: elizabeth16b/SnortCap
class SCTPChunkParamAddIPAddr(_SCTPChunkParam, Packet):
    fields_desc = [
        ShortEnumField("type", 0xc001, sctpchunkparamtypes),
        FieldLenField("len",
                      None,
                      length_of="addr",
                      adjust=lambda pkt, x: x + 12),
        XIntField("correlation_id", None),
        ShortEnumField("addr_type", 5, sctpchunkparamtypes),
        FieldLenField("addr_len",
                      None,
                      length_of="addr",
                      adjust=lambda pkt, x: x + 4),
        MultipleTypeField([
            (IPField("addr", "127.0.0.1"), lambda p: p.addr_type == 5),
            (IP6Field("addr", "::1"), lambda p: p.addr_type == 6),
        ], StrFixedLenField("addr", "", length_from=lambda pkt: pkt.addr_len))
    ]
コード例 #30
0
ファイル: SAPMS.py プロジェクト: ammasajan/pysap
class SAPMSClient3(Packet):
    """SAP Message Server Client packet version 3

    Packet that contains information about a client of the Message Server
    service. This packet is for version 3.
    """
    name = "SAP Message Server Client version 3"
    fields_desc = [
        StrFixedLenField("client", None, 40),
        StrFixedLenField("host", None, 64),
        StrFixedLenField("service", None, 20),
        FlagsField("msgtype", 0, 8, ["ICM", "ATP", "UP2", "SPO", "BTC", "ENQ", "UPD", "DIA"]),
        IP6Field("hostaddrv6", "::1"),
        IPField("hostaddrv4", "0.0.0.0"),
        ShortField("servno", 0x00),
        ByteEnumKeysField("status", 0x00, ms_client_status_values),
        ByteField("nitrace", 0x00),
        ByteField("padd", 0),
    ]