scapy.layers.dot15d4

Wireless MAC according to IEEE 802.15.4.

class scapy.layers.dot15d4.Dot15d4(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
answers(other)[source]
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|F|F|F|F|FCF F|FCF|FCF|FCF|FCF|     SEQNUM    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. Dot15d4                           
Dot15d4 fields

fcf_reserved_1

BitField (1 bit)

0

fcf_panidcompress

BitEnumField

0

fcf_ackreq

BitEnumField

0

fcf_pending

BitEnumField

0

fcf_security

BitEnumField

0

fcf_frametype

BitEnumField

0

fcf_srcaddrmode

BitEnumField

0

fcf_framever

BitField (2 bits)

0

fcf_destaddrmode

BitEnumField

2

fcf_reserved_2

BitField (2 bits)

0

seqnum

ByteField

1

guess_payload_class(payload)[source]
mysummary()[source]
payload_guess

Possible sublayers: Dot15d4Ack, Dot15d4Beacon, Dot15d4Cmd, Dot15d4Data

post_build(p, pay)[source]
class scapy.layers.dot15d4.Dot15d4Ack(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
class scapy.layers.dot15d4.Dot15d4AuxSecurityHeader(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|SEC S|SEC|SEC S|                SEC FRAMECOUNTER               |
+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |      SEC KEYID KEYSOURCE      |SEC KEYID KEYIN|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Fig. Dot15d4AuxSecurityHeader                   
Dot15d4AuxSecurityHeader fields

sec_sc_reserved

BitField (3 bits)

0

sec_sc_keyidmode

BitEnumField

0

sec_sc_seclevel

BitEnumField

0

sec_framecounter

XLEIntField

0

sec_keyid_keysource

MultipleTypeField (XLEIntField, LELongField, StrFixedLenField)

b''

sec_keyid_keyindex

XByteField (Cond)

255

class scapy.layers.dot15d4.Dot15d4Beacon(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SRC PANID           |            SRC ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         AUX SEC HEADER        |SF SFOR|SF BEAC|S|S|S|S|SF FINA|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|G|GTS SPE|GTS S|G| GTS DIR MASK|P|PA NU|P|PA NU|PA SHORT ADDRES|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |       PA LONG ADDRESSES       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. Dot15d4Beacon                        
Dot15d4Beacon fields

src_panid

XLEShortField

0

src_addr

dot15d4AddressField

None

aux_sec_header

PacketField (Cond)

<Dot15d4AuxSecurityHeader  |>

sf_sforder

BitField (4 bits)

15

sf_beaconorder

BitField (4 bits)

15

sf_assocpermit

BitEnumField

0

sf_pancoord

BitEnumField

0

sf_reserved

BitField (1 bit)

0

sf_battlifeextend

BitEnumField

0

sf_finalcapslot

BitField (4 bits)

15

gts_spec_permit

BitEnumField

1

gts_spec_reserved

BitField (4 bits)

0

gts_spec_desccount

BitField (3 bits)

0

gts_dir_reserved

BitField (Cond) (1 bit)

0

gts_dir_mask

BitField (Cond) (7 bits)

0

pa_reserved_1

BitField (1 bit)

0

pa_num_long

BitField (3 bits)

0

pa_reserved_2

BitField (1 bit)

0

pa_num_short

BitField (3 bits)

0

pa_short_addresses

FieldListField

[]

pa_long_addresses

FieldListField

[]

mysummary()[source]
payload_guess

Possible sublayers: ZigBeeBeacon

class scapy.layers.dot15d4.Dot15d4Cmd(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           DEST PANID          |           DEST ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SRC PANID           |            SRC ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         AUX SEC HEADER        |     CMD ID    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. Dot15d4Cmd                          
Dot15d4Cmd fields

dest_panid

XLEShortField

65535

dest_addr

dot15d4AddressField

0

src_panid

XLEShortField (Cond)

0

src_addr

dot15d4AddressField (Cond)

None

aux_sec_header

PacketField (Cond)

<Dot15d4AuxSecurityHeader  |>

cmd_id

ByteEnumField

0

guess_payload_class(payload)[source]
mysummary()[source]
class scapy.layers.dot15d4.Dot15d4CmdAssocReq(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|A|S|R|R|R|P|D|A|
+-+-+-+-+-+-+-+-+

                     Fig. Dot15d4CmdAssocReq                      
Dot15d4CmdAssocReq fields

allocate_address

BitField (1 bit)

0

security_capability

BitField (1 bit)

0

reserved2

BitField (1 bit)

0

reserved1

BitField (1 bit)

0

receiver_on_when_idle

BitField (1 bit)

0

power_source

BitField (1 bit)

0

device_type

BitField (1 bit)

0

alternate_pan_coordinator

BitField (1 bit)

0

mysummary()[source]
class scapy.layers.dot15d4.Dot15d4CmdAssocResp(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         SHORT ADDRESS         |ASSOCIATION STA|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. Dot15d4CmdAssocResp                     
Dot15d4CmdAssocResp fields

short_address

XLEShortField

65535

association_status

ByteEnumField

0

mysummary()[source]
class scapy.layers.dot15d4.Dot15d4CmdCoordRealign(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             PANID             |         COORD ADDRESS         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    CHANNEL    |          DEV ADDRESS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. Dot15d4CmdCoordRealign                    
Dot15d4CmdCoordRealign fields

panid

XLEShortField

65535

coord_address

XLEShortField

0

channel

ByteField

0

dev_address

XLEShortField

65535

guess_payload_class(payload)[source]
mysummary()[source]
class scapy.layers.dot15d4.Dot15d4CmdCoordRealignPage(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  CHANNEL PAGE |
+-+-+-+-+-+-+-+-+

                 Fig. Dot15d4CmdCoordRealignPage                  
Dot15d4CmdCoordRealignPage fields

channel_page

ByteField

0

class scapy.layers.dot15d4.Dot15d4CmdDisassociation(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|DISASSOCIATION |
+-+-+-+-+-+-+-+-+

                  Fig. Dot15d4CmdDisassociation                   
Dot15d4CmdDisassociation fields

disassociation_reason

ByteEnumField

2

mysummary()[source]
class scapy.layers.dot15d4.Dot15d4CmdGTSReq(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|RES|C|G|GTS LEN|
+-+-+-+-+-+-+-+-+

                      Fig. Dot15d4CmdGTSReq                       
Dot15d4CmdGTSReq fields

reserved

BitField (2 bits)

0

charact_type

BitField (1 bit)

0

gts_dir

BitField (1 bit)

0

gts_len

BitField (4 bits)

0

mysummary()[source]
class scapy.layers.dot15d4.Dot15d4Data(*args, **kargs)[source]

Bases: scapy.packet.Packet

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           DEST PANID          |           DEST ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SRC PANID           |            SRC ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         AUX SEC HEADER        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. Dot15d4Data                         
Dot15d4Data fields

dest_panid

XLEShortField

65535

dest_addr

dot15d4AddressField

65535

src_panid

XLEShortField (Cond)

0

src_addr

dot15d4AddressField (Cond)

None

aux_sec_header

PacketField (Cond)

<Dot15d4AuxSecurityHeader  |>

guess_payload_class(payload)[source]
mysummary()[source]
class scapy.layers.dot15d4.Dot15d4FCS(*args, **kargs)[source]

Bases: scapy.layers.dot15d4.Dot15d4

This class is a drop-in replacement for the Dot15d4 class above, except it expects a FCS/checksum in the input, and produces one in the output. This provides the user flexibility, as many 802.15.4 interfaces will have an AUTO_CRC setting # noqa: E501 that will validate the FCS/CRC in firmware, and add it automatically when transmitting. # noqa: E501

aliastypes
compute_fcs(data)[source]
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|F|F|F|F|FCF F|FCF|FCF|FCF|FCF|     SEQNUM    |      FCS      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+

                         Fig. Dot15d4FCS                          
Dot15d4FCS fields

fcf_reserved_1

BitField (1 bit)

0

fcf_panidcompress

BitEnumField

0

fcf_ackreq

BitEnumField

0

fcf_pending

BitEnumField

0

fcf_security

BitEnumField

0

fcf_frametype

BitEnumField

0

fcf_srcaddrmode

BitEnumField

0

fcf_framever

BitField (2 bits)

0

fcf_destaddrmode

BitEnumField

2

fcf_reserved_2

BitField (2 bits)

0

seqnum

ByteField

1

fcs

FCSField

None

match_subclass = True
post_build(p, pay)[source]
class scapy.layers.dot15d4.dot15d4AddressField(name, default, length_of=None, fmt='<H', adjust=None)[source]

Bases: scapy.fields.Field

addfield(pkt, s, val)[source]

Add an internal value to a string

adjust
getfield(pkt, s)[source]
i2repr(pkt, x)[source]

Convert internal value to a nice representation

lengthFromAddrMode(pkt, x)[source]
length_of
scapy.layers.dot15d4.util_srcpanid_present(pkt)[source]

A source PAN ID is included if and only if both src addr mode != 0 and PAN ID Compression in FCF == 0