MCPcopy Create free account
hub / github.com/secdev/scapy / ZigbeeNWK

Class ZigbeeNWK

scapy/layers/zigbee.py:298–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

296# ZigBee #
297
298class ZigbeeNWK(Packet):
299 name = "Zigbee Network Layer"
300 fields_desc = [
301 BitField("discover_route", 0, 2),
302 BitField("proto_version", 2, 4),
303 BitEnumField("frametype", 0, 2,
304 {0: 'data', 1: 'command', 3: 'Inter-PAN'}),
305 FlagsField("flags", 0, 8, ['multicast', 'security', 'source_route', 'extended_dst', 'extended_src', 'reserved1', 'reserved2', 'reserved3']), # noqa: E501
306 XLEShortField("destination", 0),
307 XLEShortField("source", 0),
308 ByteField("radius", 0),
309 ByteField("seqnum", 1),
310
311 # ConditionalField(XLongField("ext_dst", 0), lambda pkt:pkt.flags & 8),
312
313 ConditionalField(dot15d4AddressField("ext_dst", 0, adjust=lambda pkt, x: 8), lambda pkt:pkt.flags & 8), # noqa: E501
314 ConditionalField(dot15d4AddressField("ext_src", 0, adjust=lambda pkt, x: 8), lambda pkt:pkt.flags & 16), # noqa: E501
315
316 ConditionalField(ByteField("relay_count", 1), lambda pkt:pkt.flags & 0x04), # noqa: E501
317 ConditionalField(ByteField("relay_index", 0), lambda pkt:pkt.flags & 0x04), # noqa: E501
318 ConditionalField(FieldListField("relays", [], XLEShortField("", 0x0000), count_from=lambda pkt:pkt.relay_count), lambda pkt:pkt.flags & 0x04), # noqa: E501
319 ]
320
321 @classmethod
322 def dispatch_hook(cls, _pkt=None, *args, **kargs):
323 if _pkt and len(_pkt) >= 2:
324 frametype = ord(_pkt[:1]) & 3
325 if frametype == 3:
326 return ZigbeeNWKStub
327 return cls
328
329 def guess_payload_class(self, payload):
330 if self.flags.security:
331 return ZigbeeSecurityHeader
332 elif self.frametype == 0:
333 return ZigbeeAppDataPayload
334 elif self.frametype == 1:
335 return ZigbeeNWKCommandPayload
336 else:
337 return Packet.guess_payload_class(self, payload)
338
339
340class LinkStatusEntry(Packet):

Callers

nothing calls this directly

Calls 8

BitFieldClass · 0.90
BitEnumFieldClass · 0.90
FlagsFieldClass · 0.90
XLEShortFieldClass · 0.90
ByteFieldClass · 0.90
ConditionalFieldClass · 0.90
dot15d4AddressFieldClass · 0.90
FieldListFieldClass · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…