diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index ea8da0a..0dc8f85 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -14,7 +14,7 @@ env: WOLFSSL_VERSION: 5.6.3 OPENSSL_VERSION: 3.1.7 LIBCURL_VERSION: 7.79.1 - LIBTATSU_VERSION: 1.0.4 + LIBTATSU_VERSION: 1.0.5 jobs: @@ -298,7 +298,7 @@ jobs: - name: build libtatsu run: | wget -q -nc -P ${BUILD_SOURCE} \ - https://github.com/libimobiledevice/libtatsu/archive/${LIBTATSU_VERSION}.tar.gz + https://github.com/futurerestore/libtatsu/archive/${LIBTATSU_VERSION}.tar.gz tar xf ${BUILD_SOURCE}/${LIBTATSU_VERSION}.tar.gz -C ${BUILD_WORK} echo "${LIBTATSU_VERSION}" > ${BUILD_WORK}/libtatsu-${LIBTATSU_VERSION}/.tarball-version cd ${BUILD_WORK}/libtatsu-${LIBTATSU_VERSION} diff --git a/dep_root/.keep b/dep_root/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/dep_root/include/.keep b/dep_root/include/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/dep_root/lib/.keep b/dep_root/lib/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/fix_dep_root.sh b/fix_dep_root.sh new file mode 100755 index 0000000..2c21ebe --- /dev/null +++ b/fix_dep_root.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +script_name=$(realpath "$0") +script_base=$(dirname "$script_name") +for file in $(find ${script_base}/dep_root/lib/pkgconfig -name "*.pc"); do export pkg=$(realpath $(dirname $(realpath "${file}"))/../../); pkg=$(echo $pkg | sed 's/\//\\\//g'); sed -i "s/^prefix=.*/prefix=${pkg}/g" $file; done \ No newline at end of file diff --git a/tsschecker/main.c b/tsschecker/main.c index 18a9a6f..361d60b 100644 --- a/tsschecker/main.c +++ b/tsschecker/main.c @@ -288,6 +288,8 @@ int main(int argc, const char * argv[]) { break; case '0': // long option: "debug"; can be called as short option idevicerestore_debug = 1; + tss_set_print_tss_request(1); + tss_set_print_tss_response(1); tss_set_debug_level(3); break; case '1': // long option: "list-devices"; can be called as short option @@ -300,10 +302,10 @@ int main(int argc, const char * argv[]) { shshSavePath = optarg; break; case '4': // long option: "print-tss-request"; can be called as short option - print_tss_request = 1; + tss_set_print_tss_request(1); break; case '5': // long option: "print-tss-response"; can be called as short option - print_tss_response = 1; + tss_set_print_tss_response(1); break; case '6': // long option: "beta"; can be called as short option versVals.useBeta = 1; @@ -324,6 +326,8 @@ int main(int argc, const char * argv[]) { case 'r': // long option: "raw"; can be called as short option rawFilePath = optarg; idevicerestore_debug = 1; + tss_set_print_tss_request(1); + tss_set_print_tss_response(1); tss_set_debug_level(3); break; case 'c': // long option: "bbsnum"; can be called as short option diff --git a/tsschecker/tsschecker.c b/tsschecker/tsschecker.c index b5286ac..bf6a0b1 100755 --- a/tsschecker/tsschecker.c +++ b/tsschecker/tsschecker.c @@ -165,6 +165,7 @@ static struct bbdevice bbdevices[] = { {"Mac15,11", 0, 0}, // MacBook Pro (16-inch, M3 Max, Nov 2023) {"Mac15,12", 0, 0}, // MacBook Air (13-inch, M3, 2024) {"Mac15,13", 0, 0}, // MacBook Air (15-inch, M3, 2024) + {"Mac15,14", 0, 0}, // Mac Studio (M3 Ultra, 2025) {"Mac16,1", 0, 0}, // MacBook Pro (14-inch, M4, Nov 2024) {"Mac16,2", 0, 0}, // iMac 24-inch (M4, Two Ports, 2024) {"Mac16,3", 0, 0}, // iMac 24-inch (M4, Four Ports, 2024) @@ -172,9 +173,12 @@ static struct bbdevice bbdevices[] = { {"Mac16,6", 0, 0}, // MacBook Pro (14-inch, M4 Pro, Nov 2024) {"Mac16,7", 0, 0}, // MacBook Pro (16-inch, M4 Pro, Nov 2024) {"Mac16,8", 0, 0}, // MacBook Pro (14-inch, M4 Pro, Nov 2024) + {"Mac16,9", 0, 0}, // Mac Studio (M4 Max, 2025) {"Mac16,10", 0, 0}, // Mac mini (M4, 2024) {"Mac16,11", 0, 0}, // Mac mini (M4 Pro, 2024) - + {"Mac16,12", 0, 0}, // MacBook Air (13-inch, M4, 2025) + {"Mac16,13", 0, 0}, // MacBook Air (15-inch, M4, 2025) + // Apple Displays {"AppleDisplay2,1", 0, 0}, // Studio Display @@ -261,6 +265,11 @@ static struct bbdevice bbdevices[] = { {"iPhone17,2", 1652214800, 4}, // iPhone 16 Pro Max {"iPhone17,3", 1652214800, 4}, // iPhone 16 {"iPhone17,4", 1652214800, 4}, // iPhone 16 Plus + {"iPhone17,5", 4, 0}, // iPhone 16e + {"iPhone18,3", 694094470, 12}, // iPhone 17 + {"iPhone18,1", 694094470, 12}, // iPhone 17 Pro + {"iPhone18,2", 694094470, 12}, // iPhone 17 Pro Max + {"iPhone18,4", 4, 0}, // iPhone Air // iPads {"iPad1,1", 0, 0}, // iPad (1st gen) @@ -286,7 +295,9 @@ static struct bbdevice bbdevices[] = { {"iPad12,2", 165673526, 12}, // iPad (9th gen, 2021, Cellular) {"iPad13,18", 0, 0}, // iPad (10th gen, 2022, Wi-Fi) {"iPad13,19", 495958265, 4}, // iPad (10th gen, 2022, Cellular) - + {"iPad15,7", 0, 0}, // iPad (A16, 2025, Wi-Fi) + {"iPad15,8", 3452763205, 4}, // iPad (A16, 2025, Cellular) + // iPad minis {"iPad2,5", 0, 0}, // iPad mini (1st gen, Wi-Fi) {"iPad2,6", 3255536192, 4}, // iPad mini (1st gen, CDMA) @@ -322,7 +333,11 @@ static struct bbdevice bbdevices[] = { {"iPad14,9", 495958265, 4}, // iPad Air (11-inch, M2, Cellular) {"iPad14,10", 0, 0}, // iPad Air (13-inch, M2, Wi-Fi) {"iPad14,11", 495958265, 4}, // iPad Air (13-inch, M2, Cellular) - + {"iPad15,3", 0, 0}, // iPad Air (11-inch, M3, Wi-Fi) + {"iPad15,4", 3452763205, 4}, // iPad Air (11-inch, M3, Cellular) + {"iPad15,5", 0, 0}, // iPad Air (13-inch, M3, Wi-Fi) + {"iPad15,6", 3452763205, 4}, // iPad Air (13-inch, M3, Cellular) + // iPad Pros {"iPad6,3", 0, 0}, // iPad Pro (9.7-inch, Wi-Fi) {"iPad6,4", 3840149528, 4}, // iPad Pro (9.7-inch, Cellular) @@ -410,6 +425,15 @@ static struct bbdevice bbdevices[] = { {"Watch7,9", 0, 0}, // Apple Watch Series 10 (46mm, GPS) {"Watch7,10", 744114402, 12}, // Apple Watch Series 10 (42mm, GPS + Cellular) {"Watch7,11", 744114402, 12}, // Apple Watch Series 10 (46mm, GPS + Cellular) + {"Watch7,13", 0, 0}, // Apple Watch SE (3rd gen, 40mm, GPS) + {"Watch7,14", 0, 0}, // Apple Watch SE (3rd gen, 44mm, GPS) + {"Watch7,15", 0, 0}, // Apple Watch SE (3rd gen, 40mm, GPS + Cellular) + {"Watch7,16", 0, 0}, // Apple Watch SE (3rd gen, 44mm, GPS + Cellular) + {"Watch7,12", 0, 0}, // Apple Watch Ultra 3 (49mm, GPS + Cellular) + {"Watch7,17", 0, 0}, // Apple Watch Series 11 (42mm, GPS) + {"Watch7,18", 0, 0}, // Apple Watch Series 11 (46mm, GPS) + {"Watch7,19", 0, 0}, // Apple Watch Series 11 (42mm, GPS + Cellular) + {"Watch7,20", 0, 0}, // Apple Watch Series 11 (46mm, GPS + Cellular) // HomePods {"AudioAccessory1,1", 0, 0}, // HomePod 1st gen @@ -1677,6 +1701,8 @@ int isManifestSignedForDevice(const char *buildManifestPath, t_devicevals *devVa plist_t manifest = NULL; plist_t ProductVersion = NULL; plist_t SupportedProductTypes = NULL; + plist_t SupportedProductTypeIDs = NULL; + plist_t SupportedProductTypeIDsMode = NULL; plist_t mDevice = NULL; char *bufManifest = NULL; @@ -1713,6 +1739,22 @@ int isManifestSignedForDevice(const char *buildManifestPath, t_devicevals *devVa goto checkedDeviceModel; } } + + SupportedProductTypeIDs = plist_dict_get_item(manifest, "SupportedProductTypeIDs"); + if (SupportedProductTypeIDs) { + SupportedProductTypeIDsMode = plist_dict_get_item(SupportedProductTypeIDs, "DFU"); + if(!SupportedProductTypeIDsMode) { + SupportedProductTypeIDsMode = plist_dict_get_item(SupportedProductTypeIDs, "Recovery"); + } + if(SupportedProductTypeIDsMode) + for (int i=0; i