忘了在哪看到一句话:使用windows系统是造成安全学习路上困苦的一大因素。最近我有所体会,特别是搞移动端,iot,ubuntu用起来是真的顺手。但是话说回来,台式机不是说买就买的,笔记本的操作系统也很难说换就换,毕竟咱家不是什么大富大贵家庭(QAQ)。于是虚拟机成为了首选。但是如果把虚拟机装在移动硬盘上,高强度的读写会很快缩短硬盘的寿命,到后期读写速度骤降(已经废了两个了呜呜。。),而且vmware workstation在开启关闭操作大型虚拟机的时候常有卡顿,感jio不够丝滑。这也便有了接下来以操作iphone为主题的wsl的探索尝试
使用设备
- iphone6
购买途径和越狱不是本文主题,这里就不赘述了(
-
thinkpad14笔记本 win11(win10也行)
-
三合一苹果type-c安卓手机数据线
探索过程
想要操作iphone,比较推荐的就是libimobiledevice库及依赖于它的一些开源工具,这些工具在windows上编译较为麻烦(会给不熟悉windows编译的uu带来烦恼)。但对于Ubuntu,Debian来说,安装它们只是几行命令的事。下面尝试使用wsl来实现对iphone的操作
wsl
WSL(Windows Subsystem for Linux)即Windows子系统for Linux,是微软推出的一个兼容层,它允许在Windows操作系统上原生运行Linux二进制可执行文件
官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/
wsl的优点:
- WSL资源占用少。它不需要像VM Workstation那样模拟完整的硬件环境,直接利用Windows系统资源
- WSL启动快。由于不需要加载完整的虚拟机操作系统环境,WSL中的Linux发行版可以快速启动,通常在几秒钟内就能进入可用状态。
- 文件系统集成好。WSL可以很方便地访问Windows文件系统中的文件,例如在WSL的Ubuntu系统中,可以直接通过/mnt/c(假设Windows系统盘是C盘)这样的路径访问Windows下的文件。反之,在Windows中也可以访问WSL 文件系统中的文件。
查看wsl版本
这里显示我系统上装的是WSL2。WSL2与WSL1相比有重大改进,其中最主要的是WSL2引入了真正的Linux内核,运行在轻量级虚拟机中,提供了更好的性能和兼容性
下面来安装Linux子系统
首先在Win11开始菜单搜索“windows 功能”,打开功能配置界面,勾选Linux子系统以及虚拟机平台2个选项。配置后,需要按照提示,重启电脑
(不过其实没勾选使用于linux的yindows子系统这个选项后续也是能用的)
安装wsl,这里我选择Ubuntu-22.04
wsl --install Ubuntu-22.04
给予Windows权限访问虚拟机,将Ubuntu22.04这个WSL子系统的默认用户设置为"root"。
C:\Users\{用户名}\AppData\Local\Microsoft\WindowsApps\ubuntu2204.exe config --default-user root
执行可以看到已经安装完了
wsl --list --all
这时ubuntu系统装在C盘,显然是不妥的,没准操作了几个月C盘就爆红了(
于是我将其迁入我的E盘
关闭当前所有运行的wsl
wsl --shutdown
导出要迁移的wsl
wsl --export Ubuntu-22.04 E:/wsl/ubuntu.tar
卸载C盘的wsl
wsl --unregister Ubuntu-22.04
然后将导出的文件放到需要保存的地方,进行导入即可
wsl --import Ubuntu-22.04 E:\wsl\ubuntu22.04\ E:\wsl\ubuntu.tar
之后在命令行运行
wsl
即可进入linux子系统
安装libimobiledevice库
apt-get update
add-apt-repository ppa:pmcenery/ppa
apt-get install libimobiledevice-utils
usbipd
接下要解决的问题就是如何将WSL(ubuntu)连接windows的USB设备
经常使用vmware workstation的uu应该都知道,该平台下若有串口通信需求,有专门的按键功能切换很方便。
但是WSL是命令行的操作,没有这方面的功能。如果仅仅将iphone通过数据线连接windows,在WSL中是找不到设备的
因此要用到 usbipd
usbipd是一个工具,通常用于在Windows和WSL(Windows Subsystem for Linux)之间共享USB设备。
可以使用Windows包管理器Winget来安装"dorssel.usbipd-win"的软件包
winget install --interactive --exact dorssel.usbipd-win
运行后,系统将
- 安装一个名为 “usbipd” 的服务,在 Windows 的 “服务” 应用中可以查看其状态,它的显示名称是 “USBIP 设备主机”。
- 安装命令行工具 “usbipd”,并且这个工具的位置会被添加到系统的 PATH 环境变量中,方便在任何位置通过命令行调用。
- 安装一个名为 “usbipd” 的防火墙规则,这个规则允许所有本地子网连接到该服务。你可以修改这个防火墙规则来进一步调整访问控制。
安装好后在命令行可以执行
usbipd list
查看连接到接到windows上的USB设备
在附加 USB 设备之前,使用命令usbipd bind先共享设备(如果设备显示Not Shared则必须要做),像上图是要共享iphone,具体命令如下
usbipd bind --busid 2-2
然后就可以附加 USB 设备了(注意,只要 USB 设备连接到 WSL,Windows 将无法使用它)
我这里执行
usbipd attach --wsl -b 2-2
但是出现了如下的报错
出现这个问题的原因是设备被占用了
我这里首先推出爱思助手,然后打开计算机管理,选择事件查看器。在事件查看器里面的左侧点击"Windows 日志",选择"系统"。在右侧列出的近期事件中,找到最新的一个 “来源” 为"Kernel-PnP"的事件,并在这个事件上单击一下。
kill了这个进程
taskkill /f /pid 5852
再次尝试附加,发现成功了
在WSL中查看确认连接成功
libimobiledevice
获取设备信息
idevice_id 获取当前连接设备UUID
idevicename 查看当前连接设备名称
idevicescreenshot 从连接的设备获取屏幕截图
idevicesetlocation [OPTIONS] -- <LAT> <LONG> 根据经纬度模拟定位
ideviceinfo 查看手机设备详情列出全部相关信息
idevicesyslog 查看系统日志
安装卸载app/ipa
apt-get install ideviceinstaller
ideviceinstaller -i xxx.ipa 安装软件
ideviceinstaller -U [bundleID]卸载应用
ideviceinstaller -l 查看安装软件
ideviceinstaller -g [bundle_id] [path] 根据压缩包升级app
ideviceinstaller -o export -i [bundle_id] -o [PATH] 根据路径备份app
ideviceinstaller -r 从备份中恢复app
ifuse
ifuse是一个用于在类Unix系统(如 Linux 和 macOS)上挂载iOS设备文件系统的工具
安装
apt install ifuse
相关命令
ifuse [挂载点] 挂在媒体文件目录
fusermount -u [挂载点] 卸载挂载点
ifuse --documents [要挂载的应用的bundleID] [挂载点] 挂载某个应用的documents目录
参考文章
https://www.52pojie.cn/thread-1769605-1-1.html
https://learn.microsoft.com/zh-cn/windows/wsl/install
https://blog.csdn.net/weixin_44733606/article/details/131659968
https://www.cnblogs.com/likkoliu/p/18157046