mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
120 lines
5.3 KiB
Python
120 lines
5.3 KiB
Python
from enum import Enum
|
|
from pymobiledevice3.lockdown import LockdownClient
|
|
|
|
class Device:
|
|
def __init__(self, uuid: int, usb: bool, name: str, version: str, build: str, model: str, hardware: str, cpu: str, locale: str, ld: LockdownClient):
|
|
self.uuid = uuid
|
|
self.connected_via_usb = usb
|
|
self.name = name
|
|
self.version = version
|
|
self.build = build
|
|
self.model = model
|
|
self.hardware = hardware
|
|
self.cpu = cpu
|
|
self.locale = locale
|
|
self.ld = ld
|
|
|
|
def is_exploit_fully_patched(self) -> bool:
|
|
parsed_ver: Version = Version(self.version)
|
|
# mobile gestalt methods are completely patched on iOS 18.2 dev beta 3+
|
|
if (parsed_ver < Version("18.2")
|
|
or self.build == "22C5109p" or self.build == "22C5125e"):
|
|
return False
|
|
return True
|
|
|
|
def has_exploit(self) -> bool:
|
|
parsed_ver: Version = Version(self.version)
|
|
# make sure versions past 17.7.1 but before 18.0 aren't supported
|
|
if (parsed_ver >= Version("17.7.1") and parsed_ver < Version("18.0")):
|
|
return False
|
|
if (parsed_ver < Version("18.1")
|
|
or self.build == "22B5007p" or self.build == "22B5023e"
|
|
or self.build == "22B5034e" or self.build == "22B5045g"):
|
|
return True
|
|
return False
|
|
|
|
def supported(self) -> bool:
|
|
return self.has_exploit()
|
|
|
|
class Version:
|
|
def __init__(self, major: int, minor: int = 0, patch: int = 0):
|
|
self.major = major
|
|
self.minor = minor
|
|
self.patch = patch
|
|
|
|
def __init__(self, ver: str):
|
|
nums: list[str] = ver.split(".")
|
|
self.major = int(nums[0])
|
|
self.minor = int(nums[1]) if len(nums) > 1 else 0
|
|
self.patch = int(nums[2]) if len(nums) > 2 else 0
|
|
|
|
# Comparison Functions
|
|
def compare_to(self, other) -> int:
|
|
if self.major > other.major:
|
|
return 1
|
|
elif self.major < other.major:
|
|
return -1
|
|
if self.minor > other.minor:
|
|
return 1
|
|
elif self.minor < other.minor:
|
|
return -1
|
|
if self.patch > other.patch:
|
|
return 1
|
|
elif self.patch < other.patch:
|
|
return -1
|
|
return 0
|
|
|
|
def __gt__(self, other) -> bool:
|
|
return self.compare_to(other) == 1
|
|
def __ge__(self, other) -> bool:
|
|
comp: int = self.compare_to(other)
|
|
return comp == 0 or comp == 1
|
|
|
|
def __lt__(self, other) -> bool:
|
|
return self.compare_to(other) == -1
|
|
def __le__(self, other) -> bool:
|
|
comp: int = self.compare_to(other)
|
|
return comp == 0 or comp == -1
|
|
|
|
def __eq__(self, other) -> bool:
|
|
return self.compare_to(other) == 0
|
|
|
|
class Tweak(Enum):
|
|
StatusBar = 'Status Bar'
|
|
SpringboardOptions = 'Springboard Options'
|
|
InternalOptions = 'Internal Options'
|
|
SkipSetup = 'Setup Options'
|
|
|
|
class FileLocation(Enum):
|
|
# Control Center
|
|
mute = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.control-center.MuteModule.plist"
|
|
focus = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.FocusUIModule.plist"
|
|
spoken = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.siri.SpokenNotificationsModule.plist"
|
|
module_config = "ControlCenter/HomeDomain/Library/ControlCenter/ModuleConfiguration.plist"
|
|
replay_kit_audio = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.replaykit.AudioConferenceControlCenterModule.plist"
|
|
replay_kit_video = "ControlCenter/ManagedPreferencesDomain/mobile/com.apple.replaykit.VideoConferenceControlCenterModule.plist"
|
|
|
|
# Status Bar
|
|
status_bar = "StatusBar/HomeDomain/Library/SpringBoard/statusBarOverrides"
|
|
|
|
# Springboard Options
|
|
springboard = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.springboard.plist"
|
|
footnote = "SpringboardOptions/ConfigProfileDomain/Library/ConfigurationProfiles/SharedDeviceConfiguration.plist"
|
|
wifi = "SpringboardOptions/SystemPreferencesDomain/SystemConfiguration/com.apple.wifi.plist"
|
|
uikit = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.UIKit.plist"
|
|
accessibility = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.Accessibility.plist"
|
|
wifi_debug = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.MobileWiFi.debug.plist"
|
|
airdrop = "SpringboardOptions/ManagedPreferencesDomain/mobile/com.apple.sharingd.plist"
|
|
|
|
# Internal Options
|
|
global_prefs = "InternalOptions/ManagedPreferencesDomain/mobile/hiddendotGlobalPreferences.plist"
|
|
app_store = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.AppStore.plist"
|
|
backboardd = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.backboardd.plist"
|
|
core_motion = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.CoreMotion.plist"
|
|
pasteboard = "InternalOptions/HomeDomain/Library/Preferences/com.apple.Pasteboard.plist"
|
|
notes = "InternalOptions/ManagedPreferencesDomain/mobile/com.apple.mobilenotes.plist"
|
|
maps = "InternalOptions/AppDomain-com.apple.Maps/Library/Preferences/com.apple.Maps.plist"
|
|
weather = "InternalOptions/AppDomain-com.apple.weather/Library/Preferences/com.apple.weather.plist"
|
|
|
|
# Setup Options
|
|
cloud_config = "SkipSetup/ConfigProfileDomain/Library/ConfigurationProfiles/CloudConfigurationDetails.plist" |