MASTG-TECH-0052: 访问设备 Shell
测试应用程序时最常见的操作之一是访问设备 shell。在本节中,我们将了解如何通过有/无 USB 电缆从主机远程访问 iOS shell,以及如何从设备本身本地访问。
远程 Shell¶
与可以使用 adb 工具轻松访问设备 shell 的 Android 相比,在 iOS 上,您只能选择通过 SSH 访问远程 shell。 这也意味着您的 iOS 设备必须越狱才能从主机连接到它的 shell。 在本节中,我们假设您已正确越狱您的设备,并且已安装 Sileo 或 Zebra。 在本指南的其余部分,我们将参考 Sileo,但相同的包应该在 Zebra 中可用。
为了启用对 iOS 设备的 SSH 访问,您可以安装 OpenSSH 包。 安装后,请确保将两个设备连接到同一个 Wi-Fi 网络,并记下设备 IP 地址,您可以在设置 -> Wi-Fi 菜单中找到该地址,然后单击您连接到的网络的 info 图标。
您现在可以通过运行 ssh root@<device_ip_address>
访问远程设备的 shell,这将以 root 用户身份登录。
$ ssh [email protected]
[email protected]'s password:
iPhone:~ root#
按 Control + D 或键入 exit
退出。
通过 SSH 访问 iOS 设备时,请考虑以下事项:
- 默认用户是
root
和mobile
。 - 两者的默认密码都是
alpine
。
请记住更改用户
root
和mobile
的默认密码,因为同一网络上的任何人都可以在您的设备上找到 IP 地址,并通过众所周知的默认密码进行连接,这将使他们获得对您的设备的 root 访问权限。
如果您忘记了密码并想将其重置为默认密码 alpine
- 在越狱的 iOS 设备上编辑文件
/private/etc/master.password
(使用如下所示的设备上 shell) - 找到以下行
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
- 将
xxxxxxxxx
更改为/smx7MYTQIi2M
(这是哈希密码alpine
) - 保存并退出
通过 USB 通过 SSH 连接到设备¶
在真正的黑盒测试中,可能无法获得可靠的 Wi-Fi 连接。 在这种情况下,您可以使用 Usbmuxd 通过 USB 连接到您设备的 SSH 服务器。
通过安装和启动 iproxy 将 macOS 连接到 iOS 设备
$ iproxy 2222 22
waiting for connection
上面的命令将 iOS 设备上的端口 22
映射到 localhost 上的端口 2222
。 如果您不想在每次想通过 USB 进行 SSH 连接时都运行该二进制文件,您还可以使 iproxy 在后台自动运行。
通过在新终端窗口中使用以下命令,您可以连接到设备
$ ssh -p 2222 mobile@localhost
mobile@localhost's password:
iPhone:~ mobile%
设备上 Shell 应用程序¶
虽然与远程 shell 相比,通常使用设备上 shell(终端模拟器)可能非常乏味,但在出现网络问题或检查某些配置的情况下,它可能会证明很方便。 例如,您可以为此目的通过 Sileo 安装 NewTerm 2(在撰写本文时,它支持 iOS 10.0 到 16.2)。
此外,一些越狱会出于安全原因明确禁用传入 SSH。 在这些情况下,拥有一个设备上 shell 应用程序非常方便,您可以使用它首先使用反向 shell 从设备 SSH 出去,然后从主机连接到它。
通过运行命令 ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip>
可以通过 SSH 打开反向 shell。
在设备上 shell 应用程序上运行以下命令,并在询问时输入主机 mstg
用户的密码
ssh -R 2222:localhost:22 [email protected]
在您的主机上运行以下命令,并在询问时输入 iOS 设备 root
用户的密码
ssh -p 2222 root@localhost