一次解锁Ipad的神奇经历...

 

0x00 前言

最近从家里的一个角落找出了一台吃灰已久的Ipad mini.

本来想拿来代替我原来那台华为平板电脑做主力机的来着 :P

重新装了一下系统…然后…这个激活锁是个什么鬼 ?!

激活锁激活锁

虽说苹果是可以注重安全性…但这个Apple ID 我早就忘记了好吗!

0x01 官网恢复账号

果然账号被锁了…要出生日期和安全问题?? 显然我早就忘记了

马上放弃这种想法 :o

0x02 徒劳的尝试

当然不会马上放弃

开始试图绕过这个激活锁

Google 了一番却完全没有找到任何靠谱的解决方法 =(

大概捣腾了大半个小时发现了事实

  • Apple 刷入系统时是需要对系统签名的,所以无法魔改系统本身
  • Apple 的激活锁验证是使用HTTPS加密的,也是数字签名验证

综上所述: 这台Ipad变成了一块昂贵的板砖 (??)

0x03 客服求助

打电话给官方客服求助…要我用购买时的发票和三包证书解锁?

早就不见了 :P 也别想了

0x04 欧皇解决一切问题

写了一个Python小程序(极度硬核) *直接猜生日(年份应该是对的, 但是具体日期是乱选的)*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from selenium import webdriver
import time
from datetime import date
from datetime import timedelta
import os
import random

apple_id = ""

all_date = []
while True:
start = date(1978,1,1)
end = date(1978,12,31)
delta = timedelta(days=1)
all_date.clear()

while start <= end:
all_date.append(start.strftime('%Y%m%d'))
start += delta

for i in os.listdir():
if i[-4:] == ".png":
print(i)
try:
all_date.remove(i[0:-4])
except:
pass

#print(all_date)
random.shuffle(all_date)
print(all_date)

print("Tried: " + str(365 - len(all_date)) + " " + str((365 - len(all_date)) / 365 * 100) + "%")

def try_date(date):
try:
print("Trying... " + str(date))
browser = webdriver.Firefox()
browser.get('https://iforgot.apple.com/password/verify/appleid')
browser.set_page_load_timeout(10)
browser.set_script_timeout(10)

time.sleep(0.5)
browser.find_element_by_class_name("iforgot-apple-id").clear()
browser.find_element_by_class_name("iforgot-apple-id").send_keys(apple_id)
time.sleep(0.5)
browser.find_element_by_class_name("button").click()

time.sleep(5)
browser.find_element_by_class_name("content-input").clear()
browser.find_element_by_class_name("content-input").send_keys(str(date))

time.sleep(0.5)
browser.find_element_by_class_name("right-nav").click()
time.sleep(5)
browser.save_screenshot(str(date) + ".png")
time.sleep(0.5)
browser.quit()
except Exception as e:
time.sleep(1)
browser.quit()
raise e

try:
try_date(all_date[0])
except Exception as e:
print(str(e))

最后大概跑了三天三夜的程序, 猜中了(??!!)

就这样解决了…(??)

本文采用 CC BY-NC-SA 4.0 许可协议发布.

作者: lyc8503, 文章链接: https://blog.lyc8503.net/post/unlock-ipad/
如果本文给你带来了帮助或让你觉得有趣, 可以考虑赞助我¬_¬