リバースエンジニアリングプロジェクト。Bowflex Treadmill 22から始まりましたが、最終的にはNautilus Inc.(Nautilus、Bowflex、Schwinn)が販売するすべてのAndroidマシンに一般化されました。
/sdcard/Pictures/nautilus
ファイルNautilusLauncher
を逆コンパイルすると、その特定のパスへの参照が見られます:
// path: 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();
}
// path: 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();
}
// ...
}
このファイルを所定の場所に配置すると、NautilusLauncher
は再起動後にadbを有効にします。ファイルが存在しない場合、NautilusLauncher
はadbを積極的に無効にします(以前に有効化されていた場合でも)。
/sdcard/Nautilus/redbend/Credentials.txt
ファイルRed Bend Software(Harmanに買収されました。これでKNOXへの多くの参照が理解できました)が、Nautilusハードウェア向けにOTAサービスを提供しているようです。このファイルへの参照が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")));
// ...
}
// ...
}
また、com.redbend.client.ClientService
内にも以下のような記述があります:
// ...
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])));
}
// ...
}
// ...
}
この情報に基づいて、ファイル /sdcard/Nautilus/redbend/Credentials.txt
の内容は次のようにラベル付けできます:
1行目: DOMAIN_NAME
2行目: DOMAIN_PIN
DOMAIN_PIN
は実際のピンコードで、6桁の数字です。
「Red Bend Network」内のいくつかの資格情報が、特定のブランド/製品とマシンをOTAアップデート用に関連付けるために使用されているようです。この資格情報がすべてのNautilusハードウェアで同一であることを願っています。このファイルはcom.redbend.client
APK内に含まれており、インストール時に抽出されます。
com.redbend.client
に関する参照をこちらで見つけましたが、車でクラッシュしているのを見て少し面白かったです。私たちのマシンでも頻繁にクラッシュしないことを願っています。
これは比較的簡単に解読できました。Bluetooth名はCL831-xxxxxxx
(番号は非公開)として表示され、CHILEAF製です。
nRF Connectでスキャンすると、デバイスのMACアドレスといくつかの重要なデータが公開されました:
心拍数:
UUID: 0x180D
心拍数測定
UUID: 0x2A37
これはかなり標準的なもので、Home Assistant Communityの投稿ですでに解明されていました(同じモデルではありませんが、心拍数モニターは標準プロトコルを使用しているようです)。私は概念実証として、ESPHomeの設定ファイルをこちらに作成しました:
©2022-2024 セバスティアン・バレネチェア. すべての権利を保有.
構築: Astro v4.16.13.