scapy.contrib.eddystone

scapy.contrib.eddystone - Google Eddystone Bluetooth LE proximity beacons.

The Eddystone specification can be found at: https://github.com/google/eddystone/blob/master/protocol-specification.md

These beacons are used as building blocks for other systems:

class scapy.contrib.eddystone.EddystoneURLField(name: str, default: I | None, fmt: str = 'H', remain: int = 0)[source]

Bases: StrField

any2i(pkt, x)[source]
i2m(pkt, x)[source]
m2i(pkt, x)[source]
class scapy.contrib.eddystone.Eddystone_EID(_pkt, /, *, tx_power=0, eid=None)[source]

Bases: Packet

An Eddystone type for transmitting encrypted, ephemeral identifiers.

This implementation does not support decrypting this data.

https://github.com/google/eddystone/tree/master/eddystone-eid

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_EID'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<SignedByteField (Eddystone_EID).tx_power>, <StrFixedLenField (Eddystone_EID).eid>]
class scapy.contrib.eddystone.Eddystone_Frame(_pkt, /, *, type=None, reserved=0)[source]

Bases: Packet, LowEnergyBeaconHelper

The base Eddystone frame on which all Eddystone messages are built.

https://github.com/google/eddystone/blob/master/protocol-specification.md

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_Frame'>, <class 'scapy.packet.Packet'>]
build_eir()[source]

Builds a list of EIR messages to wrap this frame.

fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (Eddystone_Frame).type>, <BitField (Eddystone_Frame).reserved>]
payload_guess: List[Tuple[Dict[str, Any], Type[Packet]]] = [({'type': 0}, <class 'scapy.contrib.eddystone.Eddystone_UID'>), ({'type': 1}, <class 'scapy.contrib.eddystone.Eddystone_URL'>), ({'type': 2}, <class 'scapy.contrib.eddystone.Eddystone_TLM'>), ({'type': 3}, <class 'scapy.contrib.eddystone.Eddystone_EID'>)]
class scapy.contrib.eddystone.Eddystone_TLM(_pkt, /, *, version=None)[source]

Bases: Packet

An Eddystone type for transmitting beacon telemetry information.

https://github.com/google/eddystone/tree/master/eddystone-tlm

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_TLM'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (Eddystone_TLM).version>]
payload_guess: List[Tuple[Dict[str, Any], Type[Packet]]] = [({'version': 0}, <class 'scapy.contrib.eddystone.Eddystone_TLM_Unencrypted'>), ({'version': 1}, <class 'scapy.contrib.eddystone.Eddystone_TLM_Encrypted'>)]
class scapy.contrib.eddystone.Eddystone_TLM_Encrypted(_pkt, /, *, etlm=None, salt=None, mic=None)[source]

Bases: Packet

A subtype of Eddystone-TLM for transmitting telemetry in encrypted form.

This implementation does not support decrypting this data.

https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-encrypted.md

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_TLM_Encrypted'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrFixedLenField (Eddystone_TLM_Encrypted).etlm>, <StrFixedLenField (Eddystone_TLM_Encrypted).salt>, <StrFixedLenField (Eddystone_TLM_Encrypted).mic>]
class scapy.contrib.eddystone.Eddystone_TLM_Unencrypted(_pkt, /, *, batt_mv=0, temperature=-32768, adv_cnt=None, sec_cnt=None)[source]

Bases: Packet

A subtype of Eddystone-TLM for transmitting telemetry in unencrypted form.

https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_TLM_Unencrypted'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (Eddystone_TLM_Unencrypted).batt_mv>, <FixedPointField (Eddystone_TLM_Unencrypted).temperature>, <IntField (Eddystone_TLM_Unencrypted).adv_cnt>, <IntField (Eddystone_TLM_Unencrypted).sec_cnt>]
class scapy.contrib.eddystone.Eddystone_UID(_pkt, /, *, tx_power=0, namespace=None, instance=None, reserved=None)[source]

Bases: Packet

An Eddystone type for transmitting a unique identifier.

https://github.com/google/eddystone/tree/master/eddystone-uid

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_UID'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<SignedByteField (Eddystone_UID).tx_power>, <StrFixedLenField (Eddystone_UID).namespace>, <StrFixedLenField (Eddystone_UID).instance>, <StrFixedLenField (Eddystone_UID).reserved>]
class scapy.contrib.eddystone.Eddystone_URL(_pkt, /, *, tx_power=0, url_scheme=0, url=None)[source]

Bases: Packet

An Eddystone type for transmitting a URL (to a web page).

https://github.com/google/eddystone/tree/master/eddystone-url

aliastypes = [<class 'scapy.contrib.eddystone.Eddystone_URL'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<SignedByteField (Eddystone_URL).tx_power>, <ByteEnumField (Eddystone_URL).url_scheme>, <EddystoneURLField (Eddystone_URL).url>]
static from_url(url)[source]

Creates an Eddystone_Frame with a Eddystone_URL for a given URL.

to_url()[source]