class EAP(ProtocolPacket): REQUEST = 0x01 RESPONSE = 0x02 SUCCESS = 0x03 FAILURE = 0x04 header_size = 4 tail_size = 0 code = Byte(0) identifier = Byte(1) length = Word(2, ">")
class EAPOL(ProtocolPacket): EAP_PACKET = 0x00 EAPOL_START = 0x01 EAPOL_LOGOFF = 0x02 EAPOL_KEY = 0x03 EAPOL_ENCAPSULATED_ASF_ALERT = 0x04 DOT1X_VERSION = 0x01 header_size = 4 tail_size = 0 version = Byte(0) packet_type = Byte(1) body_length = Word(2, ">")
class EAPR(ProtocolPacket): """It represents a request or a response in EAP (codes 1 and 2)""" IDENTITY = 0x01 EXPANDED = 0xfe header_size = 1 tail_size = 0 type = Byte(0)
class SimpleConfig(ProtocolPacket): "For now, it supports Simple configs with the bits more_fragments and length_field not set" header_size = 2 tail_size = 0 op_code = Byte(0) flags = Byte(1) more_fragments = Bit(1, 0) length_field = Bit(1, 1) BUILDERS = { SCElem.CONNECTION_TYPE: ByteBuilder(), SCElem.CONNECTION_TYPE_FLAGS: ByteBuilder(), SCElem.VERSION: ByteBuilder(), SCElem.MESSAGE_TYPE: ByteBuilder(), SCElem.NETWORK_INDEX: ByteBuilder(), SCElem.NETWORK_KEY_INDEX: ByteBuilder(), SCElem.POWER_LEVEL: ByteBuilder(), SCElem.PSK_CURRENT: ByteBuilder(), SCElem.PSK_MAX: ByteBuilder(), SCElem.REGISTRAR_CURRENT: ByteBuilder(), SCElem.REGISTRAR_MAX: ByteBuilder(), SCElem.REQUEST_TYPE: ByteBuilder(), SCElem.RESPONSE_TYPE: ByteBuilder(), SCElem.RF_BANDS: ByteBuilder(), SCElem.WPS_STATE: ByteBuilder(), SCElem.TOTAL_NETWORKS: ByteBuilder(), SCElem.VERSION: ByteBuilder(), SCElem.WEP_TRANSMIT_KEY: ByteBuilder(), SCElem.CONFIRMATION_URL4: StringBuilder(), SCElem.CONFIRMATION_URL6: StringBuilder(), SCElem.DEVICE_NAME: StringBuilder(), SCElem.IDENTITY: StringBuilder(), SCElem.MANUFACTURER: StringBuilder(), SCElem.MODEL_NAME: StringBuilder(), SCElem.MODEL_NUMBER: StringBuilder(), SCElem.NEW_DEVICE_NAME: StringBuilder(), SCElem.NEW_PASSWORD: StringBuilder(), SCElem.SERIAL_NUMBER: StringBuilder(), SCElem.EAP_IDENTITY: StringBuilder(), SCElem.NETWORK_KEY: StringBuilder(), SCElem.AP_CHANNEL: NumBuilder(2), SCElem.ASSOCIATION_STATE: NumBuilder(2), SCElem.AUTHENTICATION_TYPE: NumBuilder(2), SCElem.AUTHENTICATION_TYPE_FLAGS: NumBuilder(2), SCElem.CONFIG_METHODS: NumBuilder(2), SCElem.CONFIGURATION_ERROR: NumBuilder(2), SCElem.DEVICE_PASSWORD_ID: NumBuilder(2), SCElem.ENCRYPTION_TYPE: NumBuilder(2), SCElem.ENCRYPTION_TYPE_FLAGS: NumBuilder(2), SCElem.MESSAGE_COUNTER: NumBuilder(8), SCElem.KEY_LIFETIME: NumBuilder(4), SCElem.PERMITTED_CONFIG_METHODS: NumBuilder(2), SCElem.SELECTED_REGISTRAR_CONFIG_METHODS: NumBuilder(2), SCElem.PUBLIC_KEY: NumBuilder(192), } @classmethod def build_tlv_container(cls): return TLVContainer(builders=SimpleConfig.BUILDERS, descs=dict( (v, k) for (k, v) in SCElem.__dict__.iteritems()))