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).
Questo metodo dipende dal fatto che le specifiche della console Bowflex siano troppo lente per il software odierno (ha solo 2Gb di RAM sulla scheda Android). A causa di ciò, e se siamo più veloci del tablet, possiamo effettuare il jailbreak dal AppMonitorService
di Nautilus.
Si potrebbe chiamare un attacco di forza bruta?
Puoi riavviare la macchina in qualsiasi momento del processo, e tutto sarà come dovrebbe. Non c’è rischio sul lato del software per farlo. Dàgli una prova!
Ho usato un Logitech K600, ma qualsiasi tastiera con quei tasti dovrebbe funzionare:
Le tastiere Bluetooth sembrano non poter essere accoppiate tramite JRNY.
Prima di tutto, accendiamo la macchina e colleghiamo la tastiera USB alla console Bowflex. La puoi trovare sul lato destro:
Assicuriamoci che la tastiera funzioni premendo il pulsante “Home” sulla tastiera. Dovrebbe far riavviare l’app JRNY.
Android ha una scorciatoia per chiudere l’app corrente tramite il pulsante “Back” se lo tieni premuto per un secondo o giù di lì. Giochiamo un po’ con il pulsante “Back” - continuiamo a chiudere l’app JRNY non appena si riapre fino a quando non inizia a comparire un nuovo dialogo:
Ok, ora la parte divertente: Quel dialogo appartiene al “sistema di verifica dei guasti” di Android stock. Abbiamo appena “forzato Android a pensare” che NautilusLauncher non va bene (bene!). Sfruttiamo quel dialogo.
Non appena appare, tocca su “Informazioni app”. Cliccando su “Informazioni app” apriremo l’app Impostazioni (che è nella lista dei negati di AppMonitorService
). Si chiuderà in circa un secondo, quindi dobbiamo essere veloci! Tocca il pulsante “FORCE STOP”, e poi tocca su “OK”.
Non appena puoi cliccare su “OK”, puoi riposarti (bel esercizio, eh?). Ora procediamo con le scoperte su Reddit. Abilitiamo adb cliccando sull’icona della “lente di ingrandimento” nell’angolo in alto a destra e cercando “Opzioni sviluppatore”:
Trova l’indirizzo IP della Console. Il modo più semplice è tramite le Impostazioni Wi-Fi:
Ora che adb è abilitato e abbiamo l’indirizzo IP, passiamo a un computer e connettiamoci con adb. Apri un terminale ed esegui adb connect <Indirizzo IP>
(nel mio caso 10.0.0.205):
> adb connect 10.0.0.205
connected to 10.0.0.205:5555
Ti verrà chiesta una conferma sullo schermo la prima volta che ti connetti in remoto tramite adb.
Creiamo un file vuoto all’interno di /sdcard/Pictures/
chiamato nautilus
. Puoi leggere di più sul “perché” in Curiosità di Bowflex.
> adb shell touch /sdcard/Pictures/nautilus
Ora ripristiniamo alcune funzionalità. Invia i seguenti comandi tramite il tuo terminale:
> adb shell settings put secure ntls_launcher_preference 0
> adb shell settings put secure navigationbar_switch 1
> adb shell settings put secure notification_switch 1
> adb shell settings put secure statusbar_switch 1
Vedrai apparire l’interfaccia utente:
C’è un passo finale - cambiare l’app di avvio predefinita. Cerca “App predefinite” e imposta Quickstep come app di avvio:
Ora sei libero!
Questo stato si manterrà finché NautilusLauncher sarà forzato a fermarsi. Persiste attraverso i riavvii.
Se vuoi tornare a “stock” basta aprire l’app NautilusLauncher
(ti suggerisco fortemente di aver creato il file /sdcard/Pictures/nautilus
in anticipo):
NautilusLauncher
è il “launcher di Android” predefinito, il che significa che se l’app JRNY si chiude, si riaprirà immediatamente.
C’è anche un altro “blocco di sicurezza”, un servizio in primo piano nell’apk di NautilusLauncher
, chiamato AppMonitorService
. Decompilando l’apk, puoi vedere tre variabili interessanti:
public static final int MonitorIntervalSeconds = 1;
// Altre variabili
private static String[] TargtedAppsToKill = {"com.android.vending", "com.android.settings", "com.android.chrome", "com.google.android.gm", "com.google.android.youtube"};
private static String[] TargtedAppsToBackground = {"com.google.android.googlequicksearchbox:interactor", "com.google.android.googlequicksearchbox:search", "com.google.android.googlequicksearchbox", "com.android.launcher3", "com.google.android.inputmethod.latin"};
E così quel servizio sta “proteggendo attivamente” il blocco. Ad ogni chiusura dell’app (attraverso il mantenimento premuto del pulsante “Back”), ci sarà un tentativo di riaprire JRNY. Forzando la sua chiusura, disattiviamo anche tutti i servizi in primo piano.
(gli errori di battitura che potresti vedere nei frammenti di codice provengono dagli stessi sviluppatori di Nautilus, non miei)
©2022-2024 Sebastián Barrenechea. Tutti i diritti riservati.
Costruito con Astro v4.16.13.