最近,同事拿来一个iPad,说是自己从箱底翻出来的,已经好多年没有开机过了,现在没电了无法开机,也忘记了开机密码,里面有一些和家人的老照片,想让我帮忙试试能不能不恢复出厂设置的前提下解锁,我在确认是他本人的iPad后,同意帮他试试,以下为此次解锁记录。本次记录仅作为个人研究学习,资料和方法都源自互联网,非本人原创,仅在iPad2代(系统版本为iOS 6)上测试通过,电脑使用的系统为macOS 12.3, 其他设备未测试,出现数据丢失概不负责!同时请勿拿做非法用途!!!出现纠纷概不负责!!!
一、确认型号
通过iPad后盖可以知道此iPad型号为A1395,通过网络查得为苹果iPad 第2代 WLAN版本。
二、原理及所需工具
网上大部分解锁的方法有两种,一种是直接换硬盘,这种方法需要拆机,且无法找回旧硬盘里面的数据,故在这里不太适用;第二种是使用一些工具软件绕过,目前比较常用且免费的有@AppleTech752的sliver,但是这个工具一般是用来绕过id锁,需要把iOS设备恢复出厂设置后,通过Checkra1n漏洞越狱或者是上传ramdisk后绕过Apple ID进入系统,也无法保留原始数据。我在某网站找到了源自@AppleTch752的另外一种方法,即使用sliver加载ramdisk后,再挂载ios设备的分区,更改设置app的配置文件,将解锁失败次数更改,避免输错密码导致设备被停用,后面通过暴力输入密码来“破解”密码,这种方法需要一定的耐心和运气,如果密码为4位数,则最多需要10^4的次数才能解锁。建议先输入一些常用密码,有能力的可以考虑使用外接设备来输入密码辅助破解,这里不做讨论了。
需要软硬件工具有:
- Arduino UNO
- 装有macOS的电脑(本人为黑苹果,系统版本为Monterey 12.3.1)
- Arduino IDE
- Sliver
- CyberDuck
- PlistEdit Pro
- 爱思助手
三、具体经过
3.1 设置Arduino
首先需要购买Arduino UNO开发板,这里建议购买原版的Arduino,我是在某鱼购买的,价格约为50元。同时需要购买USB HOSTSHIELD拓展模块,将其中的三个点(红圈)用锡短接(很关键!)。最后将两款板子上下组合起来。如果有LED灯,可以把灯按照图片所示连接,这个不是必须要的。
然后在官网下载Arduino IDE并安装,同时下载synackuk的A5/A5X checkm8补丁,注意需要使用synackuk而非a1exdandy的补丁,这一点很重要!解压在桌面,更改文件夹名为checkm8-a5。打开终端,按步骤输入以下代码,记得把第1行和第5行的路径替换成自己的实际路径。
cd path/to/Arduino/libraries
git clone https://github.com/felis/USB_Host_Shield_2.0
cd USB_Host_Shield_2.0
git checkout cd87628af4a693eeafe1bf04486cf86ba01d29b8
git apply path/to/usb_host_library.patch
打开Arduino IDE,连接Arduino,点击工具-端口,选择自己的Arduino UNO所在端口。
打开checkm8-a5文件夹中的checkm8-a5.ino文件,需要修改这一行define的值,修改后点击上传,如果没有报错就是上传成功了。此时可以断开Arduino。
- iPad2、4S,define A5_8940默认define A5_8940
- iPad3,define A5_8940修改为define A5_8945
- iPad2,4、mini1,define A5_8940修改为define A5_8942
3.2 iPad进入PWNDFU模式
首先让iPad进入普通DFU模式,方法是开机连接电脑后按着电源键+Home键,持续10秒,直到屏幕熄灭,松开电源键,继续按死Home键不放大概10秒,即可成功进入DFU模式。打开爱思助手,可以看到iPad已经进入DFU模式。如果失败可以重试几次。
将iPad连接至Arduino的拓展版的USB口上,再将Arduino连接至电脑或者充电宝上,如果LED灯首先会快速闪烁三次,等待10秒钟后会一直常亮,说明设备已经进入PWNDFU模式。
如果没有LED灯,可以点击工具-串口监视器-点击Show timestamp-设置为115200波特率,将iPad连接至Arduino的拓展版的USB口上,再将Arduino连接至电脑上,此时监视器会自动跑代码,等待代码跑完并提示Done!说明设备成功进入了PWNDFU模式。
3.3 加载RAMDISK
首先,去Appletech752官网下载最新版本的sliver,下载完成后将sliver.app拖到应用程序目录下,如果打开sliver.app提示如下错误:“Sliver.app”将对您的电脑造成伤害。 您应该将它移到废纸篓。
点取消,打开Finder,在应用程序文件夹找到sliver.app,右键点显示简介,点击覆盖恶意软件保护,
打开终端,输入如下代码:
sudo xattr -rd com.apple.quarantine /Applications/Sliver.app
输入电脑的密码后按回车即可。
如果是第一次打开sliver,提示需要安装Python2.7,点击Quit and Install:
在弹出来的窗口一直点下一步安装就可以。
打开Sliver,会弹出来sliver的主窗口,点击「Ramdisk iCloud Bypass 」- 「Bypass A5 iDevices」 -「 iPad 2」
此时会看到如下图1界面,instruction是Arduino的使用说明,上面已经写过了,点击Standard RD,可以看到三个选项:Standard RD,Alternate RD,iBSS ONLY。
- 如果在High Sierra 或者 Mojave,先尝试Standard RD,如果没用,重启iPad,重新进入PWNDFU模式,再用Alternate RD;
- 如果你在Catalina 或者 Big Sur 或者 Monterey 系统上,应该选择Alternate RD!
- IBSS ONLY只用来验证设备是否在PWNDFU模式,如果在,会输出done!,如果没有输出,这说明不在PWNDFU模式,或者ipwndfu遇到了USB错误。在加载IBSS ONLY后,必须重启iOS设备,重新进入PWNDFU模式再加载ramdisk。
我的电脑使用的是Monterey最新系统,所以这里点击Alternate RD,再点击Load,再点击Load Ramdisk。此时会提示需要进行如下操作:断开iOS设备和电脑的USB连接,等待5秒钟,重新连接电脑,完成后点击Continue。
iPad屏幕上会自动跑代码,然后出现一个Apple Tech715的苹果logo,说明ramdisk加载成功。
我看了一些@Appletech752的帖子并翻译了一下,如果在A4、A5或者A6的设备上加载ramdisk不成功,以下为几点你需要做的:
- 如果你使用的是Intel/T2 Mac (2018和更老的型号),使用Sliver 6.2,如果你使用的是M1 Mac (2019/2020+),使用SliverM1,不要用其他版本的Sliver,最新版的是最好的!
- 如果是A5设备,务必确定使用的是synackuk而非a1exdandy的补丁,这一点很重要!
- 请直接拖拽Sliver.app到应用程序目录,不要把文件夹拖进去、或者使用快捷方式、链接等方式
- 在电脑上安装HomeBrew,具体安装方式如下:方法一:brew官网的安装脚本执行命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
这时很可能会出现一个问题: 要么下载极其龟速,要么直接出现如下提示curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
原因:这是 http://raw.githubusercontent.com 访问不稳定引起的。此时需要换一种科学高效的安装方法,即方法二。方法二:brew 镜像安装脚本(亲测最快速最有效)/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
该脚本用了中科大镜像加速访问,仅修改仓库地址部分,不会产生安全隐患。 关于中科大所提供的 Homebrew 镜像服务 https://lug.ustc.edu.cn/wiki/mirrors/help/brew.git注:注意这里的速度,几百kib/s或几m/s才是正常的。若只有几kib/s,通常为无效的安装方法,一般加载了百分之几十后就会报错。 - 打开终端,输入
brew install libusb
,brew install libirecovery
如果你在Catalina 或者 Big Sur 或者 Monterey 系统上使用Sliver,应该选择Alternate Ramdisk!如果在High Sierra 或者 Mojave,先尝试Standard Ramdisk,如果没用,重启iPad,重新进入PWNDFU模式,再用Alternate Ramdisk。
如果你使用的是Intel/T2 Mac ,并且设备为iPad 2,4 ,需要另外下载iPad2.4Bypasser,Sliver 6.2不支持iPad 2,4。
如果你使用的是iPad 3,可能需要20-50次尝试才能成功加载ramdisk,这个很正常。如果想更容易成功,需要在 MacOS High Sierra 或者 Mojave上使用iPad3Bypasser,且iPad3Bypasser只支持运行High Sierra和Mojave 的Intel/T2 Mac。
如果你尝试了上面的方法但是ramdisk任然不能加载,这意味着你遇到了iPwndfu PIPE ERROR。解决方法是什么呢?重启你的设备,重新进入DFU模式,重新用Arduino进入PWNDFU模式,重新连接Mac并且重试。你可能需要重复这个过程10-20次直到arduino成功执行漏洞。想知道什么时候遇到了pipe error吗?最好的方式是从终端运行Sliver,打开一个新的终端窗口并且输入如下代码:
/Applications/Sliver.app/Contents/MacOS/Sliver
如果Sliver已经在你的电脑上安装了,当你点击回车键的时候,Sliver应该会打开,所有的错误和重要信息都会被记录在终端里。如果加载ramdisk失败后,你可以在终端里看有无“Pipe Error”信息,如果你在日志里看到了该信息,这意味着arduino漏洞失败了。
以上这份指导只适用于ramdisk故障排除。如果你有关于A7 payloads的问题,新建一个终端窗口并且输入brew install libirecovery
,请注意A7 payloads只有Sliver6.2支持,M1的不支持。
3.4 挂载系统分区,并修改配置文件。
首先,新建一个终端窗口,输入以下ssh root@localhost -p2222
命令,如果是第一次输入,会提示yes/no,输入yes回车,提示输入密码,输入密码apline
按回车。
tk@TKdeiMac ~ % ssh root@localhost -p2222
The authenticity of host '[localhost]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is SHA256:B5srDjwyszKZBeCctNmOqGEQOCXkSTdOCvKumgL5F+c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
root@localhost's password:
Use mount.sh script to mount the partitions
Use reboot_bak to reboot
Use 'device_infos' to dump EMF keys (when imaging user volume)
输入mount.sh
挂载系统分区到mnt1、mnt2。
打开Cyberduck,点新建连接,选择SFTP协议,服务器填localhost,端口填2222,用户名填root,密码填alpine,最后点击连接
点击连接之后,点击上方选择/根目录,再进入/mnt2/mobile/Library/Prefenrences/
,找到一个名为com.apple.springboard.plist
的文件,把它拖到桌面上。
右键该文件,打开方式选PlistEdit Pro。找到名为SBDeviceLockFailedAttempts
的那一行,这一项的意思是解锁失败错误次数,将其改为-9999
后,即可不停尝试解锁密码直到试出正确的密码。按住Command+S
键保存,将修改后的com.apple.springboard.plist
文件拖回/mnt2/mobile/Library/Prefenrences/
目录,如果提示覆盖点击确认即可。
Last login: Tue May 3 20:00:38 on ttys000
tk@TKdeiMac ~ % ssh root@localhost -p2222
The authenticity of host '[localhost]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is SHA256:B5srDjwyszKZBeCctNmOqGEQOCXkSTdOCvKumgL5F+c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
root@localhost's password:
Use mount.sh script to mount the partitions
Use reboot_bak to reboot
Use 'device_infos' to dump EMF keys (when imaging user volume)
-sh-4.0# mount /dev/disk0s1s1 on /mnt1
usage: mount [-dfruvw] [-o options] [-t external_type] special node
mount [-adfruvw] [-t external_type]
mount [-dfruvw] special | node
-sh-4.0# mount_hfs /dev/disk0s1s1 on /mnt1
usage: mount_hfs [-xw] [-u user] [-g group] [-m mask] [-e encoding] [-t tbuffer-size] [-j] [-c] [-o options] special-device filesystem-node
-j disables journaling; -c disables group-commit for journaling
-sh-4.0# mount_hfs /dev/disk0s1s1 /mnt1
-sh-4.0# mount_hfs /dev/disk0s1s2 /mnt2
-sh-4.0# reboot_bak
-sh-4.0# Connection to localhost closed by remote host.
Connection to localhost closed.
暂无评论内容