Logo del proyecto fl3xbl0w

Curiosidades de Bowflex - fl3xbl0w

Lanzado el 28 may 2022

Proyecto de ingeniería inversa. Comenzó con la trotadora Bowflex Treadmill 22 pero terminó generalizándose para cualquier máquina con Android vendida por Nautilus Inc. (Nautilus, Bowflex, Schwinn).

El archivo /sdcard/Pictures/nautilus

Al descompilar NautilusLauncher puedes ver referencias a esa ruta específica:

// ruta: 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();
}
// ruta: 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();
  }
  // ...
}

El efecto de colocar el archivo en su lugar es que NautilusLauncher activará adb después de cada reinicio. Si el archivo NO está en su lugar, NautilusLauncher DESACTIVARÁ activamente adb (si estaba habilitado anteriormente).

El archivo /sdcard/Nautilus/redbend/Credentials.txt

Por lo que parece, Red Bend Software (adquirido por Harman, ahora entiendo por qué tantas referencias a KNOX) está proporcionando servicios OTA para el hardware de Nautilus. He encontrado algunas referencias a ese archivo dentro de 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")));
    // ...
  }
  // ...
}

También en com.redbend.client.ClientService podemos encontrar:

// ...
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])));
      }
    // ...
  }
  // ...
}

Dada esa información, podemos etiquetar el contenido en el archivo /sdcard/Nautilus/redbend/Credentials.txt como:

Primera línea: DOMAIN_NAME
Segunda línea: DOMAIN_PIN

DOMAIN_PIN parece ser un código pin real ya que es un número de seis dígitos.

Hay algunas credenciales dentro de la “Red Bend Network” para asociar una máquina con una marca/producto específicos para actualizaciones OTA. Espero que esas credenciales sean IDÉNTICAS dentro de todo el hardware de Nautilus. El archivo viene incluido dentro del APK com.redbend.client y se extrae al instalarlo.

Encontré referencias de com.redbend.client aquí, y me pareció bastante gracioso ver que se estrellaba en un auto. Espero que no falle tan a menudo en nuestras máquinas también.

Monitor de Ritmo Cardíaco Bluetooth

Este fue bastante fácil de descifrar. El nombre Bluetooth aparece como CL831-xxxxxxx (número oculto) de CHILEAF.

Al escanearlo a través de nRF Connect se expuso la dirección MAC del dispositivo y algunos datos clave:

Ritmo Cardíaco:
UUID: 0x180D
Medición del Ritmo Cardíaco
UUID: 0x2A37

Parecía bastante estándar, y un post de la Comunidad de Home Assistant ya había descubierto esto (no el mismo modelo, pero parece que el Monitor de Ritmo Cardíaco usa un protocolo estándar). He creado un archivo de configuración de ESPHome aquí como prueba de concepto:

Captura de pantalla de Home Assistant mostrando un sensor de ritmo cardíaco

©2022-2024 Sebastián Barrenechea. Todos los derechos reservados.

Construido con Astro v4.16.13.