Skip to content

Commit

Permalink
amfi: add reveal_developer_mode_option_in_ui()
Browse files Browse the repository at this point in the history
Co-authored-by: a.zhuravlov <[email protected]>
  • Loading branch information
AnNEDoMini and a.zhuravlov authored Sep 16, 2024
1 parent 9462992 commit e7fdb4e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
6 changes: 6 additions & 0 deletions pymobiledevice3/cli/amfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ def amfi() -> None:
pass


@amfi.command(cls=Command)
def reveal_developer_mode(service_provider: LockdownClient):
""" reveal developer mode option in device's UI """
AmfiService(service_provider).reveal_developer_mode_option_in_ui()


@amfi.command(cls=Command)
def enable_developer_mode(service_provider: LockdownClient):
""" enable developer mode """
Expand Down
13 changes: 9 additions & 4 deletions pymobiledevice3/services/amfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,21 @@


class AmfiService:

DEVELOPER_MODE_REVEAL = 0
DEVELOPER_MODE_ENABLE = 1
DEVELOPER_MODE_ACCEPT = 2

SERVICE_NAME = 'com.apple.amfi.lockdown'

def __init__(self, lockdown: LockdownClient):
self._lockdown = lockdown
self._logger = logging.getLogger(self.__module__)

def create_amfi_show_override_path_file(self):
def reveal_developer_mode_option_in_ui(self):
""" create an empty file at AMFIShowOverridePath """
service = self._lockdown.start_lockdown_service(self.SERVICE_NAME)
resp = service.send_recv_plist({'action': 0})
resp = service.send_recv_plist({'action': self.DEVELOPER_MODE_REVEAL})
if not resp.get('success'):
raise PyMobileDevice3Exception(f'create_AMFIShowOverridePath() failed with: {resp}')

Expand All @@ -30,7 +35,7 @@ def enable_developer_mode(self, enable_post_restart=True):
with "yes"
"""
service = self._lockdown.start_lockdown_service(self.SERVICE_NAME)
resp = service.send_recv_plist({'action': 1})
resp = service.send_recv_plist({'action': self.DEVELOPER_MODE_ENABLE})
error = resp.get('Error')

if error is not None:
Expand Down Expand Up @@ -62,6 +67,6 @@ def enable_developer_mode(self, enable_post_restart=True):
def enable_developer_mode_post_restart(self):
""" answer the prompt that appears after the restart with "yes" """
service = self._lockdown.start_lockdown_service(self.SERVICE_NAME)
resp = service.send_recv_plist({'action': 2})
resp = service.send_recv_plist({'action': self.DEVELOPER_MODE_ACCEPT})
if not resp.get('success'):
raise DeveloperModeError(f'enable_developer_mode_post_restart() failed: {resp}')

0 comments on commit e7fdb4e

Please sign in to comment.