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))
|
最后大概跑了三天三夜的程序, 猜中了(??!!)
就这样解决了…(??)