Skip to content

Commit cfc3532

Browse files
bluetooth: Add LE Bluetooth Device Address EIR (#4621)
1 parent a4c6e26 commit cfc3532

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

scapy/layers/bluetooth.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,6 +1270,18 @@ class EIR_AdvertisingInterval(EIR_Element):
12701270
]
12711271

12721272

1273+
class EIR_LEBluetoothDeviceAddress(EIR_Element):
1274+
name = "LE Bluetooth Device Address"
1275+
fields_desc = [
1276+
XBitField('reserved', 0, 7, tot_size=-1),
1277+
BitEnumField('addr_type', 0, 1, end_tot_size=-1, enum={
1278+
0x0: 'Public',
1279+
0x1: 'Random'
1280+
}),
1281+
LEMACField('bd_addr', None)
1282+
]
1283+
1284+
12731285
class EIR_Appearance(EIR_Element):
12741286
name = "EIR_Appearance"
12751287
fields_desc = [
@@ -2659,6 +2671,7 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
26592671
bind_layers(EIR_Hdr, EIR_PublicTargetAddress, type=0x17)
26602672
bind_layers(EIR_Hdr, EIR_Appearance, type=0x19)
26612673
bind_layers(EIR_Hdr, EIR_AdvertisingInterval, type=0x1a)
2674+
bind_layers(EIR_Hdr, EIR_LEBluetoothDeviceAddress, type=0x1b)
26622675
bind_layers(EIR_Hdr, EIR_ServiceData32BitUUID, type=0x20)
26632676
bind_layers(EIR_Hdr, EIR_ServiceData128BitUUID, type=0x21)
26642677
bind_layers(EIR_Hdr, EIR_URI, type=0x24)

test/scapy/layers/bluetooth.uts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,12 @@ p = HCI_Event_Hdr(hex_bytes('3e23020100002e4961121110170201060f0954656c655361742
481481
assert EIR_AdvertisingInterval in p
482482
assert p[EIR_AdvertisingInterval].advertising_interval == 400
483483

484+
= Parse EIR_LEBluetoothDeviceAddress
485+
p = HCI_Event_Hdr(hex_bytes("3e2a02010000d93519d7ba4c1e0201020affc4000734151317fd80081b00d93519d7ba4c0303b9fe020ad4ad"))
486+
assert EIR_LEBluetoothDeviceAddress in p
487+
assert p[EIR_LEBluetoothDeviceAddress].addr_type == 0x0
488+
assert p[EIR_LEBluetoothDeviceAddress].bd_addr == '4c:ba:d7:19:35:d9'
489+
484490
= Parse EIR_Appearance
485491
p = BTLE(hex_bytes("d6be898e201660d4d3cebffb0201050319420c0303e7fe040948393850c27c"))
486492
assert EIR_Appearance in p

0 commit comments

Comments
 (0)