toggle to show all spoofable models

This commit is contained in:
leminlimez
2024-12-05 19:05:15 -05:00
parent 3137aa529f
commit 60f7df7a6c
5 changed files with 71 additions and 12 deletions

View File

@@ -51,9 +51,11 @@ class DeviceManager:
self.current_device_index = 0 self.current_device_index = 0
# preferences # preferences
self.apply_over_wifi = True # TODO: Move to its own class
self.apply_over_wifi = False
self.auto_reboot = True self.auto_reboot = True
self.allow_risky_tweaks = False self.allow_risky_tweaks = False
self.show_all_spoofable_models = False
self.skip_setup = True self.skip_setup = True
self.supervised = False self.supervised = False
self.organization_name = "" self.organization_name = ""

View File

@@ -158,6 +158,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled) self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled) self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled) self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled) self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled) self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled)
@@ -283,20 +284,21 @@ class MainWindow(QtWidgets.QMainWindow):
# indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads # indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads
# TODO: Make this get fetched from the gui on app startup # TODO: Make this get fetched from the gui on app startup
spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"] spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"]
if self.device_manager.get_current_device_model().startswith("iPhone"): if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPhone"):
# re-enable iPhone spoof models # re-enable iPhone spoof models
self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6]) self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6])
# add iPad models on phones (for testing) if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPad"):
# re-enable iPad spoof models # re-enable iPad spoof models
self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:]) self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:])
def change_selected_device(self, index): def change_selected_device(self, index):
self.ui.showAllSpoofableChk.hide()
if len(self.device_manager.devices) > 0: if len(self.device_manager.devices) > 0:
self.device_manager.set_current_device(index=index) self.device_manager.set_current_device(index=index)
# hide options that are for newer versions # hide options that are for newer versions
# remove the new dynamic island options # remove the new dynamic island options
MinTweakVersions = { MinTweakVersions = {
"no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl], "no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl, self.ui.showAllSpoofableChk],
"exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)], "exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)],
"18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent], "18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent],
"18.0": [self.ui.aodChk, self.ui.aodVibrancyChk, self.ui.iphone16SettingsChk] "18.0": [self.ui.aodChk, self.ui.aodVibrancyChk, self.ui.iphone16SettingsChk]
@@ -370,9 +372,10 @@ class MainWindow(QtWidgets.QMainWindow):
self.settings = QtCore.QSettings() self.settings = QtCore.QSettings()
try: try:
# load the settings # load the settings
apply_over_wifi = self.settings.value("apply_over_wifi", True, type=bool) apply_over_wifi = self.settings.value("apply_over_wifi", False, type=bool)
auto_reboot = self.settings.value("auto_reboot", True, type=bool) auto_reboot = self.settings.value("auto_reboot", True, type=bool)
risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool) risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool)
show_all_spoofable = self.settings.value("show_all_spoofable_models", False, type=bool)
skip_setup = self.settings.value("skip_setup", True, type=bool) skip_setup = self.settings.value("skip_setup", True, type=bool)
supervised = self.settings.value("supervised", False, type=bool) supervised = self.settings.value("supervised", False, type=bool)
organization_name = self.settings.value("organization_name", "", type=str) organization_name = self.settings.value("organization_name", "", type=str)
@@ -380,6 +383,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi) self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
self.ui.autoRebootChk.setChecked(auto_reboot) self.ui.autoRebootChk.setChecked(auto_reboot)
self.ui.showRiskyChk.setChecked(risky_tweaks) self.ui.showRiskyChk.setChecked(risky_tweaks)
self.ui.showAllSpoofableChk.setChecked(show_all_spoofable)
self.ui.skipSetupChk.setChecked(skip_setup) self.ui.skipSetupChk.setChecked(skip_setup)
self.ui.supervisionChk.setChecked(supervised) self.ui.supervisionChk.setChecked(supervised)
self.ui.supervisionOrganization.setText(organization_name) self.ui.supervisionOrganization.setText(organization_name)
@@ -387,6 +391,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.device_manager.apply_over_wifi = apply_over_wifi self.device_manager.apply_over_wifi = apply_over_wifi
self.device_manager.auto_reboot = auto_reboot self.device_manager.auto_reboot = auto_reboot
self.device_manager.allow_risky_tweaks = risky_tweaks self.device_manager.allow_risky_tweaks = risky_tweaks
self.device_manager.show_all_spoofable_models = show_all_spoofable
self.device_manager.skip_setup = skip_setup self.device_manager.skip_setup = skip_setup
self.device_manager.supervised = supervised self.device_manager.supervised = supervised
self.device_manager.organization_name = organization_name self.device_manager.organization_name = organization_name
@@ -672,13 +677,13 @@ class MainWindow(QtWidgets.QMainWindow):
def on_spoofedModelDrp_activated(self, index: int): def on_spoofedModelDrp_activated(self, index: int):
idx_to_apply = index idx_to_apply = index
if index > 0 and not self.device_manager.get_current_device_model().startswith("iPhone"): if not self.device_manager.show_all_spoofable_models and not self.device_manager.get_current_device_model().startswith("iPhone"):
# offset the index for ipads # offset the index for ipads
idx_to_apply += 6 idx_to_apply += 6
tweaks["SpoofModel"].set_selected_option(idx_to_apply) tweaks["SpoofModel"].set_selected_option(idx_to_apply)
tweaks["SpoofHardware"].set_selected_option(idx_to_apply) tweaks["SpoofHardware"].set_selected_option(idx_to_apply)
tweaks["SpoofCPU"].set_selected_option(idx_to_apply) tweaks["SpoofCPU"].set_selected_option(idx_to_apply)
if idx_to_apply == 0: if index == 0:
tweaks["SpoofModel"].set_enabled(False) tweaks["SpoofModel"].set_enabled(False)
tweaks["SpoofHardware"].set_enabled(False) tweaks["SpoofHardware"].set_enabled(False)
tweaks["SpoofCPU"].set_enabled(False) tweaks["SpoofCPU"].set_enabled(False)
@@ -839,6 +844,12 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.advancedPageBtn.show() self.ui.advancedPageBtn.show()
else: else:
self.ui.advancedPageBtn.hide() self.ui.advancedPageBtn.hide()
def on_showAllSpoofableChk_toggled(self, checked: bool):
self.device_manager.show_all_spoofable_models = checked
# save the setting
self.settings.setValue("show_all_spoofable_models", checked)
# refresh the list of spoofable models
self.setup_spoofedModelDrp_models()
def on_autoRebootChk_toggled(self, checked: bool): def on_autoRebootChk_toggled(self, checked: bool):
self.device_manager.auto_reboot = checked self.device_manager.auto_reboot = checked
# save the setting # save the setting

