Quantcast
Channel: 應用教學 – Hiraku Dev
Viewing all articles
Browse latest Browse all 94

批次掃描及抓取 SHSH2

$
0
0

因為我裝置很多,所以每次出新版 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 的指令。

 

注意:

  1. apnonce 不會幫你設定,是隨機的
  2. 依照個人需求可能需要修改 tsschecker 執行檔名稱
  3. 依照個人需求記得擋掉不存 SHSH 的裝置(例如我擋掉了 iPhone 5,因為不支援 iOS 11 以上)
  4. 我 code 很醜不要笑我。

這篇文章 批次掃描及抓取 SHSH2 最早出現於 Hiraku Dev


Viewing all articles
Browse latest Browse all 94

Trending Articles