コード例 #1
0
class TailHeader(Packet):
    name = 'Tail Header'
    fields_desc = [
        ByteField('next_proto', 0),
        ShortField('dest_port', 0),
        ByteField('dscp', 0),
    ]
コード例 #2
0
class ShimHeader(Packet):
    name = 'Shim Header'
    fields_desc = [
        ByteField('int_type', 0),
        ByteField('rsvd1', 0),
        ByteField('len', 0),
        ByteField('rsvd2', 0),
    ]
コード例 #3
0
ファイル: kv.py プロジェクト: Wasdns/NetChain
class NetChain(Packet):
    name = "KeyValue"
    fields_desc = [
        LongField("preamble", 2),
        ByteField("mtype", 0),
        ByteField("dest", 0),
        IntField("key", 0),
        IntField("value", 0),
    ]
コード例 #4
0
class CoLoR_Data(Packet):
    name = 'CoLoR_Data'
    fields_desc = [
        BitField("Version", 7, 4, tot_size=1),
        BitField("Package", 3, 4, end_tot_size=1),
        ByteField("TTL", 64),
        LEShortField("pkg_length", None),
        XShortField("checksum", None),
        ByteField("header_length", None),
        ByteField("PID_pt", None),
        FieldLenField("PID_num",
                      None,
                      fmt="B",
                      count_of="PIDs",
                      adjust=lambda pkt, x: x - (pkt.Flags.R == True)),
        FlagsField("Flags", 0, 8, "rSCQMRBF"),
        ConditionalField(ShortField("Minimal_PID_CP", None),
                         lambda pkt: pkt.Flags.M),
        StrFixedLenField("N_sid", "", 16),
        StrFixedLenField("L_sid", "", 20),
        StrFixedLenField("nid_cus", "", 16),
        ConditionalField(
            StrFixedLenField("nid_pro", "", 16),
            lambda pkt: pkt.Flags.B == False and pkt.Flags.R == True),
        ConditionalField(
            FieldLenField("QoS_len",
                          None,
                          fmt="B",
                          length_of="QoS_requirements"),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(
            StrLenField("QoS_requirements",
                        "",
                        length_from=lambda pkt: pkt.QoS_len),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(IntField("HMAC", None),
                         lambda pkt: pkt.Flags.C == True),
        ConditionalField(IntField("Seg_ID", None),
                         lambda pkt: pkt.Flags.S == True),
        FieldListField("PIDs", [""],
                       StrFixedLenField("", "", 4),
                       count_from=lambda pkt: pkt.PID_num +
                       (pkt.Flags.R == True))
    ]

    def post_build(self, pkt, pay):
        if self.header_length is None:
            self.header_length = len(pkt)
            pkt = pkt[:6] + int2Bytes(self.header_length, 1) + pkt[7:]
        if self.pkg_length is None:
            self.pkg_length = len(pkt) + len(pay)
            pkt = pkt[:2] + int2BytesLE(self.pkg_length, 2) + pkt[4:]
        if self.checksum is None:
            self.checksum = CalcChecksum(pkt)
            pkt = pkt[:4] + int2Bytes(self.checksum, 2) + pkt[6:]
        # print(self.pkg_length, self.header_length, self.checksum)
        return pkt + pay
コード例 #5
0
class INT_shim(Packet):
    name = "int shim"
    fields_desc = [
        ByteField("type", 1),
        ByteField("reserved1", 1),
        ByteField("len", 3),
        BitField("dscp", 0, 6),
        BitField("reserved2", 0, 2)
    ]
コード例 #6
0
ファイル: send.py プロジェクト: buck5060/tutorials
class AxonRoute(Packet):
    name = "AxonRoute"
    fields_desc = [
        LongField("preamble", 0),
        ByteField("axonType", 0),
        ShortField("axonLength", 0),
        ByteField("fwdHopCount", 0),
        ByteField("revHopCount", 0)
    ]
コード例 #7
0
ファイル: send.py プロジェクト: emichael/pegasus
class Pegasus(Packet):
    name = "PEGASUS"
    fields_desc = [
        ShortField("id", 0x5047),
        ByteField("op", None),
        IntField("keyhash", None),
        ByteField("node", 0),
        ShortField("load", 0)
    ]
コード例 #8
0
class FitnessControlPage(Packet):
    fields_desc = [ByteField('data_page_number', None)] + [
        ConditionalField(f, lambda p: p.data_page_number == 51) for f in [
            FieldListField(
                'reserved', 0, ByteField('x', 0), count_from=lambda p: 4),
            LEShortField('grade', 0),
            ByteField('coeff_roll', 0),
        ]
    ]
コード例 #9
0
class KeyValue(Packet):
    name = "KeyValue"
    fields_desc = [
        LongField("preamble", 1),
        IntField("num_valid", 0),
        ByteField("port", 1),
        ByteField("mtype", 0),
        IntField("key", 0),
        IntField("value", 0),
    ]
コード例 #10
0
ファイル: p4d_sniff_stats.py プロジェクト: tsihang/ddosm-p4
class DDoSD(Packet):
    name = "DDoSD Header"
    fields_desc = [IntField('pkt_num',0),
    IntField('src_ent',0),
    IntField('src_ewma',0),
    IntField('src_ewmmd',0),
    IntField('dst_ent',0),
    IntField('dst_ewma',0),
    IntField('dst_ewmmd',0), 
    ByteField('alarm',0), 
    ByteField('defcon',0), 
    XShortField('ethertype',0)]
コード例 #11
0
class HRMPayload(OptionalExtended):
    fields_desc = [
        BitField('page_change_toggle', 0, 1),
        BitField('data_page_number', None, 7),
        # ignore differences between page types
        FieldListField('data',
                       None,
                       XByteField('x', 0),
                       count_from=lambda p: 5),
        ByteField('beat_count', 0),
        ByteField('heart_rate', 0),
    ]
コード例 #12
0
class MetadataHeader_qdepth(Packet):
    name = 'Metadata qdepth Header'
    fields_desc = [
        ByteField('qid1', 0),
        BitField('qdepth1', 0, 24),
        ByteField('qid2', 0),
        BitField('qdepth2', 0, 24),
        ByteField('qid3', 0),
        BitField('qdepth3', 0, 24),
        ByteField('qid4', 0),
        BitField('qdepth4', 0, 24)
    ]
コード例 #13
0
class VersionInfo(Tag):
    name = 'Tag - VersionInfo'

    fields_desc = [
        LenField('len', None),
        XByteField('tag', 0x0a),
        ByteField('type', None),
        XShortField('unknown', None),
        ByteField('id', None),
        FieldLenField('name_len', None, fmt='B', length_of='name'),
        StrLenField('name', None, length_from=lambda pkt: pkt.name_len),
        FieldLenField('ver_len', None, fmt='B', length_of='version'),
        StrLenField('version', None, length_from=lambda pkt: pkt.ver_len)
    ]
コード例 #14
0
class Dot11EltRates(Packet):
    """The rates member contains an array of supported rates"""

    name = '802.11 Rates Information Element'

    # Known rates come from table in 6.5.5.2 of the 802.11 spec
    known_rates = {
        2: 1,
        3: 1.5,
        4: 2,
        5: 2.5,
        6: 3,
        9: 4.5,
        11: 5.5,
        12: 6,
        18: 9,
        22: 11,
        24: 12,
        27: 13.5,
        36: 18,
        44: 22,
        48: 24,
        54: 27,
        66: 33,
        72: 36,
        96: 48,
        108: 54
    }

    fields_desc = [
        ByteField('ID', 0),
        FieldLenField("len", None, "info", "B"),
        FieldListField('supported_rates',
                       None,
                       ByteField('', 0),
                       count_from=lambda pkt: pkt.len),
    ]

    def post_dissection(self, pkt):
        self.rates = []
        for supported_rate in self.supported_rates:
            # check the msb for each rate
            rate_msb = supported_rate & 0x80
            rate_value = supported_rate & 0x7F
            if rate_msb:
                # a value of 127 means HT PHY feature is required to join the BSS
                if 127 != rate_value:
                    self.rates.append(rate_value / 2)
            elif rate_value in Dot11EltRates.known_rates:
                self.rates.append(Dot11EltRates.known_rates[rate_value])
コード例 #15
0
ファイル: ds_tcp.py プロジェクト: jcreigh/FRCture
class VersionInfo(Tag):
    name = 'Tag - VersionInfo'

    fields_desc = [
        LenField("len", None),
        XByteField("tag", 0x0a),

        ByteField("type", None),
        XShortField("unknown", None),
        ByteField("id", None),
        FieldLenField("name_len", None, fmt='B', length_of='name'),
        StrLenField("name", None, length_from=lambda pkt:pkt.name_len),
        FieldLenField("ver_len", None, fmt='B', length_of='version'),
        StrLenField("version", None, length_from=lambda pkt:pkt.ver_len)
    ]
コード例 #16
0
class OpenFlowFeaturesReply(Packet):
    name = "OpenFlowFeaturesReply"
    fields_desc = [
        LongField("dpid", 1),
        IntField("nbuffers", 256),
        ByteField("ntables", 254),
        ByteField("auxilaryid", 0),
        ShortField("padding", 0),
        # the following will be bit fields set for each capability
        # supported by the switch. As of 1.3.2 (0x04), 7 flags are
        # supported (out of 32 available)
        # default here value is what mininet switch sends
        BitField("capabilities", 0x47, 32),
        IntField("reserved", 0),  # reserved 32 bit field
    ]
コード例 #17
0
ファイル: ddosd.py プロジェクト: reachcool/ddosmitigation
class DDOSD(Packet):
    name = "DDOSD"
    fields_desc = [
        IntField("pkt_num", None),
        IntField("src_entropy", None),
        IntField("src_ewma", None),
        IntField("src_ewmmd", None),
        IntField("dst_entropy", None),
        IntField("dst_ewma", None),
        IntField("dst_ewmmd", None),
        ByteField("alarm", None),
        ByteField("protocol", None),
        FieldLenField("count_ip", None, count_of="IPs"),
        PacketListField("IPs", [], alarm, count_from=lambda pkt: pkt.count_ip)
    ]
コード例 #18
0
ファイル: CoLoR_Ann.py プロジェクト: lxambulance/CoLoRagent
class Ann_unit(Packet):
    name = "CoLoR_Ann_unit"
    fields_desc = [
        BitField("N", 1, 1, tot_size=1),
        BitField("L", 1, 1),
        BitField("I", 1, 1),
        BitField("AM", 1, 2),  # 1注册,2更新,3取消
        BitField("r", 0, 3, end_tot_size=1),
        ByteField("Unit_length", None),
        FieldLenField("Strategy_N",
                      None,
                      fmt="B",
                      count_of="Strategy_unit_list"),
        ConditionalField(XStrFixedLenField("N_sid", "", 16),
                         lambda pkt: pkt.N == 1),
        ConditionalField(XStrFixedLenField("L_sid", "", 20),
                         lambda pkt: pkt.L == 1),
        ConditionalField(XStrFixedLenField("nid", "", 16),
                         lambda pkt: pkt.I == 1),
        PacketListField("Strategy_unit_list",
                        None,
                        Strategy_unit,
                        count_from=lambda pkt: pkt.Strategy_N)
    ]

    def post_build(self, pkt, pay):
        if self.Unit_length is None:
            self.Unit_length = len(pkt)
            pkt = pkt[:1] + int2Bytes(self.Unit_length, 1) + pkt[2:]
        return pkt + pay
コード例 #19
0
ファイル: nmsg.py プロジェクト: m3047/tahoma_nmsg
class NMSG(Packet):
    """This is what you see if you grab the UDP packets.
    
    If you want to grab raw packets and have them automagically recognized,
    then you need to call bind_layers(), which looks something like this:
    
        # This is just a hack. It depends on the fact that sratunnel was terminated
        # on UDP port 5000.
        bind_layers(UDP, NMSG, dport=5000)
    
    If you're actually listening in layer 3 mode, then NMSG is what you'll see,
    you won't see the network layers (Ethernet, IP, UDP).
    
    NOT SUPPORTED: zlib compression and fragmentation are not supported.
    
    NOT TESTED: multiple payloads are not tested.
    """
    fields_desc = [
        StrFixedLenField("magic_value", "NMSG", 4),
        BitField("flag_zlib", 0, 1),
        BitField("flag_frag", 0, 1),
        BitField("flag_reserved", 0, 6),
        ByteField("version", 2),
        IntField("container_length", 0),
        NmsgContainer.Field("container",
                            length_from=lambda pkt: pkt.container_length)
    ]
コード例 #20
0
ファイル: gradient_send.py プロジェクト: hotephen/p4-dev
class switchml(Packet):
    """ Switchml Header. """

    name = "switchml"

    fields_desc = [
        BitField('msg_type', 0, 4),
        BitField('sign_packet_flag', 0, 1),
        BitField('size', 0, 3),
        ByteField('job_id', 0),
        BitField('tsi', 0, 32),
        XByteField('pool_index', 0),
        BitField('k', 1, 8),
        XByteField("packet_id", 0),  # ++
        ByteField("packet_type", 4)  # CONSUME0 : 4
    ]
コード例 #21
0
class IPOption_QUERY(IPOption):
    name = "QUERY"
    option = 31
    fields_desc = [
        _IPOption_HDR,
        ShortField("count", 0),
        ByteField("flow_proto", 0)
    ]
コード例 #22
0
class ResetPacket(Packet):
    name = "Reset"
    fields_desc = [
        LEShortField("id", 0xDEAC),
        ByteField("type", 0x0),
        LEShortField("nodes", None),
        LEShortField("rkeys", None)
    ]
コード例 #23
0
ファイル: receive.py プロジェクト: hotephen/p4-dev
class SAINA_hdr(Packet):
    """ SAINA Header """
    name = "SAINA"
    fields_desc = [

        BitField('msg_type', 0, 4),
        BitField('round_end_flag', 1, 1),
        BitField('packet_size_t', 0, 3),
        ByteField('job_number', 0),
        BitField('packet_id', 0, 32),
        BitField('pool_index', 0, 16),
        BitField('packet_type', 0, 8),
        ByteField('k', 0),
        ByteField('round', 0),
        BitField('test1', 0, 32),
        BitField('test2', 0, 32),
        BitField('last_packet_flag', 0, 8),
    ]
コード例 #24
0
class NSH(Packet):
    """Network Service Header.
       NSH MD-type 1 if there is no ContextHeaders"""
    name = "NSH"

    fields_desc = [
        BitField('Ver', 0, 2),
        BitField('OAM', 0, 1),
        BitField('Un1', 0, 1),
        BitField('TTL', 0, 6),
        BitField('Len', None, 6),
        BitField('Un4', 1, 4),
        BitField('MDType', 1, 4),
        ByteField("NextProto", 0x65),
        ByteField("NextProto_2", 0x58),
        X3BytesField('NSP', 2),
        ByteField('NSI', 255)
    ]
コード例 #25
0
class switchml(Packet):
    """ Switchml Header. """

    name = "switchml"

    fields_desc = [
        BitField('msg_type', 0, 4),  # default / bit
        BitField('round_end_flag', args.ls_flag, 1),  #####
        BitField('packet_size', 0, 3),
        ByteField('job_id', 0),
        BitField('tsi', args.pkt_id, 32),
        BitField('pool_index', (args.pkt_id), 16),
        BitField('packet_type', 0, 8),
        ByteField('k', 0),  ##
        ByteField('round', args.round),  ##
        BitField('test1', 0, 32),
        BitField('test2', 0, 32),
        BitField('last_packet_flag', 0, 8),
    ]
コード例 #26
0
ファイル: CoLoR_Ann.py プロジェクト: lxambulance/CoLoRagent
class Strategy_unit(Packet):
    name = "CoLoR_Ann_Strategy_unit"
    fields_desc = [
        ByteField("tag", 0),
        FieldLenField("length", None, fmt="B", length_of="value"),
        StrLenField("value", "", length_from=lambda pkt: pkt.length)
    ]

    def extract_padding(self, s):
        return "", s
コード例 #27
0
class CFG(Packet):
    name = "Configuration Register"
    fields_desc = [
        ByteField("unk0", 0),  # R
        BitField("EVA", 0, 1),  # RW
        BitField("IVA", 0, 1),  # RW
        BitField("unk1", 0, 6),  # R
        ByteField("unk2", 0),  # R
        # LEND: initial value specified by the configuration
        BitField("LEND", 0, 1),  # R
        # DSPL: initial value depends on the external signal value
        BitField("DSPL", 0, 1),  # R
        BitField("unk3", 1, 1),  # R
        BitField("EVM", 0, 1),  # RW
        BitField("IVM", 1, 1),  # RW
        BitField("unk4", 0, 1),  # R
        BitField("ICE", 0, 1),  # RW
        BitField("DCE", 0, 1)  # RW
    ]
コード例 #28
0
class MetadataHeader(Packet):
    name = 'Metadata Header'
    fields_desc = [
        IntField('SwitchID', 0),
        #ShortField('IngressPort', 0),
        #ShortField('EgressPort', 0), # ShortField means 16 bytes
        IntField('Hop_Latency', 0),
        ByteField('qid', 0),
        BitField('qdepth', 0, 24)
    ]
コード例 #29
0
ファイル: CoLoR_Ann.py プロジェクト: lxambulance/CoLoRagent
class CoLoR_Ann(Packet):
    name = "CoLoR_Ann"
    fields_desc = [
        BitField("Version", 7, 4, tot_size=1),
        BitField("Package", 1, 4, end_tot_size=1),
        ByteField("TTL", 64),
        LEShortField("pkg_length", None),
        XShortField("checksum", None),
        FlagsField("Flags", 0, 8, "rrrrrPKF"),
        BitField("unit_num", None, 4, tot_size=1),
        BitField("PX_num", None, 4, end_tot_size=1),
        PacketListField("Announce_unit_list",
                        None,
                        Ann_unit,
                        count_from=lambda pkt: pkt.unit_num),
        ConditionalField(
            FieldLenField("Public_key_len",
                          None,
                          fmt="H",
                          length_of="Public_key"),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            StrLenField("Public_key",
                        "",
                        length_from=lambda pkt: pkt.Public_key_len),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            FieldLenField("AS_PATH_len", None, fmt="B", count_of="AID_list"),
            lambda pkt: pkt.Flags.P == True),
        ConditionalField(
            FieldListField("AID_list",
                           None,
                           StrFixedLenField("", "", 1),
                           count_from=lambda pkt: pkt.AS_PATH_len),
            lambda pkt: pkt.Flags.P == True),
        FieldListField("PX_list",
                       None,
                       StrFixedLenField("", "", 2),
                       count_from=lambda pkt: pkt.PX_num)
    ]

    def post_build(self, pkt, pay):
        if self.pkg_length is None:
            self.pkg_length = len(pkt)
            pkt = pkt[:2] + int2BytesLE(self.pkg_length, 2) + pkt[4:]
        if self.checksum is None:
            self.checksum = CalcChecksum(pkt)
            pkt = pkt[:4] + int2Bytes(self.checksum, 2) + pkt[6:]
        if self.unit_num is None and self.PX_num is None:
            self.unit_num = len(self.Announce_unit_list)
            self.PX_num = len(self.PX_list)
            pkt = pkt[:7] + int2Bytes(self.unit_num << 4 | self.PX_num,
                                      1) + pkt[8:]
        return pkt + pay
コード例 #30
0
ファイル: CoLoR_Get.py プロジェクト: lxambulance/CoLoRagent
class CoLoR_Get(Packet):
    name = "CoLoR_Get"
    fields_desc = [
        BitField("Version", 7, 4, tot_size=1),
        BitField("Package", 2, 4, end_tot_size=1),
        ByteField("TTL", 64),
        LEShortField("pkg_length", None),
        XShortField("checksum", None),
        ShortField("MTU", None),
        FieldLenField("PID_num", None, fmt="B", count_of="PIDs"),
        FlagsField("Flags", 8, 8, "rrrASQKF"),
        ShortField("Minimal_PID_CP", None),
        StrFixedLenField("N_sid", "", 16),
        StrFixedLenField("L_sid", "", 20),
        StrFixedLenField("nid", "", 16),
        ConditionalField(
            FieldLenField("Public_key_len",
                          None,
                          fmt="H",
                          length_of="Public_key"),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            StrLenField("Public_key",
                        "",
                        length_from=lambda pkt: pkt.Public_key_len),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            FieldLenField("QoS_len",
                          None,
                          fmt="B",
                          length_of="QoS_requirements"),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(
            StrLenField("QoS_requirements",
                        "",
                        length_from=lambda pkt: pkt.QoS_len),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(IntField("Seg_ID", None),
                         lambda pkt: pkt.Flags.S == True),
        FieldListField("PIDs",
                       None,
                       StrFixedLenField("", "", 4),
                       count_from=lambda pkt: pkt.PID_num)
    ]

    def post_build(self, pkt, pay):
        if self.pkg_length is None:
            self.pkg_length = len(pkt)
            pkt = pkt[:2] + int2BytesLE(self.pkg_length, 2) + pkt[4:]
        if self.checksum is None:
            self.checksum = CalcChecksum(pkt)
            pkt = pkt[:4] + int2Bytes(self.checksum, 2) + pkt[6:]
        return pkt + pay