mirror of
https://github.com/smittix/intercept.git
synced 2026-07-27 18:18:10 -07:00
Fix bytes conversion in fallback Bluetooth scanner
Handle various data types safely when converting manufacturer_data and service_data in the bleak fallback scanner. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -144,14 +144,35 @@ class BleakScanner:
|
|||||||
if adv_data.manufacturer_data:
|
if adv_data.manufacturer_data:
|
||||||
for mid, mdata in adv_data.manufacturer_data.items():
|
for mid, mdata in adv_data.manufacturer_data.items():
|
||||||
manufacturer_id = mid
|
manufacturer_id = mid
|
||||||
manufacturer_data = bytes(mdata)
|
# Handle various data types safely
|
||||||
|
try:
|
||||||
|
if isinstance(mdata, (bytes, bytearray)):
|
||||||
|
manufacturer_data = bytes(mdata)
|
||||||
|
elif isinstance(mdata, (list, tuple)):
|
||||||
|
manufacturer_data = bytes(mdata)
|
||||||
|
elif isinstance(mdata, str):
|
||||||
|
manufacturer_data = bytes.fromhex(mdata)
|
||||||
|
else:
|
||||||
|
manufacturer_data = bytes(mdata)
|
||||||
|
except (TypeError, ValueError) as e:
|
||||||
|
logger.debug(f"Could not convert manufacturer data: {e}")
|
||||||
break
|
break
|
||||||
|
|
||||||
# Extract service data
|
# Extract service data
|
||||||
service_data = {}
|
service_data = {}
|
||||||
if adv_data.service_data:
|
if adv_data.service_data:
|
||||||
for uuid, data in adv_data.service_data.items():
|
for uuid, data in adv_data.service_data.items():
|
||||||
service_data[str(uuid)] = bytes(data)
|
try:
|
||||||
|
if isinstance(data, (bytes, bytearray)):
|
||||||
|
service_data[str(uuid)] = bytes(data)
|
||||||
|
elif isinstance(data, (list, tuple)):
|
||||||
|
service_data[str(uuid)] = bytes(data)
|
||||||
|
elif isinstance(data, str):
|
||||||
|
service_data[str(uuid)] = bytes.fromhex(data)
|
||||||
|
else:
|
||||||
|
service_data[str(uuid)] = bytes(data)
|
||||||
|
except (TypeError, ValueError) as e:
|
||||||
|
logger.debug(f"Could not convert service data for {uuid}: {e}")
|
||||||
|
|
||||||
return BTObservation(
|
return BTObservation(
|
||||||
timestamp=datetime.now(),
|
timestamp=datetime.now(),
|
||||||
|
|||||||
Reference in New Issue
Block a user