Parcourir la source

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.
Nikias Bassen il y a 1 mois
Parent
commit
a5905b7f90
1 fichiers modifiés avec 14 ajouts et 12 suppressions
  1. 14 12
      src/idevicerestore.c

+ 14 - 12
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;