From 565589ae50962b5394ace5565d1833edc7c3c47f Mon Sep 17 00:00:00 2001
From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com>
Date: Mon, 1 Mar 2021 17:25:50 -0700
Subject: [PATCH] Rework SMBIOS to support original serials
---
Resources/build.py | 125 +++++++++++++++-------------
payloads/Config/v0.6.7/config.plist | 111 +++++++++++++++++++++++-
2 files changed, 173 insertions(+), 63 deletions(-)
diff --git a/Resources/build.py b/Resources/build.py
index 4e51b8ec3..99d07cb98 100644
--- a/Resources/build.py
+++ b/Resources/build.py
@@ -129,62 +129,7 @@ class BuildOpenCore:
Path(self.constants.map_contents_folder).mkdir()
shutil.copy(usb_map_path, self.constants.map_contents_folder)
self.get_kext_by_bundle_path("USB-Map.kext")["Enabled"] = True
- self.new_map_ls = Path(self.constants.map_contents_folder) / Path(f"Info.plist")
- self.map_config = plistlib.load(Path(self.new_map_ls).open("rb"))
-
- # TODO: Set check as global variable
- if self.model in ModelArray.MacBookAir61:
- print("- Spoofing to MacBookAir6,1")
- spoofed_map = "MacBookAir6,1"
- elif self.model in ModelArray.MacBookAir62:
- print("- Spoofing to MacBookAir6,2")
- spoofed_map = "MacBookAir6,2"
- elif self.model in ModelArray.MacBookPro111:
- print("- Spoofing to MacBookPro11,1")
- spoofed_map = "MacBookPro11,1"
- elif self.model in ModelArray.MacBookPro113:
- print("- Spoofing to MacBookPro11,3")
- spoofed_map = "MacBookPro11,3"
- elif self.model in ModelArray.Macmini71:
- print("- Spoofing to Macmini7,1")
- spoofed_map = "Macmini7,1"
- elif self.model in ModelArray.iMac151:
- print("- Spoofing to iMac15,1")
- spoofed_map = "iMac15,1"
- elif self.model in ModelArray.iMac144:
- print("- Spoofing to iMac14,4")
- spoofed_map = "iMac14,4"
- elif self.model in ModelArray.MacPro71:
- print("- Spoofing to MacPro7,1")
- spoofed_map = "MacPro7,1"
- self.map_config["IOKitPersonalities_x86_64"][self.model]["model"] = spoofed_map
- if self.model in ModelArray.EHCI:
- model_EHCI = f"{self.model}-EHCI"
- self.map_config["IOKitPersonalities_x86_64"][model_EHCI]["model"] = spoofed_map
- if self.model in ModelArray.EHC1:
- model_EHC1 = f"{self.model}-EHC1"
- self.map_config["IOKitPersonalities_x86_64"][model_EHC1]["model"] = spoofed_map
- if self.model in ModelArray.EHC2:
- model_EHC2 = f"{self.model}-EHC2"
- self.map_config["IOKitPersonalities_x86_64"][model_EHC2]["model"] = spoofed_map
- if self.model in ModelArray.OHC1:
- model_OHC1 = f"{self.model}-OHC1"
- model_OHC2 = f"{self.model}-OHC2"
- self.map_config["IOKitPersonalities_x86_64"][model_OHC1]["model"] = spoofed_map
- self.map_config["IOKitPersonalities_x86_64"][model_OHC2]["model"] = spoofed_map
- if self.model in ModelArray.IHEHC1:
- model_IHEHC1 = f"{self.model}-InternalHub-EHC1"
- model_IHEHC1IH = f"{self.model}-InternalHub-EHC1-InternalHub"
- self.map_config["IOKitPersonalities_x86_64"][model_IHEHC1]["model"] = spoofed_map
- self.map_config["IOKitPersonalities_x86_64"][model_IHEHC1IH]["model"] = spoofed_map
- if self.model in ModelArray.IHEHC2:
- model_IHEHC2 = f"{self.model}-InternalHub-EHC2"
- self.map_config["IOKitPersonalities_x86_64"][model_IHEHC2]["model"] = spoofed_map
- if self.model in ModelArray.IH:
- model_IH = f"{self.model}-InternalHub"
- self.map_config["IOKitPersonalities_x86_64"][model_IH]["model"] = spoofed_map
- plistlib.dump(self.map_config, Path(self.new_map_ls).open("wb"), sort_keys=True)
-
+
if self.model in ModelArray.DualGPUPatch:
print("- Adding dual GPU patch")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " agdpmod=pikera"
@@ -205,33 +150,93 @@ class BuildOpenCore:
if self.model in ModelArray.MacBookAir61:
print("- Spoofing to MacBookAir6,1")
spoofed_model = "MacBookAir6,1"
+ spoofed_board = "Mac-35C1E88140C3E6CF"
elif self.model in ModelArray.MacBookAir62:
print("- Spoofing to MacBookAir6,2")
spoofed_model = "MacBookAir6,2"
+ spoofed_board = "Mac-7DF21CB3ED6977E5"
elif self.model in ModelArray.MacBookPro111:
print("- Spoofing to MacBookPro11,1")
spoofed_model = "MacBookPro11,1"
+ spoofed_board = "Mac-189A3D4F975D5FFC"
elif self.model in ModelArray.MacBookPro113:
print("- Spoofing to MacBookPro11,3")
spoofed_model = "MacBookPro11,3"
+ spoofed_board = "Mac-2BD1B31983FE1663"
elif self.model in ModelArray.Macmini71:
print("- Spoofing to Macmini7,1")
spoofed_model = "Macmini7,1"
+ spoofed_board = "Mac-35C5E08120C7EEAF"
elif self.model in ModelArray.iMac151:
print("- Spoofing to iMac15,1")
spoofed_model = "iMac15,1"
+ spoofed_board = "Mac-42FD25EABCABB274"
elif self.model in ModelArray.iMac144:
print("- Spoofing to iMac14,4")
spoofed_model = "iMac14,4"
+ spoofed_board = "Mac-81E3E92DD6088272"
elif self.model in ModelArray.MacPro71:
print("- Spoofing to MacPro7,1")
spoofed_model = "MacPro7,1"
+ spoofed_board = "Mac-27AD2F918AE68F61"
macserial_output = subprocess.run([self.constants.macserial_path] + f"-g -m {spoofed_model} -n 1".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
macserial_output = macserial_output.stdout.decode().strip().split(" | ")
- self.config["PlatformInfo"]["Generic"]["SystemProductName"] = spoofed_model
- self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
- self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
- self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
+
+
+
+ # Setup menu
+ smbios_mod = True
+ while smbios_mod == True:
+ print("Use original or generate new serials")
+ print("For new users, we recommend use originals(ie. y)")
+ smbios_mod = input("Use original serials?(y, n): ")
+
+ if smbios_mod in {"y", "Y", "yes", "Yes"}:
+ spoofed_model = self.model
+ self.config["PlatformInfo"]["SMBIOS"]["BoardProduct"] = spoofed_board
+ elif smbios_mod in {"n", "N", "no", "No"}:
+ self.config["PlatformInfo"]["Automatic"] = True
+ self.config["PlatformInfo"]["UpdateDataHub"] = True
+ self.config["PlatformInfo"]["UpdateNVRAM"] = True
+ self.config["PlatformInfo"]["Generic"]["SystemProductName"] = spoofed_model
+ self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
+ self.config["PlatformInfo"]["Generic"]["MLB"] = macserial_output[1]
+ self.config["PlatformInfo"]["Generic"]["SystemUUID"] = str(uuid.uuid4()).upper()
+ else:
+ smbios_mod = True
+
+ # USB Map
+ usb_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Maps/Universal/Info.plist")
+ self.new_map_ls = Path(self.constants.map_contents_folder) / Path(f"Info.plist")
+ self.map_config = plistlib.load(Path(self.new_map_ls).open("rb"))
+
+ self.map_config["IOKitPersonalities_x86_64"][self.model]["model"] = spoofed_model
+ if self.model in ModelArray.EHCI:
+ model_EHCI = f"{self.model}-EHCI"
+ self.map_config["IOKitPersonalities_x86_64"][model_EHCI]["model"] = spoofed_model
+ if self.model in ModelArray.EHC1:
+ model_EHC1 = f"{self.model}-EHC1"
+ self.map_config["IOKitPersonalities_x86_64"][model_EHC1]["model"] = spoofed_model
+ if self.model in ModelArray.EHC2:
+ model_EHC2 = f"{self.model}-EHC2"
+ self.map_config["IOKitPersonalities_x86_64"][model_EHC2]["model"] = spoofed_model
+ if self.model in ModelArray.OHC1:
+ model_OHC1 = f"{self.model}-OHC1"
+ model_OHC2 = f"{self.model}-OHC2"
+ self.map_config["IOKitPersonalities_x86_64"][model_OHC1]["model"] = spoofed_model
+ self.map_config["IOKitPersonalities_x86_64"][model_OHC2]["model"] = spoofed_model
+ if self.model in ModelArray.IHEHC1:
+ model_IHEHC1 = f"{self.model}-InternalHub-EHC1"
+ model_IHEHC1IH = f"{self.model}-InternalHub-EHC1-InternalHub"
+ self.map_config["IOKitPersonalities_x86_64"][model_IHEHC1]["model"] = spoofed_model
+ self.map_config["IOKitPersonalities_x86_64"][model_IHEHC1IH]["model"] = spoofed_model
+ if self.model in ModelArray.IHEHC2:
+ model_IHEHC2 = f"{self.model}-InternalHub-EHC2"
+ self.map_config["IOKitPersonalities_x86_64"][model_IHEHC2]["model"] = spoofed_model
+ if self.model in ModelArray.IH:
+ model_IH = f"{self.model}-InternalHub"
+ self.map_config["IOKitPersonalities_x86_64"][model_IH]["model"] = spoofed_model
+ plistlib.dump(self.map_config, Path(self.new_map_ls).open("wb"), sort_keys=True)
@staticmethod
def get_item_by_kv(iterable, key, value):
diff --git a/payloads/Config/v0.6.7/config.plist b/payloads/Config/v0.6.7/config.plist
index 5e3209596..a3a0b8f17 100644
--- a/payloads/Config/v0.6.7/config.plist
+++ b/payloads/Config/v0.6.7/config.plist
@@ -819,9 +819,40 @@
PlatformInfo
Automatic
-
+
CustomMemory
+ DataHub
+
+ ARTFrequency
+ 0
+ BoardProduct
+
+ BoardRevision
+
+ DevicePathsSupported
+ 0
+ FSBFrequency
+ 0
+ InitialTSC
+ 0
+ PlatformName
+
+ SmcBranch
+
+ SmcPlatform
+
+ SmcRevision
+
+ StartupPowerEvents
+ 0
+ SystemProductName
+
+ SystemSerialNumber
+
+ SystemUUID
+
+
Generic
AdviseWindows
@@ -845,10 +876,84 @@
SystemUUID
00000000-0000-0000-0000-000000000000
+ PlatformNVRAM
+
+ BID
+
+ FirmwareFeatures
+
+ FirmwareFeaturesMask
+
+ MLB
+
+ ROM
+
+ SystemSerialNumber
+
+ SystemUUID
+
+
+ SMBIOS
+
+ BIOSReleaseDate
+
+ BIOSVendor
+
+ BIOSVersion
+ 9999.999.999.999.999
+ BoardAssetTag
+
+ BoardLocationInChassis
+
+ BoardManufacturer
+
+ BoardProduct
+ Mac-AA95B1DDAB278B95
+ BoardSerialNumber
+
+ BoardType
+ 0
+ BoardVersion
+
+ ChassisAssetTag
+
+ ChassisManufacturer
+
+ ChassisSerialNumber
+
+ ChassisType
+ 0
+ ChassisVersion
+
+ FirmwareFeatures
+
+ FirmwareFeaturesMask
+
+ PlatformFeature
+ 0
+ ProcessorType
+ 0
+ SmcVersion
+
+ SystemFamily
+
+ SystemManufacturer
+
+ SystemProductName
+
+ SystemSKUNumber
+
+ SystemSerialNumber
+
+ SystemUUID
+
+ SystemVersion
+
+
UpdateDataHub
-
+
UpdateNVRAM
-
+
UpdateSMBIOS
UpdateSMBIOSMode