浏览代码

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 1 月之前
父节点
当前提交
a5905b7f90
共有 1 个文件被更改,包括 14 次插入12 次删除
  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;