View File

@@ -4767,7 +4767,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
<string>Allow Applying Over WiFi</string> <string>Allow Applying Over WiFi</string>
</property> </property>
<property name="checked"> <property name="checked">
<bool>true</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
@@ -4788,6 +4788,22 @@ Warning: Disabling will cause the battery to show &quot;Unknown Part&quot; or &q
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="showAllSpoofableChk">
<property name="toolTip">
<string>Show models for other device types in the AI device spoofing tab.</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="text">
<string>Show All Spoofable Models</string>
</property>
</widget>
</item>
<item> <item>
<widget class="Line" name="line_24"> <widget class="Line" name="line_24">
<property name="styleSheet"> <property name="styleSheet">

View File

@@ -2470,7 +2470,7 @@ class Ui_Nugget(object):
self._21.setContentsMargins(0, 0, 0, 0) self._21.setContentsMargins(0, 0, 0, 0)
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent) self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk") self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
self.allowWifiApplyingChk.setChecked(True) self.allowWifiApplyingChk.setChecked(False)
self._21.addWidget(self.allowWifiApplyingChk) self._21.addWidget(self.allowWifiApplyingChk)
@@ -2485,6 +2485,11 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk) self._21.addWidget(self.showRiskyChk)
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
self._21.addWidget(self.showAllSpoofableChk)
self.line_24 = QFrame(self.settingsPageContent) self.line_24 = QFrame(self.settingsPageContent)
self.line_24.setObjectName(u"line_24") self.line_24.setObjectName(u"line_24")
self.line_24.setStyleSheet(u"QFrame {\n" self.line_24.setStyleSheet(u"QFrame {\n"
@@ -3382,6 +3387,16 @@ class Ui_Nugget(object):
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None)) self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None)) self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None)) self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.showAllSpoofableChk.setStatusTip("")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setWhatsThis("")
#endif // QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None)) self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None)) self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None)) self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))

View File

@@ -2470,7 +2470,7 @@ class Ui_Nugget(object):
self._21.setContentsMargins(0, 0, 0, 0) self._21.setContentsMargins(0, 0, 0, 0)
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent) self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk") self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
self.allowWifiApplyingChk.setChecked(True) self.allowWifiApplyingChk.setChecked(False)
self._21.addWidget(self.allowWifiApplyingChk) self._21.addWidget(self.allowWifiApplyingChk)
@@ -2485,6 +2485,11 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk) self._21.addWidget(self.showRiskyChk)
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
self._21.addWidget(self.showAllSpoofableChk)
self.line_24 = QFrame(self.settingsPageContent) self.line_24 = QFrame(self.settingsPageContent)
self.line_24.setObjectName(u"line_24") self.line_24.setObjectName(u"line_24")
self.line_24.setStyleSheet(u"QFrame {\n" self.line_24.setStyleSheet(u"QFrame {\n"
@@ -3382,6 +3387,16 @@ class Ui_Nugget(object):
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None)) self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None)) self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None)) self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.showAllSpoofableChk.setStatusTip("")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setWhatsThis("")
#endif // QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None)) self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None)) self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None)) self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))