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).
/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).
/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.
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:
©2022-2024 Sebastián Barrenechea. Tutti i diritti riservati.
Costruito con Astro v4.16.13.