Skip to content

Commit 23ec287

Browse files
committed
Fix for Extended Advertisement decryption (part 2)
1 parent 7f1e998 commit 23ec287

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

custom_components/ble_monitor/__init__.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,8 @@ def parse_raw_message(self, data):
468468
data[xiaomi_index + 7:xiaomi_index + 8]
469469
]
470470
)
471-
encrypted_payload = data[xdata_point:msg_length - int(not is_ext_packet)]
471+
endoffset = msg_length - int(not is_ext_packet)
472+
encrypted_payload = data[xdata_point:endoffset]
472473
aad = b"\x11"
473474
token = encrypted_payload[-4:]
474475
payload_counter = encrypted_payload[-7:-4]
@@ -493,8 +494,11 @@ def parse_raw_message(self, data):
493494
)
494495
return None, None, None
495496
# replace cipher with decrypted data
496-
msg_length -= len(data[xdata_point:msg_length - 1])
497-
data = b"".join((data[:xdata_point], decrypted_payload, data[-1:]))
497+
msg_length -= len(encrypted_payload)
498+
if is_ext_packet:
499+
data = b"".join((data[:xdata_point], decrypted_payload))
500+
else:
501+
data = b"".join((data[:xdata_point], decrypted_payload, data[-1:]))
498502
msg_length += len(decrypted_payload)
499503
result = {
500504
"rssi": rssi,

0 commit comments

Comments
 (0)