scapy.contrib.mqttsn

MQTT for Sensor Networks (MQTT-SN)

Specification: http://www.mqtt.org/new/wp-content/uploads/2009/06/MQTT-SN_spec_v1.2.pdf

class scapy.contrib.mqttsn.MQTTSN(_pkt, /, *, len=None, type=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSN'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<VariableFieldLenField (MQTTSN).len>, <XByteEnumField (MQTTSN).type>]
payload_guess: List[Tuple[Dict[str, Any], Type[Packet]]] = [({'type': 0}, <class 'scapy.contrib.mqttsn.MQTTSNAdvertise'>), ({'type': 1}, <class 'scapy.contrib.mqttsn.MQTTSNSearchGW'>), ({'type': 2}, <class 'scapy.contrib.mqttsn.MQTTSNGwInfo'>), ({'type': 4}, <class 'scapy.contrib.mqttsn.MQTTSNConnect'>), ({'type': 5}, <class 'scapy.contrib.mqttsn.MQTTSNConnack'>), ({'type': 6}, <class 'scapy.contrib.mqttsn.MQTTSNWillTopicReq'>), ({'type': 7}, <class 'scapy.contrib.mqttsn.MQTTSNWillTopic'>), ({'type': 8}, <class 'scapy.contrib.mqttsn.MQTTSNWillMsgReq'>), ({'type': 9}, <class 'scapy.contrib.mqttsn.MQTTSNWillMsg'>), ({'type': 10}, <class 'scapy.contrib.mqttsn.MQTTSNRegister'>), ({'type': 11}, <class 'scapy.contrib.mqttsn.MQTTSNRegack'>), ({'type': 12}, <class 'scapy.contrib.mqttsn.MQTTSNPublish'>), ({'type': 13}, <class 'scapy.contrib.mqttsn.MQTTSNPuback'>), ({'type': 14}, <class 'scapy.contrib.mqttsn.MQTTSNPubcomp'>), ({'type': 15}, <class 'scapy.contrib.mqttsn.MQTTSNPubrec'>), ({'type': 16}, <class 'scapy.contrib.mqttsn.MQTTSNPubrel'>), ({'type': 18}, <class 'scapy.contrib.mqttsn.MQTTSNSubscribe'>), ({'type': 19}, <class 'scapy.contrib.mqttsn.MQTTSNSuback'>), ({'type': 20}, <class 'scapy.contrib.mqttsn.MQTTSNUnsubscribe'>), ({'type': 21}, <class 'scapy.contrib.mqttsn.MQTTSNUnsuback'>), ({'type': 22}, <class 'scapy.contrib.mqttsn.MQTTSNPingReq'>), ({'type': 23}, <class 'scapy.contrib.mqttsn.MQTTSNPingResp'>), ({'type': 24}, <class 'scapy.contrib.mqttsn.MQTTSNDisconnect'>), ({'type': 26}, <class 'scapy.contrib.mqttsn.MQTTSNWillTopicUpd'>), ({'type': 27}, <class 'scapy.contrib.mqttsn.MQTTSNWillTopicResp'>), ({'type': 28}, <class 'scapy.contrib.mqttsn.MQTTSNWillMsgUpd'>), ({'type': 29}, <class 'scapy.contrib.mqttsn.MQTTSNWillMsgResp'>), ({'type': 254}, <class 'scapy.contrib.mqttsn.MQTTSNEncaps'>)]
class scapy.contrib.mqttsn.MQTTSNAdvertise(_pkt, /, *, gw_id=0, duration=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNAdvertise'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (MQTTSNAdvertise).gw_id>, <ShortField (MQTTSNAdvertise).duration>]
class scapy.contrib.mqttsn.MQTTSNConnack(_pkt, /, *, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNConnack'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (MQTTSNConnack).return_code>]
class scapy.contrib.mqttsn.MQTTSNConnect(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, prot_id=1, duration=0, client_id=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNConnect'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <ByteField (MQTTSNConnect).prot_id>, <ShortField (MQTTSNConnect).duration>, <StrLenField (MQTTSNConnect).client_id>]
class scapy.contrib.mqttsn.MQTTSNDisconnect(_pkt, /, *, duration=None)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNDisconnect'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.ConditionalField object>]
class scapy.contrib.mqttsn.MQTTSNEncaps(_pkt, /, *, resvd=0, radius=0, w_node_id=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNEncaps'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNEncaps).resvd>, <BitField (MQTTSNEncaps).radius>, <StrLenField (MQTTSNEncaps).w_node_id>]
payload_guess: List[Tuple[Dict[str, Any], Type[Packet]]] = [({}, <class 'scapy.contrib.mqttsn.MQTTSN'>)]
class scapy.contrib.mqttsn.MQTTSNGwInfo(_pkt, /, *, gw_id=0, gw_addr=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNGwInfo'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (MQTTSNGwInfo).gw_id>, <StrLenField (MQTTSNGwInfo).gw_addr>]
class scapy.contrib.mqttsn.MQTTSNPingReq(_pkt, /, *, client_id=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPingReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrLenField (MQTTSNPingReq).client_id>]
class scapy.contrib.mqttsn.MQTTSNPingResp(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPingResp'>, <class 'scapy.packet.Packet'>]
class scapy.contrib.mqttsn.MQTTSNPuback(_pkt, /, *, tid=0, mid=0, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPuback'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNPuback).tid>, <ShortField (MQTTSNPuback).mid>, <ByteEnumField (MQTTSNPuback).return_code>]
class scapy.contrib.mqttsn.MQTTSNPubcomp(_pkt, /, *, mid=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPubcomp'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNPubcomp).mid>]
class scapy.contrib.mqttsn.MQTTSNPublish(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, tid=0, mid=0, data=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPublish'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <ShortField (MQTTSNPublish).tid>, <ShortField (MQTTSNPublish).mid>, <StrLenField (MQTTSNPublish).data>]
class scapy.contrib.mqttsn.MQTTSNPubrec(_pkt, /, *, mid=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPubrec'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNPubrec).mid>]
class scapy.contrib.mqttsn.MQTTSNPubrel(_pkt, /, *, mid=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNPubrel'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNPubrel).mid>]
class scapy.contrib.mqttsn.MQTTSNRegack(_pkt, /, *, tid=0, mid=0, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNRegack'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNRegack).tid>, <ShortField (MQTTSNRegack).mid>, <ByteEnumField (MQTTSNRegack).return_code>]
class scapy.contrib.mqttsn.MQTTSNRegister(_pkt, /, *, tid=0, mid=0, topic_name=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNRegister'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNRegister).tid>, <ShortField (MQTTSNRegister).mid>, <StrLenField (MQTTSNRegister).topic_name>]
class scapy.contrib.mqttsn.MQTTSNSearchGW(_pkt, /, *, radius=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNSearchGW'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (MQTTSNSearchGW).radius>]
class scapy.contrib.mqttsn.MQTTSNSuback(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, tid=0, mid=0, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNSuback'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <ShortField (MQTTSNSuback).tid>, <ShortField (MQTTSNSuback).mid>, <ByteEnumField (MQTTSNSuback).return_code>]
class scapy.contrib.mqttsn.MQTTSNSubscribe(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, mid=0, tid=None, short_topic=None, topic_name=None)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNSubscribe'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <ShortField (MQTTSNSubscribe).mid>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.mqttsn.MQTTSNUnsuback(_pkt, /, *, mid=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNUnsuback'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (MQTTSNUnsuback).mid>]
class scapy.contrib.mqttsn.MQTTSNUnsubscribe(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, mid=0, tid=None, short_topic=None, topic_name=None)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNUnsubscribe'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <ShortField (MQTTSNUnsubscribe).mid>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.mqttsn.MQTTSNWillMsg(_pkt, /, *, will_msg=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillMsg'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrLenField (MQTTSNWillMsg).will_msg>]
class scapy.contrib.mqttsn.MQTTSNWillMsgReq(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillMsgReq'>, <class 'scapy.packet.Packet'>]
class scapy.contrib.mqttsn.MQTTSNWillMsgResp(_pkt, /, *, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillMsgResp'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (MQTTSNWillMsgResp).return_code>]
class scapy.contrib.mqttsn.MQTTSNWillMsgUpd(_pkt, /, *, will_msg=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillMsgUpd'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrLenField (MQTTSNWillMsgUpd).will_msg>]
class scapy.contrib.mqttsn.MQTTSNWillTopic(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, will_topic=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillTopic'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <StrLenField (MQTTSNWillTopic).will_topic>]
class scapy.contrib.mqttsn.MQTTSNWillTopicReq(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillTopicReq'>, <class 'scapy.packet.Packet'>]
class scapy.contrib.mqttsn.MQTTSNWillTopicResp(_pkt, /, *, return_code=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillTopicResp'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (MQTTSNWillTopicResp).return_code>]
class scapy.contrib.mqttsn.MQTTSNWillTopicUpd(_pkt, /, *, dup=0, qos=0, retain=0, will=0, cleansess=0, tid_type=0, will_topic=b'')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.mqttsn.MQTTSNWillTopicUpd'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).dup>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).qos>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).retain>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).will>, <BitField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).cleansess>, <BitEnumField (MQTTSNConnect,MQTTSNWillTopic,MQTTSNPublish,MQTTSNSubscribe,MQTTSNSuback,MQTTSNUnsubscribe,MQTTSNWillTopicUpd).tid_type>, <StrLenField (MQTTSNWillTopicUpd).will_topic>]
class scapy.contrib.mqttsn.RandVariableFieldLen[source]

Bases: RandNum

class scapy.contrib.mqttsn.VariableFieldLenField(*args, **kwargs)[source]

Bases: FieldLenField

MQTT-SN length field either has 1 byte for values [0x02, 0xff] or 3 bytes for values [0x0100, 0xffff]. If the first byte is 0x01 the length value comes in network byte-order in the next 2 bytes. MQTT-SN packets are at least 2 bytes long (length field + type field).

addfield(pkt, s, val)[source]
getfield(pkt, s)[source]
randval()[source]