pymobiledevice3 4.14.6__py3-none-any.whl → 7.0.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- misc/plist_sniffer.py +15 -15
- misc/remotexpc_sniffer.py +29 -28
- misc/understanding_idevice_protocol_layers.md +15 -10
- pymobiledevice3/__main__.py +317 -127
- pymobiledevice3/_version.py +22 -4
- pymobiledevice3/bonjour.py +358 -113
- pymobiledevice3/ca.py +253 -16
- pymobiledevice3/cli/activation.py +31 -23
- pymobiledevice3/cli/afc.py +49 -40
- pymobiledevice3/cli/amfi.py +16 -21
- pymobiledevice3/cli/apps.py +87 -42
- pymobiledevice3/cli/backup.py +160 -90
- pymobiledevice3/cli/bonjour.py +44 -40
- pymobiledevice3/cli/cli_common.py +204 -198
- pymobiledevice3/cli/companion_proxy.py +14 -14
- pymobiledevice3/cli/crash.py +105 -56
- pymobiledevice3/cli/developer/__init__.py +62 -0
- pymobiledevice3/cli/developer/accessibility/__init__.py +65 -0
- pymobiledevice3/cli/developer/accessibility/settings.py +43 -0
- pymobiledevice3/cli/developer/arbitration.py +50 -0
- pymobiledevice3/cli/developer/condition.py +33 -0
- pymobiledevice3/cli/developer/core_device.py +294 -0
- pymobiledevice3/cli/developer/debugserver.py +244 -0
- pymobiledevice3/cli/developer/dvt/__init__.py +438 -0
- pymobiledevice3/cli/developer/dvt/core_profile_session.py +295 -0
- pymobiledevice3/cli/developer/dvt/simulate_location.py +56 -0
- pymobiledevice3/cli/developer/dvt/sysmon/__init__.py +69 -0
- pymobiledevice3/cli/developer/dvt/sysmon/process.py +188 -0
- pymobiledevice3/cli/developer/fetch_symbols.py +108 -0
- pymobiledevice3/cli/developer/simulate_location.py +51 -0
- pymobiledevice3/cli/diagnostics/__init__.py +75 -0
- pymobiledevice3/cli/diagnostics/battery.py +47 -0
- pymobiledevice3/cli/idam.py +42 -0
- pymobiledevice3/cli/lockdown.py +108 -103
- pymobiledevice3/cli/mounter.py +158 -99
- pymobiledevice3/cli/notification.py +38 -26
- pymobiledevice3/cli/pcap.py +45 -24
- pymobiledevice3/cli/power_assertion.py +18 -17
- pymobiledevice3/cli/processes.py +17 -23
- pymobiledevice3/cli/profile.py +165 -109
- pymobiledevice3/cli/provision.py +35 -34
- pymobiledevice3/cli/remote.py +217 -129
- pymobiledevice3/cli/restore.py +159 -143
- pymobiledevice3/cli/springboard.py +63 -53
- pymobiledevice3/cli/syslog.py +193 -86
- pymobiledevice3/cli/usbmux.py +73 -33
- pymobiledevice3/cli/version.py +5 -7
- pymobiledevice3/cli/webinspector.py +376 -214
- pymobiledevice3/common.py +3 -1
- pymobiledevice3/exceptions.py +182 -58
- pymobiledevice3/irecv.py +52 -53
- pymobiledevice3/irecv_devices.py +1489 -464
- pymobiledevice3/lockdown.py +473 -275
- pymobiledevice3/lockdown_service_provider.py +15 -8
- pymobiledevice3/osu/os_utils.py +27 -9
- pymobiledevice3/osu/posix_util.py +34 -15
- pymobiledevice3/osu/win_util.py +14 -8
- pymobiledevice3/pair_records.py +102 -21
- pymobiledevice3/remote/common.py +8 -4
- pymobiledevice3/remote/core_device/app_service.py +94 -67
- pymobiledevice3/remote/core_device/core_device_service.py +17 -14
- pymobiledevice3/remote/core_device/device_info.py +5 -5
- pymobiledevice3/remote/core_device/diagnostics_service.py +19 -4
- pymobiledevice3/remote/core_device/file_service.py +53 -23
- pymobiledevice3/remote/remote_service_discovery.py +79 -45
- pymobiledevice3/remote/remotexpc.py +73 -44
- pymobiledevice3/remote/tunnel_service.py +442 -317
- pymobiledevice3/remote/utils.py +14 -13
- pymobiledevice3/remote/xpc_message.py +145 -125
- pymobiledevice3/resources/dsc_uuid_map.py +19 -19
- pymobiledevice3/resources/firmware_notifications.py +20 -16
- pymobiledevice3/resources/notifications.txt +144 -0
- pymobiledevice3/restore/asr.py +27 -27
- pymobiledevice3/restore/base_restore.py +110 -21
- pymobiledevice3/restore/consts.py +87 -66
- pymobiledevice3/restore/device.py +59 -12
- pymobiledevice3/restore/fdr.py +46 -48
- pymobiledevice3/restore/ftab.py +19 -19
- pymobiledevice3/restore/img4.py +163 -0
- pymobiledevice3/restore/mbn.py +587 -0
- pymobiledevice3/restore/recovery.py +151 -151
- pymobiledevice3/restore/restore.py +562 -544
- pymobiledevice3/restore/restore_options.py +131 -110
- pymobiledevice3/restore/restored_client.py +51 -31
- pymobiledevice3/restore/tss.py +385 -267
- pymobiledevice3/service_connection.py +252 -59
- pymobiledevice3/services/accessibilityaudit.py +202 -120
- pymobiledevice3/services/afc.py +962 -365
- pymobiledevice3/services/amfi.py +24 -30
- pymobiledevice3/services/companion.py +23 -19
- pymobiledevice3/services/crash_reports.py +71 -47
- pymobiledevice3/services/debugserver_applist.py +3 -3
- pymobiledevice3/services/device_arbitration.py +8 -8
- pymobiledevice3/services/device_link.py +101 -79
- pymobiledevice3/services/diagnostics.py +973 -967
- pymobiledevice3/services/dtfetchsymbols.py +8 -8
- pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +4 -4
- pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +4 -4
- pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +85 -74
- pymobiledevice3/services/dvt/instruments/application_listing.py +2 -3
- pymobiledevice3/services/dvt/instruments/condition_inducer.py +7 -6
- pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +466 -384
- pymobiledevice3/services/dvt/instruments/device_info.py +20 -11
- pymobiledevice3/services/dvt/instruments/energy_monitor.py +1 -1
- pymobiledevice3/services/dvt/instruments/graphics.py +1 -1
- pymobiledevice3/services/dvt/instruments/location_simulation.py +1 -1
- pymobiledevice3/services/dvt/instruments/location_simulation_base.py +10 -10
- pymobiledevice3/services/dvt/instruments/network_monitor.py +17 -17
- pymobiledevice3/services/dvt/instruments/notifications.py +1 -1
- pymobiledevice3/services/dvt/instruments/process_control.py +35 -10
- pymobiledevice3/services/dvt/instruments/screenshot.py +2 -2
- pymobiledevice3/services/dvt/instruments/sysmontap.py +15 -15
- pymobiledevice3/services/dvt/testmanaged/xcuitest.py +42 -52
- pymobiledevice3/services/file_relay.py +10 -10
- pymobiledevice3/services/heartbeat.py +9 -8
- pymobiledevice3/services/house_arrest.py +16 -15
- pymobiledevice3/services/idam.py +20 -0
- pymobiledevice3/services/installation_proxy.py +173 -81
- pymobiledevice3/services/lockdown_service.py +20 -10
- pymobiledevice3/services/misagent.py +22 -19
- pymobiledevice3/services/mobile_activation.py +147 -64
- pymobiledevice3/services/mobile_config.py +331 -294
- pymobiledevice3/services/mobile_image_mounter.py +141 -113
- pymobiledevice3/services/mobilebackup2.py +203 -145
- pymobiledevice3/services/notification_proxy.py +11 -11
- pymobiledevice3/services/os_trace.py +134 -74
- pymobiledevice3/services/pcapd.py +314 -302
- pymobiledevice3/services/power_assertion.py +10 -9
- pymobiledevice3/services/preboard.py +4 -4
- pymobiledevice3/services/remote_fetch_symbols.py +21 -14
- pymobiledevice3/services/remote_server.py +176 -146
- pymobiledevice3/services/restore_service.py +16 -16
- pymobiledevice3/services/screenshot.py +15 -12
- pymobiledevice3/services/simulate_location.py +7 -7
- pymobiledevice3/services/springboard.py +15 -15
- pymobiledevice3/services/syslog.py +5 -5
- pymobiledevice3/services/web_protocol/alert.py +11 -11
- pymobiledevice3/services/web_protocol/automation_session.py +251 -239
- pymobiledevice3/services/web_protocol/cdp_screencast.py +46 -37
- pymobiledevice3/services/web_protocol/cdp_server.py +19 -19
- pymobiledevice3/services/web_protocol/cdp_target.py +411 -373
- pymobiledevice3/services/web_protocol/driver.py +114 -111
- pymobiledevice3/services/web_protocol/element.py +124 -111
- pymobiledevice3/services/web_protocol/inspector_session.py +106 -102
- pymobiledevice3/services/web_protocol/selenium_api.py +49 -49
- pymobiledevice3/services/web_protocol/session_protocol.py +18 -12
- pymobiledevice3/services/web_protocol/switch_to.py +30 -27
- pymobiledevice3/services/webinspector.py +189 -155
- pymobiledevice3/tcp_forwarder.py +87 -69
- pymobiledevice3/tunneld/__init__.py +0 -0
- pymobiledevice3/tunneld/api.py +63 -0
- pymobiledevice3/tunneld/server.py +603 -0
- pymobiledevice3/usbmux.py +198 -147
- pymobiledevice3/utils.py +14 -11
- {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/METADATA +55 -28
- pymobiledevice3-7.0.6.dist-info/RECORD +188 -0
- {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/WHEEL +1 -1
- pymobiledevice3/cli/developer.py +0 -1215
- pymobiledevice3/cli/diagnostics.py +0 -99
- pymobiledevice3/tunneld.py +0 -524
- pymobiledevice3-4.14.6.dist-info/RECORD +0 -168
- {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/entry_points.txt +0 -0
- {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info/licenses}/LICENSE +0 -0
- {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/top_level.txt +0 -0
|
@@ -6,22 +6,22 @@ from pymobiledevice3.services.lockdown_service import LockdownService
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class DtSimulateLocation(LockdownService, LocationSimulationBase):
|
|
9
|
-
SERVICE_NAME =
|
|
9
|
+
SERVICE_NAME = "com.apple.dt.simulatelocation"
|
|
10
10
|
|
|
11
11
|
def __init__(self, lockdown: LockdownClient):
|
|
12
12
|
LockdownService.__init__(self, lockdown, self.SERVICE_NAME)
|
|
13
13
|
LocationSimulationBase.__init__(self)
|
|
14
14
|
|
|
15
15
|
def clear(self) -> None:
|
|
16
|
-
"""
|
|
16
|
+
"""stop simulation"""
|
|
17
17
|
service = self.lockdown.start_lockdown_developer_service(self.SERVICE_NAME)
|
|
18
|
-
service.sendall(struct.pack(
|
|
18
|
+
service.sendall(struct.pack(">I", 1))
|
|
19
19
|
|
|
20
20
|
def set(self, latitude: float, longitude: float) -> None:
|
|
21
|
-
"""
|
|
21
|
+
"""stop simulation"""
|
|
22
22
|
service = self.lockdown.start_lockdown_developer_service(self.SERVICE_NAME)
|
|
23
|
-
service.sendall(struct.pack(
|
|
23
|
+
service.sendall(struct.pack(">I", 0))
|
|
24
24
|
latitude = str(latitude).encode()
|
|
25
25
|
longitude = str(longitude).encode()
|
|
26
|
-
service.sendall(struct.pack(
|
|
27
|
-
service.sendall(struct.pack(
|
|
26
|
+
service.sendall(struct.pack(">I", len(latitude)) + latitude)
|
|
27
|
+
service.sendall(struct.pack(">I", len(longitude)) + longitude)
|
|
@@ -14,8 +14,8 @@ class InterfaceOrientation(IntEnum):
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class SpringBoardServicesService(LockdownService):
|
|
17
|
-
RSD_SERVICE_NAME =
|
|
18
|
-
SERVICE_NAME =
|
|
17
|
+
RSD_SERVICE_NAME = "com.apple.springboardservices.shim.remote"
|
|
18
|
+
SERVICE_NAME = "com.apple.springboardservices"
|
|
19
19
|
|
|
20
20
|
def __init__(self, lockdown: LockdownServiceProvider) -> None:
|
|
21
21
|
if isinstance(lockdown, LockdownClient):
|
|
@@ -23,38 +23,38 @@ class SpringBoardServicesService(LockdownService):
|
|
|
23
23
|
else:
|
|
24
24
|
super().__init__(lockdown, self.RSD_SERVICE_NAME)
|
|
25
25
|
|
|
26
|
-
def get_icon_state(self, format_version: str =
|
|
27
|
-
cmd = {
|
|
26
|
+
def get_icon_state(self, format_version: str = "2") -> list:
|
|
27
|
+
cmd = {"command": "getIconState"}
|
|
28
28
|
if format_version:
|
|
29
|
-
cmd[
|
|
29
|
+
cmd["formatVersion"] = format_version
|
|
30
30
|
return self.service.send_recv_plist(cmd)
|
|
31
31
|
|
|
32
32
|
def set_icon_state(self, newstate: Optional[list] = None) -> None:
|
|
33
33
|
if newstate is None:
|
|
34
34
|
newstate = {}
|
|
35
|
-
self.service.send_plist({
|
|
35
|
+
self.service.send_plist({"command": "setIconState", "iconState": newstate})
|
|
36
36
|
self.service.recv_prefixed()
|
|
37
37
|
|
|
38
38
|
def get_icon_pngdata(self, bundle_id: str) -> bytes:
|
|
39
|
-
return self.service.send_recv_plist({
|
|
40
|
-
'bundleId': bundle_id}).get('pngData')
|
|
39
|
+
return self.service.send_recv_plist({"command": "getIconPNGData", "bundleId": bundle_id}).get("pngData")
|
|
41
40
|
|
|
42
41
|
def get_interface_orientation(self) -> InterfaceOrientation:
|
|
43
|
-
res = self.service.send_recv_plist({
|
|
44
|
-
return InterfaceOrientation(res.get(
|
|
42
|
+
res = self.service.send_recv_plist({"command": "getInterfaceOrientation"})
|
|
43
|
+
return InterfaceOrientation(res.get("interfaceOrientation"))
|
|
45
44
|
|
|
46
45
|
def get_wallpaper_pngdata(self) -> bytes:
|
|
47
|
-
return self.service.send_recv_plist({
|
|
46
|
+
return self.service.send_recv_plist({"command": "getHomeScreenWallpaperPNGData"}).get("pngData")
|
|
48
47
|
|
|
49
48
|
def get_homescreen_icon_metrics(self) -> dict[str, float]:
|
|
50
|
-
return self.service.send_recv_plist({
|
|
49
|
+
return self.service.send_recv_plist({"command": "getHomeScreenIconMetrics"})
|
|
51
50
|
|
|
52
51
|
def get_wallpaper_info(self, wallpaper_name: str) -> dict:
|
|
53
|
-
return self.service.send_recv_plist({
|
|
52
|
+
return self.service.send_recv_plist({"command": "getWallpaperInfo", "wallpaperName": wallpaper_name})
|
|
54
53
|
|
|
55
54
|
def reload_icon_state(self) -> None:
|
|
56
55
|
self.set_icon_state(self.get_icon_state())
|
|
57
56
|
|
|
58
57
|
def get_wallpaper_preview_image(self, wallpaper_name: str) -> bytes:
|
|
59
|
-
return self.service.send_recv_plist({
|
|
60
|
-
|
|
58
|
+
return self.service.send_recv_plist({"command": "getWallpaperPreviewImage", "wallpaperName": wallpaper_name})[
|
|
59
|
+
"pngData"
|
|
60
|
+
]
|
|
@@ -4,8 +4,8 @@ from pymobiledevice3.services.lockdown_service import LockdownService
|
|
|
4
4
|
from pymobiledevice3.utils import try_decode
|
|
5
5
|
|
|
6
6
|
CHUNK_SIZE = 4096
|
|
7
|
-
TIME_FORMAT =
|
|
8
|
-
SYSLOG_LINE_SPLITTER = b
|
|
7
|
+
TIME_FORMAT = "%H:%M:%S"
|
|
8
|
+
SYSLOG_LINE_SPLITTER = b"\n\x00"
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class SyslogService(LockdownService):
|
|
@@ -13,8 +13,8 @@ class SyslogService(LockdownService):
|
|
|
13
13
|
View system logs
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
SERVICE_NAME =
|
|
17
|
-
RSD_SERVICE_NAME =
|
|
16
|
+
SERVICE_NAME = "com.apple.syslog_relay"
|
|
17
|
+
RSD_SERVICE_NAME = "com.apple.syslog_relay.shim.remote"
|
|
18
18
|
|
|
19
19
|
def __init__(self, service_provider: LockdownServiceProvider):
|
|
20
20
|
if isinstance(service_provider, LockdownClient):
|
|
@@ -23,7 +23,7 @@ class SyslogService(LockdownService):
|
|
|
23
23
|
super().__init__(service_provider, self.RSD_SERVICE_NAME)
|
|
24
24
|
|
|
25
25
|
def watch(self):
|
|
26
|
-
buf = b
|
|
26
|
+
buf = b""
|
|
27
27
|
while True:
|
|
28
28
|
# read in chunks till we have at least one syslog line
|
|
29
29
|
chunk = self.service.recv(CHUNK_SIZE)
|
|
@@ -5,22 +5,22 @@ class Alert:
|
|
|
5
5
|
"""
|
|
6
6
|
self.session = session
|
|
7
7
|
|
|
8
|
-
def accept(self):
|
|
9
|
-
"""
|
|
10
|
-
self.session.accept_current_javascript_dialog()
|
|
8
|
+
async def accept(self):
|
|
9
|
+
"""Accepts the alert available."""
|
|
10
|
+
await self.session.accept_current_javascript_dialog()
|
|
11
11
|
|
|
12
|
-
def dismiss(self):
|
|
13
|
-
"""
|
|
14
|
-
self.session.dismiss_current_javascript_dialog()
|
|
12
|
+
async def dismiss(self):
|
|
13
|
+
"""Dismisses the alert available."""
|
|
14
|
+
await self.session.dismiss_current_javascript_dialog()
|
|
15
15
|
|
|
16
|
-
def send_keys(self, text: str):
|
|
16
|
+
async def send_keys(self, text: str):
|
|
17
17
|
"""
|
|
18
18
|
Send Keys to the Alert.
|
|
19
19
|
:param text: Text to send to prompts.
|
|
20
20
|
"""
|
|
21
|
-
self.session.set_user_input_for_current_javascript_prompt(text)
|
|
21
|
+
await self.session.set_user_input_for_current_javascript_prompt(text)
|
|
22
22
|
|
|
23
23
|
@property
|
|
24
|
-
def text(self) -> str:
|
|
25
|
-
"""
|
|
26
|
-
return self.session.message_of_current_javascript_dialog()
|
|
24
|
+
async def text(self) -> str:
|
|
25
|
+
"""Gets the text of the Alert."""
|
|
26
|
+
return await self.session.message_of_current_javascript_dialog()
|