Logo del progetto fl3xbl0w

Curiosità di Bowflex - fl3xbl0w

Pubblicato il 28 mag 2022

Progetto di ingegneria inversa. È iniziato con il tapis roulant Bowflex Treadmill 22 ma si è poi generalizzato per qualsiasi macchina con Android venduta da Nautilus Inc. (Nautilus, Bowflex, Schwinn).

Il file /sdcard/Pictures/nautilus

Decompilando NautilusLauncher puoi vedere riferimenti a questo percorso specifico:

// percorso: com/nautilus/nautiluslauncher/LauncherService.java
public void run() {
  if (!new File("/sdcard/Pictures/nautilus").exists()) {
    LauncherService.access$000(LauncherService.this).disableAdbDebug();
    LauncherService.access$000(LauncherService.this).enterKioskMode();
    return;
  }
  LauncherService.access$000(LauncherService.this).enableAdbDebug();
}
// percorso: com/nautilus/nautiluslauncher/MainActivity.java
protected void onCreate(Bundle bundle) {
  // ...
  if (!new File("/sdcard/Pictures/nautilus").exists()) {
    this.mPlatformControl.disableAdbDebug();
    this.mPlatformControl.enterKioskMode();
  } else {
    this.mPlatformControl.enableAdbDebug();
  }
  // ...
}

L’effetto di posizionare il file nel posto giusto è che NautilusLauncher attiverà adb dopo ogni riavvio. Se il file NON è presente, NautilusLauncher DISATTIVERÀ attivamente adb (se era stato abilitato in precedenza).

Il file /sdcard/Nautilus/redbend/Credentials.txt

A quanto pare, Red Bend Software (acquisito da Harman, ora capisco perché ci sono così tanti riferimenti a KNOX) sta fornendo servizi OTA per l’hardware di Nautilus. Ho trovato alcuni riferimenti a quel file all’interno di com.redbend.client.apk.

package com.redbend.client;
public class Ipl {
  protected static final String AUTO_SELF_REG_FILE_PATH = "Credentials.txt";
  // ...
  public static int iplGetAutoSelfRegDomainInfo(Context context, String[] strArr) {
    // ...
    File file = new File("/sdcard/Nautilus/redbend/");
    if (!file.exists()) {
      file.mkdirs();
    }
    copyAssets(context, "Credentials.txt", file.getCanonicalPath());
    bufferedReader = new BufferedReader(new FileReader(new File(file.getAbsoluteFile(), "Credentials.txt")));
    // ...
  }
  // ...
}

Anche in com.redbend.client.ClientService possiamo trovare:

// ...
public class ClientService extends SmmService {
  // ...
  @Override // com.redbend.app.SmmService, android.app.Service
  public void onCreate() {
    // ...
    if (Ipl.iplGetAutoSelfRegDomainInfo(this, strArr) == 0) {
      sendEvent(new Event("D2B_AUTO_SELF_REG_INFO").addVar(new EventVar("DMA_VAR_AUTO_SELF_REG_DOMAIN_NAME", strArr[0])).addVar(new EventVar("DMA_VAR_AUTO_SELF_REG_DOMAIN_PIN", strArr[1])));
      }
    // ...
  }
  // ...
}

Dati questi elementi, possiamo etichettare il contenuto nel file /sdcard/Nautilus/redbend/Credentials.txt come:

Prima riga: DOMAIN_NAME
Seconda riga: DOMAIN_PIN

DOMAIN_PIN sembra essere un vero codice PIN poiché è un numero di sei cifre.

Ci sono alcune credenziali all’interno della “Rete Red Bend” per associare una macchina a un marchio/prodotto specifico per gli aggiornamenti OTA. Spero che queste credenziali siano IDENTICHE in tutto l’hardware di Nautilus. Il file è incluso all’interno dell’APK com.redbend.client e viene estratto durante l’installazione.

Ho trovato riferimenti a com.redbend.client qui, ed è stato abbastanza divertente vedere che si bloccava in un’auto. Spero che non fallisca così spesso anche nelle nostre macchine.

Monitor Bluetooth della Frequenza Cardiaca

Questo è stato abbastanza semplice da decifrare. Il nome Bluetooth appare come CL831-xxxxxxx (numero nascosto) di CHILEAF.

Scansionandolo attraverso nRF Connect è stata esposta l’indirizzo MAC del dispositivo e alcuni dati chiave:

Frequenza Cardiaca:
UUID: 0x180D
Misurazione della Frequenza Cardiaca
UUID: 0x2A37

Sembrava abbastanza standard, e un post della Community di Home Assistant aveva già scoperto questo (non lo stesso modello, ma sembra che il Monitor della Frequenza Cardiaca utilizzi un protocollo standard). Ho creato un file di configurazione ESPHome qui come prova di concetto:

Screenshot di Home Assistant che mostra un sensore di frequenza cardiaca
Contenuto tradotto da gpt-4-1106-preview

©2022-2024 Sebastián Barrenechea. Tutti i diritti riservati.

Costruito con Astro v4.15.9.