fl3xbl0w Projektlogo

Bowflex Eigenheiten - fl3xbl0w

Veröffentlicht am 28. Mai 2022

Reverse-Engineering-Projekt. Es begann mit dem Bowflex Laufband 22, wurde aber verallgemeinert für jede von Nautilus Inc. (Nautilus, Bowflex, Schwinn) verkaufte Android-Maschine.

Die /sdcard/Pictures/nautilus Datei

Beim Dekompilieren von NautilusLauncher können Sie Verweise auf diesen spezifischen Pfad sehen:

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

Die Wirkung des Platzierens der Datei an ihrem Platz ist, dass NautilusLauncher adb nach jedem Neustart aktivieren wird. Wenn die Datei NICHT vorhanden ist, wird NautilusLauncher adb AKTIV DEAKTIVIEREN (falls es zuvor aktiviert war).

Die /sdcard/Nautilus/redbend/Credentials.txt Datei

Es scheint, dass Red Bend Software (übernommen von Harman, jetzt verstehe ich warum so viele Verweise auf KNOX) OTA-Dienste für Nautilus-Hardware bereitstellt. Ich fand einige Verweise auf diese Datei innerhalb von 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")));
    // ...
  }
  // ...
}

Auch in com.redbend.client.ClientService können wir finden:

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

Angesichts dieser Informationen können wir den Inhalt in der Datei /sdcard/Nautilus/redbend/Credentials.txt als:

Erste Zeile: DOMAIN_NAME
Zweite Zeile: DOMAIN_PIN

DOMAIN_PIN scheint ein echter PIN-Code zu sein, da es sich um eine sechsstellige Zahl handelt.

Es gibt einige Anmeldeinformationen innerhalb des “Red Bend Network”, um eine Maschine mit einer bestimmten Marke/einem bestimmten Produkt für OTA-Updates zu verknüpfen. Ich hoffe, dass diese Anmeldeinformationen IDENTISCH über alle Nautilus-Hardware sind. Die Datei ist innerhalb der com.redbend.client APK enthalten und wird bei der Installation extrahiert.

Ich fand Verweise auf com.redbend.client hier, und ich fand es ziemlich lustig, es in einem Auto abstürzen zu sehen. Ich hoffe, es versagt nicht so oft in unseren Maschinen.

Bluetooth Herzfrequenzmesser

Dieser war ziemlich einfach zu entschlüsseln. Der Bluetooth-Name erscheint als CL831-xxxxxxx (Nummer versteckt) von CHILEAF.

Beim Scannen durch nRF Connect wurden die MAC-Adresse des Geräts und einige Schlüsseldaten preisgegeben:

Herzfrequenz:
UUID: 0x180D
Herzfrequenzmessung
UUID: 0x2A37

Es schien ziemlich standardmäßig zu sein, und ein Beitrag aus der Home Assistant Community hatte dies bereits herausgefunden (nicht das gleiche Modell, aber es scheint, dass der Herzfrequenzmesser ein Standardprotokoll verwendet). Ich habe eine ESPHome-Konfigurationsdatei hier als Proof of Concept erstellt:

Home Assistant Screenshot, der einen Herzfrequenzsensor zeigt
Inhalt übersetzt von gpt-4-1106-preview

©2022-2024 Sebastian Barrenechea. Alle Rechte vorbehalten.

Erstellt mit Astro v4.15.9.