visit
Disclaimer:
The content provided on this blog regarding the reverse engineering of a smartwatch is intended solely for educational and informational purposes. It is not meant to encourage or promote any illegal, malicious, or unethical activities. The techniques and analyses shared are for understanding how these devices operate and should be used responsibly.
Digging a bit deeper, I discovered .proto files being used to populate the data received from the watch and display it in the app’s UI. The code is dynamic, and it can connect to any noisefit pro 4
watch nearby. I’m not going to share the complete code at the moment but below is a sneak peek.
async def noisefit_4_pro() -> None:
"""Search device and perform operation of getting basic data"""
limit = 50
retry = 0
try:
cprint.header(f"Searching for noisefit watch ...")
devices = await discover()
this_device = None
if len(devices):
devices_set = list(set(devices))
this_device = devices_set[0]
cprint.info(f"Total noisefit watch found: {len(devices_set)}")
cprint.info(f"Devices: {devices_set}")
if this_device is None:
cprint.error(f"No noisefit watch found. Please make sure your watch is not connected to other device. Exiting!")
return
cprint.warning(f"Trying connecting to {this_device.name} {this_device.address} ...")
except AttributeError as ae:
cprint.error(f"Failed to connect to Watch. Please check if Watch is not connected to other device.")
cprint.error(f"{ae}")
return
# get basic data
await get_basic_data(this_device, retry, limit)