• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% knx layer test campaign
2
3+ Syntax check
4= Import the knx layer
5from scapy.contrib.knx import *
6
7+ Test KNX Header
8= Header default values
9pkt = KNX()
10assert raw(pkt) == b'\x06\x10\x00\x00\x00\x06'
11
12= KNX Header payload length calculation
13pkt = KNX(service_identifier=0x0203)/KNXDescriptionRequest()
14assert raw(pkt)[4:6] == b'\x00\x0e'
15
16= KNX Header Guess Payload KNXSearchRequest
17p = KNX(b'\x06\x10\x02\x01\x00\x0e\x08\x01\x00\x00\x00\x00\x00\x00')
18assert isinstance(p.payload, KNXSearchRequest)
19
20= KNX Header Guess Payload KNXSearchResponse
21p = 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')
22assert isinstance(p.payload, KNXSearchResponse)
23
24= KNX Header Guess Payload KNXDescriptionRequest
25p = KNX(b'\x06\x10\x02\x03\x00\x0e\x08\x01\x00\x00\x00\x00\x00\x00')
26assert isinstance(p.payload, KNXDescriptionRequest)
27
28= KNX Header Guess Payload KNXDescriptionResponse
29p = 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')
30assert isinstance(p.payload, KNXDescriptionResponse)
31
32= KNX Header Guess Payload KNXConnectRequest
33p = 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')
34assert isinstance(p.payload, KNXConnectRequest)
35
36= KNX Header Guess Payload KNXConnectResponse
37p = KNX(b'\x06\x10\x02\x06\x00\x12\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x02\x03')
38assert isinstance(p.payload, KNXConnectResponse)
39
40= KNX Header Guess Payload KNXConnectionstateRequest
41p = KNX(b'\x06\x10\x02\x07\x00\x10\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00')
42assert isinstance(p.payload, KNXConnectionstateRequest)
43
44= KNX Header Guess Payload KNXConnectionstateResponse
45p = KNX(b'\x06\x10\x02\x08\x00\x08\x00\x00')
46assert isinstance(p.payload, KNXConnectionstateResponse)
47
48= KNX Header Guess Payload KNXDisconnectRequest
49p = KNX(b'\x06\x10\x02\t\x00\x10\x01\x00\x08\x01\x00\x00\x00\x00\x00\x00')
50assert isinstance(p.payload, KNXDisconnectRequest)
51
52= KNX Header Guess Payload KNXDisconnectResponse
53p = KNX(b'\x06\x10\x02\n\x00\x08\x00\x00')
54assert isinstance(p.payload, KNXDisconnectResponse)
55
56= KNX Header Guess Payload KNXConfigurationRequest
57p = KNX(b'\x06\x10\x03\x10\x00\x15\x04\x01\x00\x00\x00\x00\xbc\xe0\x00\x00\n\x03\x01\x00\x80')
58assert isinstance(p.payload, KNXConfigurationRequest)
59
60= KNX Header Guess Payload KNXConfigurationACK
61p = KNX(b'\x06\x10\x03\x11\x00\n\x04\x01\x00\x00')
62assert isinstance(p.payload, KNXConfigurationACK)
63
64= KNX Header Guess Payload KNXTunnelingRequest
65p = KNX(b'\x06\x10\x04 \x00\x15\x04\x01\x00\x00\x00\x00\xbc\xe0\x00\x00\n\x03\x01\x00\x80')
66assert isinstance(p.payload, KNXTunnelingRequest)
67
68= KNX Header Guess Payload KNXTunnelingACK
69p = KNX(b'\x06\x10\x04!\x00\n\x04\x01\x00\x00')
70assert isinstance(p.payload, KNXTunnelingACK)
71
72+ Test layer binding
73= Destination port
74
75
76