逆向工程项目。起初是针对Bowflex Treadmill 22,但后来泛化为适用于Nautilus Inc.(Nautilus、Bowflex、Schwinn)销售的任何Android设备。
/sdcard/Pictures/nautilus
文件当反编译 NautilusLauncher
时,你可以看到对那个特定路径的引用:
// 路径: 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();
}
// 路径: 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
文件中的内容标记为:
第一行:DOMAIN_NAME
第二行:DOMAIN_PIN
DOMAIN_PIN
似乎是一个真实的 PIN 码,因为它是一个六位数的数字。
在 “Red Bend Network” 中有一些凭据,用于将机器与特定品牌/产品关联以进行 OTA 更新。我希望这些凭据在所有 Nautilus 硬件中都是相同的。该文件包含在 com.redbend.client
APK 中,并在安装时提取。
我在 这里 找到了对 com.redbend.client
的引用,看到它在一辆车中崩溃,我觉得相当有趣。我希望它在我们的机器上不会那么频繁地失败。
这个问题相当直接。蓝牙名称显示为 CL831-xxxxxxx
(数字隐藏) 来自 CHILEAF。
通过 nRF Connect 扫描时,设备的 MAC 地址和一些关键数据被暴露:
心率:
UUID: 0x180D
心率测量
UUID: 0x2A37
这似乎相当标准,而且 Home Assistant 社区的一个帖子已经弄清楚了这一点(不是同一型号,但看起来心率监测器使用标准协议)。我在这里创建了一个 ESPHome 配置文件作为概念验证:
©2022-2024 Sebastian Barrenechea. 保留所有权利.
构建于 Astro v4.16.13.