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.
/sdcard/Pictures/nautilus
DateiBeim 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).
/sdcard/Nautilus/redbend/Credentials.txt
DateiEs 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.
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:
©2022-2024 Sebastian Barrenechea. Alle Rechte vorbehalten.
Erstellt mit Astro v4.16.13.