因為我裝置很多,所以每次出新版 iOS 抓 SHSH2 都要抓半天,就算用 1conan 也要複製貼上 ECID 很久,乾脆自己寫一個 script 自動化。
使用之前,請先開一個資料夾,我們就取名叫 SHSH2
好了,然後去 1conan 先去取得你的 SHSH2 檔案,並解壓縮資料夾,放到 SHSH2
底下。之後下載 TSSChecker,一樣放到 SHSH2
底下。
接著複製下面的很醜的 python script,存檔在 SHSH2
底下執行就可以了。
#!/usr/local/bin/python3 import os import subprocess import sys def get_devices(): device_dict = {} for path in os.listdir('.'): if path != 'backup' and os.path.isdir(path): board = '' device_type = '' found = False version_paths = os.listdir(path) version_paths.sort(reverse=True) for version_path in version_paths: if os.path.isdir(path + '/' + version_path): for nonce_path in os.listdir(path + '/' + version_path): if nonce_path == 'noapnonce': for shsh_path in os.listdir(path + '/' + version_path + '/' + nonce_path): if shsh_path.endswith('.shsh2'): if shsh_path.split('_')[2].endswith('ap') or shsh_path.split('_')[2].endswith('AP'): device_type = shsh_path.split('_')[1] board = shsh_path.split('_')[2] found = True break; if found == True: break if found == True: break device_type += '_' + board ecid = path.split('-')[1] device_dict[ecid] = device_type return device_dict def main(): devices = get_devices() for ecid in devices: model = devices[ecid].split('_')[0] if model.split(',')[0] == 'iPhone5': continue board = devices[ecid].split('_')[1] version = sys.argv[1] if len(sys.argv) == 3: version += '-' + sys.argv[2] save_path = './' + model + '-' + ecid + '/' + version + '/noapnonce' if not os.path.exists(save_path): os.makedirs(save_path) cmd = './tsschecker_v212' + ' -d ' + model + ' -e ' + ecid + ' -s ' + ' --save-path ' + save_path + ' --boardconfig ' + board + ' -i ' + sys.argv[1] if len(sys.argv) == 3: cmd += ' --buildid ' + sys.argv[2] print(cmd) subprocess.call(cmd, shell=True) if __name__ == '__main__': main()
執行方式:
./run.py 版本號 build號(若有需要)
例如./run.py 11.4
或 ./run.py 11.4 15F79
原理:
因為 1conan 抓下來的資料夾裡面有包含裝置主機板、型號、ECID 等資訊,所以這個 script 就是掃一掃這些資訊然後重新湊出下載 SHSH2 的指令。
注意:
- apnonce 不會幫你設定,是隨機的
- 依照個人需求可能需要修改 tsschecker 執行檔名稱
- 依照個人需求記得擋掉不存 SHSH 的裝置(例如我擋掉了 iPhone 5,因為不支援 iOS 11 以上)
- 我 code 很醜不要笑我。
這篇文章 批次掃描及抓取 SHSH2 最早出現於 Hiraku Dev。