Source code for rpcclient.ios.client

import typing

from rpcclient.darwin.client import DarwinClient
from rpcclient.darwin.reports import Reports
from rpcclient.ios.accessibility import Accessibility
from rpcclient.ios.amfi import Amfi
from rpcclient.ios.backlight import Backlight
from rpcclient.ios.lockdown import Lockdown
from rpcclient.ios.mobile_gestalt import MobileGestalt
from rpcclient.ios.screen_capture import ScreenCapture
from rpcclient.ios.sprinboard import SpringBoard
from rpcclient.ios.telephony import Telephony
from rpcclient.ios.wifi import IosWifi
from rpcclient.protocol import arch_t

CRASH_REPORTS_DIR = 'Library/Logs/CrashReporter'


[docs] class IosClient(DarwinClient): def __init__(self, sock, sysname: str, arch: arch_t, create_socket_cb: typing.Callable): super().__init__(sock, sysname, arch, create_socket_cb) self.backlight = Backlight(self) self.reports = Reports(self, CRASH_REPORTS_DIR) self.mobile_gestalt = MobileGestalt(self) self.lockdown = Lockdown(self) self.telephony = Telephony(self) self.screen_capture = ScreenCapture(self) self.accessibility = Accessibility(self) self.wifi = IosWifi(self) self.springboard = SpringBoard(self) self.amfi = Amfi(self) self._radio_preferences = self.symbols.objc_getClass('RadiosPreferences').objc_call('new') @property def roots(self) -> typing.List[str]: """ get a list of all accessible darwin roots when used for lookup of files/preferences/... """ return super().roots + ['/var/mobile'] @property def airplane_mode(self) -> bool: # use MobileGestalt for a more accurate result return self.mobile_gestalt.AirplaneMode @airplane_mode.setter def airplane_mode(self, value: bool): """ set whether the device should enter airplane mode (turns off baseband, bt, etc...) """ self._radio_preferences.objc_call('setAirplaneMode:', value) self._radio_preferences.objc_call('synchronize')