Explorar el Código

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 hace 1 mes
padre
commit
a5905b7f90
Se han modificado 1 ficheros con 14 adiciones y 12 borrados
  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;