scapy.contrib.nrf_sniffer
nRF sniffer
Firmware and documentation related to this module is available at: https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer https://github.com/adafruit/Adafruit_BLESniffer_Python https://github.com/wireshark/wireshark/blob/master/epan/dissectors/packet-nordic_ble.c
- class scapy.contrib.nrf_sniffer.NRF2_Packet_Event(_pkt, /, *, header_len=10, reserved=0, phy=None, mic=None, encrypted=None, direction=None, crc_ok=1, rf_channel=0, rssi=-256, event_counter=0, delta_time=0)[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.nrf_sniffer.NRF2_Packet_Event'>, <class 'scapy.packet.Packet'>]
- fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (NRF2_Packet_Event).header_len>, <BitField (NRF2_Packet_Event).reserved>, <BitEnumField (NRF2_Packet_Event).phy>, <BitField (NRF2_Packet_Event).mic>, <BitField (NRF2_Packet_Event).encrypted>, <BitField (NRF2_Packet_Event).direction>, <BitField (NRF2_Packet_Event).crc_ok>, <ByteField (NRF2_Packet_Event).rf_channel>, <ScalingField (NRF2_Packet_Event).rssi>, <LEShortField (NRF2_Packet_Event).event_counter>, <LEIntField (NRF2_Packet_Event).delta_time>]
- class scapy.contrib.nrf_sniffer.NRF2_Ping_Request(_pkt, /)[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.nrf_sniffer.NRF2_Ping_Request'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.nrf_sniffer.NRF2_Ping_Response(_pkt, /, *, version=None)[source]
Bases:
Packet- aliastypes = [<class 'scapy.contrib.nrf_sniffer.NRF2_Ping_Response'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.nrf_sniffer.NRFS2_PCAP(_pkt, /, *, board_id=0)[source]
Bases:
PacketPCAP headers for DLT_NORDIC_BLE.
Nordic’s capture scripts either stick the COM port number (yep!) or a random number at the start of every packet.
https://github.com/wireshark/wireshark/blob/master/epan/dissectors/packet-nordic_ble.c
The only “rule” is that we can’t start packets with
BE EF, otherwise it becomes a “0.9.7” packet. So we just set “0” here.- aliastypes = [<class 'scapy.contrib.nrf_sniffer.NRFS2_PCAP'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.nrf_sniffer.NRFS2_Packet(_pkt, /, *, len=None, version=2, counter=None, type=None)[source]
Bases:
PacketnRF Sniffer v2 Packet
- aliastypes = [<class 'scapy.contrib.nrf_sniffer.NRFS2_Packet'>, <class 'scapy.packet.Packet'>]
- fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<LenField (NRFS2_Packet).len>, <ByteField (NRFS2_Packet).version>, <LEShortField (NRFS2_Packet).counter>, <ByteEnumField (NRFS2_Packet).type>]