summaryrefslogtreecommitdiff
path: root/common/lib/scammer/drv.py
blob: b1ff6f5610b6101236f24d84ec28f6dcd43c557a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/python

#############################################################################
#  Copyright (C) 2011 Spidcom
#############################################################################

from scapy.all import Packet
from scapy.fields import *
from commonfields import *
from scammer import MMEPayload
from common import HPAV_RESULT

class DRV_STA_MAC_STOP_REQ (MMEPayload):
    """Handles the DRV_STA_MAC_STOP.REQ MME."""
    name = "HomePlug AV DRV_STA_MAC_STOP.REQ"""
    fields_desc = [
            ]

class DRV_STA_MAC_STOP_CNF (MMEPayload):
    """Handles the DRV_STA_MAC_STOP.CNF MME."""
    name = "HomePlug AV DRV_STA_MAC_STOP.CNF"""
    fields_desc = [
            XByteField ("result", 0),
            ]

class DRV_STA_STATUS_IND (MMEPayload):
    """Handles the DRV_STA_STATUS.IND MME."""
    name = "HomePlug AV DRV_STA_STATUS.IND"""
    fields_desc = [
            ByteEnumField ("status", 0,
                {0: "unassociated",
                    1: "associated",
                    2: "authenticated"}
                ),
            ByteEnumField ("role", 0,
                {0: "Station",
                    1: "Proxy CCo",
                    2: "CCo",
                    }
                ),
            XByteField ("user_appoint_cco", 0),
            XByteField ("backup_cco", 0),
            XByteField ("simple_connect", 0),
            ByteEnumField ("PLC_sync_freq", 0,
                {0: "unknown",
                    1: "50Hz",
                    2: "60Hz",
                    3: "Co-axial_Cable",
                    }
                ),
            ]

class DRV_STA_SC_REQ (MMEPayload):
    """Handles the DRV_STA_SC.REQ MME."""
    name = "HomePlug AV DRV_STA_SC.REQ"""
    fields_desc = [
            ByteEnumField ("sc_join", 0, { 0: "SC_ADD", 1: "SC_JOIN" }),
            ]

class DRV_STA_SC_CNF (MMEPayload):
    """Handles the DRV_STA_SC.CNF MME."""
    name = "HomePlug AV DRV_STA_SC.CNF"""
    fields_desc = [
            ByteEnumField ("result", 0, HPAV_RESULT),
            ]

class DRV_MCAST_SET_LIST_REQ_member (Packet):
    """Handles the DRV_MCAST_SET_LIST.REQ_member MME."""
    name = "HomePlug AV DRV_MCAST_SET_LIST.REQ_member"""
    fields_desc = [
            MACField ("mac", ETHER_ANY),
            ]

    def extract_padding(self, s):
        return "",s

class DRV_MCAST_SET_LIST_REQ_group (Packet):
    """Handles the DRV_MCAST_SET_LIST.REQ_group MME."""
    name = "HomePlug AV DRV_MCAST_SET_LIST.REQ_group"""
    fields_desc = [
            MACField ("mac_group", ETHER_ANY),
            FieldLenField("nbmembers", None, count_of="members",fmt="B"),
            PacketListField ("members", None,
                DRV_MCAST_SET_LIST_REQ_member,
                count_from = lambda p: p.nbmembers),
            ]

    def extract_padding(self, s):
        return "",s

class DRV_MCAST_SET_LIST_REQ (MMEPayload):
    """Handles the DRV_MCAST_SET_LIST.REQ MME."""
    name = "HomePlug AV DRV_MCAST_SET_LIST.REQ"""
    fields_desc = [
            FieldLenField("nbgrps", None, count_of="groups",fmt="B"),
            PacketListField ("groups", None, DRV_MCAST_SET_LIST_REQ_group,
                count_from = lambda p: p.nbgrps),
            ]

class DRV_MCAST_SET_LIST_CNF (MMEPayload):
    """Handles the DRV_MCAST_SET_LIST.CNF MME."""
    name = "HomePlug AV DRV_MCAST_SET_LIST.CNF"""
    fields_desc = [
            ByteEnumField ("result", 0, HPAV_RESULT),
            ]

class DRV_STA_SET_KEY_REQ (MMEPayload):
    """Handles the DRV_STA_SET_KEY.REQ MME."""
    name = "HomePlug AV DRV_STA_SET_KEY.REQ"""
    fields_desc = [
            BitField ("nmk", 0, 128),
            ByteEnumField ("type", 0,
                {
                    0: "CHANGE_NID",
                    1: "CHANGE_SECURITY_LEVEL",
                    }),
            HPAVNIDField ("nid", 0),
            ByteField ("sl", 0),
            ]

class DRV_STA_SET_KEY_CNF (MMEPayload):
    """Handles the DRV_STA_SET_KEY.CNF MME."""
    name = "HomePlug AV DRV_STA_SET_KEY.CNF"""
    fields_desc = [
            ByteEnumField ("result", 0, HPAV_RESULT),
            ]

class DRV_STA_SET_KEY_IND (MMEPayload):
    """Handles the DRV_STA_SET_KEY.IND MME."""
    name = "HomePlug AV DRV_STA_SET_KEY.IND"""
    fields_desc = [
            BitField ("nmk", 0, 128),
            ByteEnumField ("type", 0,
                {
                    0: "CHANGE_NID",
                    1: "CHANGE_SECURITY_LEVEL",
                    }),
            HPAVNIDField ("nid", 0),
            ByteField ("sl", 0),
            ]