diff options
author | 2025-03-25 00:03:42 +0100 | |
---|---|---|
committer | 2025-03-27 01:52:20 +0100 | |
commit | a5905b7f905fc3cc83033ebd963f0dcba071e512 (patch) | |
tree | b56349c9e9bf8ee9928e8e075f4efa1c5b38ca5b /src | |
parent | 2ee5021f36a26f7344b63d3321cda78899edc319 (diff) | |
download | idevicerestore-a5905b7f905fc3cc83033ebd963f0dcba071e512.tar.gz idevicerestore-a5905b7f905fc3cc83033ebd963f0dcba071e512.tar.bz2 |
Fix iPhone 16e restore from normal mode
Because of the new Apple baseband the initial TSS request won't succeed
when restoring from normal mode due to missing data for a @BBTicket.
So now if the baseband information is missing, we don't try to add BBTicket
data at all, which will make it work for iPhone 16e devices.
Diffstat (limited to 'src')
-rw-r--r-- | src/idevicerestore.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c index a61409a..9911e9d 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -2406,18 +2406,20 @@ int get_tss_response(struct idevicerestore_client_t* client, plist_t build_ident plist_dict_copy_uint(parameters, pinfo, "BbGoldCertId", "CertID"); plist_dict_copy_data(parameters, pinfo, "BbSNUM", "ChipSerialNo"); - /* add baseband parameters */ - tss_request_add_baseband_tags(request, parameters, NULL); - - plist_dict_copy_uint(parameters, pinfo, "eUICC,ChipID", "EUICCChipID"); - if (plist_dict_get_uint(parameters, "eUICC,ChipID") >= 5) { - plist_dict_copy_data(parameters, pinfo, "eUICC,EID", "EUICCCSN"); - plist_dict_copy_data(parameters, pinfo, "eUICC,RootKeyIdentifier", "EUICCCertIdentifier"); - plist_dict_copy_data(parameters, pinfo, "EUICCGoldNonce", NULL); - plist_dict_copy_data(parameters, pinfo, "EUICCMainNonce", NULL); - - /* add vinyl parameters */ - tss_request_add_vinyl_tags(request, parameters, NULL); + if (plist_dict_get_item(parameters, "BbSNUM")) { + /* add baseband parameters */ + tss_request_add_baseband_tags(request, parameters, NULL); + + plist_dict_copy_uint(parameters, pinfo, "eUICC,ChipID", "EUICCChipID"); + if (plist_dict_get_uint(parameters, "eUICC,ChipID") >= 5) { + plist_dict_copy_data(parameters, pinfo, "eUICC,EID", "EUICCCSN"); + plist_dict_copy_data(parameters, pinfo, "eUICC,RootKeyIdentifier", "EUICCCertIdentifier"); + plist_dict_copy_data(parameters, pinfo, "EUICCGoldNonce", NULL); + plist_dict_copy_data(parameters, pinfo, "EUICCMainNonce", NULL); + + /* add vinyl parameters */ + tss_request_add_vinyl_tags(request, parameters, NULL); + } } } client->firmware_preflight_info = pinfo; |