name = "CtrlPDU" fields_desc = [ XByteField("optcode", 0), ByteEnumField("version", 0, BTLE_Versions), LEShortEnumField("Company", 0, BTLE_Corp_IDs), XShortField("subversion", 0) ] bind_layers(BTLE, BTLE_ADV, access_addr=0x8E89BED6) bind_layers(BTLE, BTLE_DATA) bind_layers(BTLE_ADV, BTLE_ADV_IND, PDU_type=0) bind_layers(BTLE_ADV, BTLE_ADV_DIRECT_IND, PDU_type=1) bind_layers(BTLE_ADV, BTLE_ADV_NONCONN_IND, PDU_type=2) bind_layers(BTLE_ADV, BTLE_SCAN_REQ, PDU_type=3) bind_layers(BTLE_ADV, BTLE_SCAN_RSP, PDU_type=4) bind_layers(BTLE_ADV, BTLE_CONNECT_REQ, PDU_type=5) bind_layers(BTLE_ADV, BTLE_ADV_SCAN_IND, PDU_type=6) bind_layers(BTLE_DATA, L2CAP_Hdr, LLID=2) # BTLE_DATA / L2CAP_Hdr / ATT_Hdr # LLID=1 -> Continue bind_layers(BTLE_DATA, CtrlPDU, LLID=3) conf.l2types.register(DLT_BLUETOOTH_LE_LL, BTLE) conf.l2types.register(DLT_BLUETOOTH_LE_LL_WITH_PHDR, BTLE_RF) bind_layers(BTLE_RF, BTLE) bind_layers(PPI, BTLE, dlt=147) addPPIType(30006, BTLE_PPI)
name = "CtrlPDU" fields_desc = [ XByteField("optcode", 0), ByteEnumField("version", 0, BTLE_Versions), LEShortEnumField("Company", 0, BTLE_Corp_IDs), XShortField("subversion", 0) ] bind_layers(BTLE, BTLE_ADV, access_addr=0x8E89BED6) bind_layers(BTLE, BTLE_DATA) bind_layers(BTLE_ADV, BTLE_ADV_IND, PDU_type=0) bind_layers(BTLE_ADV, BTLE_ADV_DIRECT_IND, PDU_type=1) bind_layers(BTLE_ADV, BTLE_ADV_NONCONN_IND, PDU_type=2) bind_layers(BTLE_ADV, BTLE_SCAN_REQ, PDU_type=3) bind_layers(BTLE_ADV, BTLE_SCAN_RSP, PDU_type=4) bind_layers(BTLE_ADV, BTLE_CONNECT_REQ, PDU_type=5) bind_layers(BTLE_ADV, BTLE_ADV_SCAN_IND, PDU_type=6) bind_layers(BTLE_DATA, L2CAP_Hdr, LLID=2) # BTLE_DATA / L2CAP_Hdr / ATT_Hdr # LLID=1 -> Continue bind_layers(BTLE_DATA, CtrlPDU, LLID=3) conf.l2types.register(DLT_BLUETOOTH_LE_LL, BTLE) conf.l2types.register(DLT_BLUETOOTH_LE_LL_WITH_PHDR, BTLE_RF) bind_layers(BTLE_RF, BTLE) bind_layers(PPI, BTLE, dlt=147) addPPIType(30006, BTLE_PPI)
_PPIDot11CommonChFlags = ['', '', '', '', 'Turbo', 'CCK', 'OFDM', '2GHz', '5GHz', # noqa: E501 'PassiveOnly', 'Dynamic CCK-OFDM', 'GSFK'] _PPIDot11CommonPktFlags = ['FCS', 'TSFT_ms', 'FCS_Invalid', 'PHY_Error'] # PPI 802.11 Common Field Header class Dot11Common(Packet): name = "PPI 802.11-Common" fields_desc = [LEShortField('pfh_type', PPI_DOT11COMMON), LEShortField('pfh_length', 20), PPITSFTField('TSF_Timer', 0), FlagsField('Pkt_Flags', 0, -16, _PPIDot11CommonPktFlags), LEShortField('Rate', 0), LEShortField('Ch_Freq', 0), FlagsField('Ch_Flags', 0, -16, _PPIDot11CommonChFlags), ByteField('FHSS_Hop', 0), ByteField('FHSS_Pat', 0), dBmByteField('Antsignal', -128), dBmByteField('Antnoise', -128)] def extract_padding(self, p): return b"", p # Hopefully other CACE defined types will be added here. # Add the dot11common layer to the PPI array addPPIType(PPI_DOT11COMMON, Dot11Common)
HCSINullField("Reserved21", None), # noqa: E501 HCSINullField("Reserved22", None), HCSINullField("Reserved23", None), # noqa: E501 HCSINullField("Reserved24", None), HCSINullField("Reserved25", None), # noqa: E501 HCSIDescField("SerialNumber", None), HCSIDescField("ModelName", None), # noqa: E501 HCSIDescField("DescString", None), XLEIntField("AppId", None), HCSIAppField("AppData", None), HCSINullField("Extended", None) ] class Antenna(HCSIPacket): name = "PPI Antenna" fields_desc = [ LEShortField('pfh_type', PPI_ANTENNA), # pfh_type LEShortField('pfh_length', None), # pfh_len ByteField('geotag_ver', CURR_GEOTAG_VER), # base_geotag_header.ver # noqa: E501 ByteField('geotag_pad', 0), # base_geotag_header.pad LEShortField('geotag_len', None) ] + _HCSIBuildFields(ANT_Fields) # noqa: E501 addPPIType(PPI_GPS, GPS) addPPIType(PPI_VECTOR, Vector) addPPIType(PPI_SENSOR, Sensor) addPPIType(PPI_ANTENNA, Antenna)
Fixed3_6Field("HorizBw", None), Fixed3_6Field("VertBw", None), Fixed3_6Field("PrecisionGain", None), XLEShortField("BeamID", None), # noqa: E501 HCSINullField("Reserved06", None), HCSINullField("Reserved07", None), # noqa: E501 HCSINullField("Reserved08", None), HCSINullField("Reserved09", None), # noqa: E501 HCSINullField("Reserved10", None), HCSINullField("Reserved11", None), # noqa: E501 HCSINullField("Reserved12", None), HCSINullField("Reserved13", None), # noqa: E501 HCSINullField("Reserved14", None), HCSINullField("Reserved15", None), # noqa: E501 HCSINullField("Reserved16", None), HCSINullField("Reserved17", None), # noqa: E501 HCSINullField("Reserved18", None), HCSINullField("Reserved19", None), # noqa: E501 HCSINullField("Reserved20", None), HCSINullField("Reserved21", None), # noqa: E501 HCSINullField("Reserved22", None), HCSINullField("Reserved23", None), # noqa: E501 HCSINullField("Reserved24", None), HCSINullField("Reserved25", None), # noqa: E501 HCSIDescField("SerialNumber", None), HCSIDescField("ModelName", None), # noqa: E501 HCSIDescField("DescString", None), XLEIntField("AppId", None), HCSIAppField("AppData", None), HCSINullField("Extended", None)] class Antenna(HCSIPacket): name = "PPI Antenna" fields_desc = [LEShortField('pfh_type', PPI_ANTENNA), # pfh_type LEShortField('pfh_length', None), # pfh_len ByteField('geotag_ver', CURR_GEOTAG_VER), # base_geotag_header.ver # noqa: E501 ByteField('geotag_pad', 0), # base_geotag_header.pad LEShortField('geotag_len', None)] + _HCSIBuildFields(ANT_Fields) # noqa: E501 addPPIType(PPI_GPS, GPS) addPPIType(PPI_VECTOR, Vector) addPPIType(PPI_SENSOR, Sensor) addPPIType(PPI_ANTENNA, Antenna)