Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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}
Expand Down
Empty file removed dep_root/.keep
Empty file.
Empty file removed dep_root/include/.keep
Empty file.
Empty file removed dep_root/lib/.keep
Empty file.
4 changes: 4 additions & 0 deletions fix_dep_root.sh
Original file line number Diff line number Diff line change
@@ -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
8 changes: 6 additions & 2 deletions tsschecker/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;
Expand All @@ -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
Expand Down
48 changes: 45 additions & 3 deletions tsschecker/tsschecker.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,20 @@ 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)
{"Mac16,5", 0, 0}, // MacBook Pro (16-inch, M4 Pro, Nov 2024)
{"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

Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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<plist_array_get_size(SupportedProductTypeIDsMode); i++) {
mDevice = plist_array_get_item(SupportedProductTypeIDsMode, i);
int64_t lDevice = 0;
plist_get_int_val(mDevice, &lDevice);
if (lDevice)
goto checkedDeviceModel;
}
}

reterror("[TSSC] selected device can't be used with that buildmanifest\n");

Expand Down
2 changes: 0 additions & 2 deletions tsschecker/tsschecker.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,12 @@ extern "C" {
#include "debug.h"

extern int dbglog;
extern int print_tss_response;
extern int nocache;
extern int save_shshblobs;
extern int update_install;
extern int erase_install;
extern int save_bplist;
extern const char *shshSavePath;
extern int print_tss_request;

struct bbdevice{
const char *deviceModel;
Expand Down