#!/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_START_REQ (MMEPayload): """Handles the DRV_STA_MAC_START.REQ MME.""" name = "HomePlug AV DRV_STA_MAC_START.REQ""" fields_desc = [ ] class DRV_STA_MAC_START_CNF (MMEPayload): """Handles the DRV_STA_MAC_START.CNF MME.""" name = "HomePlug AV DRV_STA_MAC_START.CNF""" fields_desc = [ XByteField ("result", 0), ] 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), ]