% knx layer test campaign + Syntax check = Import the knx layer from scapy.contrib.knx import * + Test KNX Header = Header default values pkt = KNX() assert raw(pkt) == b'\x06\x10\x00\x00\x00\x06' = KNX Header payload length calculation pkt = KNX(service_identifier=0x0203)/KNXDescriptionRequest() assert raw(pkt)[4:6] == b'\x00\x0e' = KNX Header Guess Payload KNXSearchRequest p = KNX(b'\x06\x10\x02\x01\x00\x0e\x08\x01\x00\x00\x00\x00\x00\x00') assert isinstance(p.payload, KNXSearchRequest) = KNX Header Guess Payload KNXSearchResponse p = KNX(b'\x06\x10\x02\x02\x00F\x08\x01\x00\x00\x00\x00\x00\x006\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02') assert isinstance(p.payload, KNXSearchResponse) = KNX Header Guess Payload KNXDescriptionRequest p = KNX(b'\x06\x10\x02\x03\x00\x0e\x08\x01\x00\x00\x00\x00\x00\x00') assert isinstance(p.payload, KNXDescriptionRequest) = KNX Header Guess Payload KNXDescriptionResponse p = KNX(b'\x06\x10\x02\x04\x00>6\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02') assert isinstance(p.payload, KNXDescriptionResponse) = KNX Header Guess Payload KNXConnectRequest p = KNX(b'\x06\x10\x02\x05\x00\x18\x08\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x02\x03') assert isinstance(p.payload, KNXConnectRequest) = KNX Header Guess Payload KNXConnectResponse p = KNX(b'\x06\x10\x02\x06\x00\x12\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x02\x03') assert isinstance(p.payload, KNXConnectResponse) = KNX Header Guess Payload KNXConnectionstateRequest p = KNX(b'\x06\x10\x02\x07\x00\x10\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00') assert isinstance(p.payload, KNXConnectionstateRequest) = KNX Header Guess Payload KNXConnectionstateResponse p = KNX(b'\x06\x10\x02\x08\x00\x08\x00\x00') assert isinstance(p.payload, KNXConnectionstateResponse) = KNX Header Guess Payload KNXDisconnectRequest p = KNX(b'\x06\x10\x02\t\x00\x10\x01\x00\x08\x01\x00\x00\x00\x00\x00\x00') assert isinstance(p.payload, KNXDisconnectRequest) = KNX Header Guess Payload KNXDisconnectResponse p = KNX(b'\x06\x10\x02\n\x00\x08\x00\x00') assert isinstance(p.payload, KNXDisconnectResponse) = KNX Header Guess Payload KNXConfigurationRequest p = KNX(b'\x06\x10\x03\x10\x00\x15\x04\x01\x00\x00\x00\x00\xbc\xe0\x00\x00\n\x03\x01\x00\x80') assert isinstance(p.payload, KNXConfigurationRequest) = KNX Header Guess Payload KNXConfigurationACK p = KNX(b'\x06\x10\x03\x11\x00\n\x04\x01\x00\x00') assert isinstance(p.payload, KNXConfigurationACK) = KNX Header Guess Payload KNXTunnelingRequest p = KNX(b'\x06\x10\x04 \x00\x15\x04\x01\x00\x00\x00\x00\xbc\xe0\x00\x00\n\x03\x01\x00\x80') assert isinstance(p.payload, KNXTunnelingRequest) = KNX Header Guess Payload KNXTunnelingACK p = KNX(b'\x06\x10\x04!\x00\n\x04\x01\x00\x00') assert isinstance(p.payload, KNXTunnelingACK) + Test layer binding = Destination port