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.
Files changed (164) hide show
  1. misc/plist_sniffer.py +15 -15
  2. misc/remotexpc_sniffer.py +29 -28
  3. misc/understanding_idevice_protocol_layers.md +15 -10
  4. pymobiledevice3/__main__.py +317 -127
  5. pymobiledevice3/_version.py +22 -4
  6. pymobiledevice3/bonjour.py +358 -113
  7. pymobiledevice3/ca.py +253 -16
  8. pymobiledevice3/cli/activation.py +31 -23
  9. pymobiledevice3/cli/afc.py +49 -40
  10. pymobiledevice3/cli/amfi.py +16 -21
  11. pymobiledevice3/cli/apps.py +87 -42
  12. pymobiledevice3/cli/backup.py +160 -90
  13. pymobiledevice3/cli/bonjour.py +44 -40
  14. pymobiledevice3/cli/cli_common.py +204 -198
  15. pymobiledevice3/cli/companion_proxy.py +14 -14
  16. pymobiledevice3/cli/crash.py +105 -56
  17. pymobiledevice3/cli/developer/__init__.py +62 -0
  18. pymobiledevice3/cli/developer/accessibility/__init__.py +65 -0
  19. pymobiledevice3/cli/developer/accessibility/settings.py +43 -0
  20. pymobiledevice3/cli/developer/arbitration.py +50 -0
  21. pymobiledevice3/cli/developer/condition.py +33 -0
  22. pymobiledevice3/cli/developer/core_device.py +294 -0
  23. pymobiledevice3/cli/developer/debugserver.py +244 -0
  24. pymobiledevice3/cli/developer/dvt/__init__.py +438 -0
  25. pymobiledevice3/cli/developer/dvt/core_profile_session.py +295 -0
  26. pymobiledevice3/cli/developer/dvt/simulate_location.py +56 -0
  27. pymobiledevice3/cli/developer/dvt/sysmon/__init__.py +69 -0
  28. pymobiledevice3/cli/developer/dvt/sysmon/process.py +188 -0
  29. pymobiledevice3/cli/developer/fetch_symbols.py +108 -0
  30. pymobiledevice3/cli/developer/simulate_location.py +51 -0
  31. pymobiledevice3/cli/diagnostics/__init__.py +75 -0
  32. pymobiledevice3/cli/diagnostics/battery.py +47 -0
  33. pymobiledevice3/cli/idam.py +42 -0
  34. pymobiledevice3/cli/lockdown.py +108 -103
  35. pymobiledevice3/cli/mounter.py +158 -99
  36. pymobiledevice3/cli/notification.py +38 -26
  37. pymobiledevice3/cli/pcap.py +45 -24
  38. pymobiledevice3/cli/power_assertion.py +18 -17
  39. pymobiledevice3/cli/processes.py +17 -23
  40. pymobiledevice3/cli/profile.py +165 -109
  41. pymobiledevice3/cli/provision.py +35 -34
  42. pymobiledevice3/cli/remote.py +217 -129
  43. pymobiledevice3/cli/restore.py +159 -143
  44. pymobiledevice3/cli/springboard.py +63 -53
  45. pymobiledevice3/cli/syslog.py +193 -86
  46. pymobiledevice3/cli/usbmux.py +73 -33
  47. pymobiledevice3/cli/version.py +5 -7
  48. pymobiledevice3/cli/webinspector.py +376 -214
  49. pymobiledevice3/common.py +3 -1
  50. pymobiledevice3/exceptions.py +182 -58
  51. pymobiledevice3/irecv.py +52 -53
  52. pymobiledevice3/irecv_devices.py +1489 -464
  53. pymobiledevice3/lockdown.py +473 -275
  54. pymobiledevice3/lockdown_service_provider.py +15 -8
  55. pymobiledevice3/osu/os_utils.py +27 -9
  56. pymobiledevice3/osu/posix_util.py +34 -15
  57. pymobiledevice3/osu/win_util.py +14 -8
  58. pymobiledevice3/pair_records.py +102 -21
  59. pymobiledevice3/remote/common.py +8 -4
  60. pymobiledevice3/remote/core_device/app_service.py +94 -67
  61. pymobiledevice3/remote/core_device/core_device_service.py +17 -14
  62. pymobiledevice3/remote/core_device/device_info.py +5 -5
  63. pymobiledevice3/remote/core_device/diagnostics_service.py +19 -4
  64. pymobiledevice3/remote/core_device/file_service.py +53 -23
  65. pymobiledevice3/remote/remote_service_discovery.py +79 -45
  66. pymobiledevice3/remote/remotexpc.py +73 -44
  67. pymobiledevice3/remote/tunnel_service.py +442 -317
  68. pymobiledevice3/remote/utils.py +14 -13
  69. pymobiledevice3/remote/xpc_message.py +145 -125
  70. pymobiledevice3/resources/dsc_uuid_map.py +19 -19
  71. pymobiledevice3/resources/firmware_notifications.py +20 -16
  72. pymobiledevice3/resources/notifications.txt +144 -0
  73. pymobiledevice3/restore/asr.py +27 -27
  74. pymobiledevice3/restore/base_restore.py +110 -21
  75. pymobiledevice3/restore/consts.py +87 -66
  76. pymobiledevice3/restore/device.py +59 -12
  77. pymobiledevice3/restore/fdr.py +46 -48
  78. pymobiledevice3/restore/ftab.py +19 -19
  79. pymobiledevice3/restore/img4.py +163 -0
  80. pymobiledevice3/restore/mbn.py +587 -0
  81. pymobiledevice3/restore/recovery.py +151 -151
  82. pymobiledevice3/restore/restore.py +562 -544
  83. pymobiledevice3/restore/restore_options.py +131 -110
  84. pymobiledevice3/restore/restored_client.py +51 -31
  85. pymobiledevice3/restore/tss.py +385 -267
  86. pymobiledevice3/service_connection.py +252 -59
  87. pymobiledevice3/services/accessibilityaudit.py +202 -120
  88. pymobiledevice3/services/afc.py +962 -365
  89. pymobiledevice3/services/amfi.py +24 -30
  90. pymobiledevice3/services/companion.py +23 -19
  91. pymobiledevice3/services/crash_reports.py +71 -47
  92. pymobiledevice3/services/debugserver_applist.py +3 -3
  93. pymobiledevice3/services/device_arbitration.py +8 -8
  94. pymobiledevice3/services/device_link.py +101 -79
  95. pymobiledevice3/services/diagnostics.py +973 -967
  96. pymobiledevice3/services/dtfetchsymbols.py +8 -8
  97. pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +4 -4
  98. pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +4 -4
  99. pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +85 -74
  100. pymobiledevice3/services/dvt/instruments/application_listing.py +2 -3
  101. pymobiledevice3/services/dvt/instruments/condition_inducer.py +7 -6
  102. pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +466 -384
  103. pymobiledevice3/services/dvt/instruments/device_info.py +20 -11
  104. pymobiledevice3/services/dvt/instruments/energy_monitor.py +1 -1
  105. pymobiledevice3/services/dvt/instruments/graphics.py +1 -1
  106. pymobiledevice3/services/dvt/instruments/location_simulation.py +1 -1
  107. pymobiledevice3/services/dvt/instruments/location_simulation_base.py +10 -10
  108. pymobiledevice3/services/dvt/instruments/network_monitor.py +17 -17
  109. pymobiledevice3/services/dvt/instruments/notifications.py +1 -1
  110. pymobiledevice3/services/dvt/instruments/process_control.py +35 -10
  111. pymobiledevice3/services/dvt/instruments/screenshot.py +2 -2
  112. pymobiledevice3/services/dvt/instruments/sysmontap.py +15 -15
  113. pymobiledevice3/services/dvt/testmanaged/xcuitest.py +42 -52
  114. pymobiledevice3/services/file_relay.py +10 -10
  115. pymobiledevice3/services/heartbeat.py +9 -8
  116. pymobiledevice3/services/house_arrest.py +16 -15
  117. pymobiledevice3/services/idam.py +20 -0
  118. pymobiledevice3/services/installation_proxy.py +173 -81
  119. pymobiledevice3/services/lockdown_service.py +20 -10
  120. pymobiledevice3/services/misagent.py +22 -19
  121. pymobiledevice3/services/mobile_activation.py +147 -64
  122. pymobiledevice3/services/mobile_config.py +331 -294
  123. pymobiledevice3/services/mobile_image_mounter.py +141 -113
  124. pymobiledevice3/services/mobilebackup2.py +203 -145
  125. pymobiledevice3/services/notification_proxy.py +11 -11
  126. pymobiledevice3/services/os_trace.py +134 -74
  127. pymobiledevice3/services/pcapd.py +314 -302
  128. pymobiledevice3/services/power_assertion.py +10 -9
  129. pymobiledevice3/services/preboard.py +4 -4
  130. pymobiledevice3/services/remote_fetch_symbols.py +21 -14
  131. pymobiledevice3/services/remote_server.py +176 -146
  132. pymobiledevice3/services/restore_service.py +16 -16
  133. pymobiledevice3/services/screenshot.py +15 -12
  134. pymobiledevice3/services/simulate_location.py +7 -7
  135. pymobiledevice3/services/springboard.py +15 -15
  136. pymobiledevice3/services/syslog.py +5 -5
  137. pymobiledevice3/services/web_protocol/alert.py +11 -11
  138. pymobiledevice3/services/web_protocol/automation_session.py +251 -239
  139. pymobiledevice3/services/web_protocol/cdp_screencast.py +46 -37
  140. pymobiledevice3/services/web_protocol/cdp_server.py +19 -19
  141. pymobiledevice3/services/web_protocol/cdp_target.py +411 -373
  142. pymobiledevice3/services/web_protocol/driver.py +114 -111
  143. pymobiledevice3/services/web_protocol/element.py +124 -111
  144. pymobiledevice3/services/web_protocol/inspector_session.py +106 -102
  145. pymobiledevice3/services/web_protocol/selenium_api.py +49 -49
  146. pymobiledevice3/services/web_protocol/session_protocol.py +18 -12
  147. pymobiledevice3/services/web_protocol/switch_to.py +30 -27
  148. pymobiledevice3/services/webinspector.py +189 -155
  149. pymobiledevice3/tcp_forwarder.py +87 -69
  150. pymobiledevice3/tunneld/__init__.py +0 -0
  151. pymobiledevice3/tunneld/api.py +63 -0
  152. pymobiledevice3/tunneld/server.py +603 -0
  153. pymobiledevice3/usbmux.py +198 -147
  154. pymobiledevice3/utils.py +14 -11
  155. {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/METADATA +55 -28
  156. pymobiledevice3-7.0.6.dist-info/RECORD +188 -0
  157. {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/WHEEL +1 -1
  158. pymobiledevice3/cli/developer.py +0 -1215
  159. pymobiledevice3/cli/diagnostics.py +0 -99
  160. pymobiledevice3/tunneld.py +0 -524
  161. pymobiledevice3-4.14.6.dist-info/RECORD +0 -168
  162. {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info}/entry_points.txt +0 -0
  163. {pymobiledevice3-4.14.6.dist-info → pymobiledevice3-7.0.6.dist-info/licenses}/LICENSE +0 -0
  164. {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 = 'com.apple.dt.simulatelocation'
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
- """ stop simulation """
16
+ """stop simulation"""
17
17
  service = self.lockdown.start_lockdown_developer_service(self.SERVICE_NAME)
18
- service.sendall(struct.pack('>I', 1))
18
+ service.sendall(struct.pack(">I", 1))
19
19
 
20
20
  def set(self, latitude: float, longitude: float) -> None:
21
- """ stop simulation """
21
+ """stop simulation"""
22
22
  service = self.lockdown.start_lockdown_developer_service(self.SERVICE_NAME)
23
- service.sendall(struct.pack('>I', 0))
23
+ service.sendall(struct.pack(">I", 0))
24
24
  latitude = str(latitude).encode()
25
25
  longitude = str(longitude).encode()
26
- service.sendall(struct.pack('>I', len(latitude)) + latitude)
27
- service.sendall(struct.pack('>I', len(longitude)) + longitude)
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 = 'com.apple.springboardservices.shim.remote'
18
- SERVICE_NAME = 'com.apple.springboardservices'
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 = '2') -> list:
27
- cmd = {'command': 'getIconState'}
26
+ def get_icon_state(self, format_version: str = "2") -> list:
27
+ cmd = {"command": "getIconState"}
28
28
  if format_version:
29
- cmd['formatVersion'] = format_version
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({'command': 'setIconState', 'iconState': newstate})
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({'command': 'getIconPNGData',
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({'command': 'getInterfaceOrientation'})
44
- return InterfaceOrientation(res.get('interfaceOrientation'))
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({'command': 'getHomeScreenWallpaperPNGData'}).get('pngData')
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({'command': 'getHomeScreenIconMetrics'})
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({'command': 'getWallpaperInfo', 'wallpaperName': wallpaper_name})
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
- 'command': 'getWallpaperPreviewImage', 'wallpaperName': wallpaper_name})['pngData']
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 = '%H:%M:%S'
8
- SYSLOG_LINE_SPLITTER = b'\n\x00'
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 = 'com.apple.syslog_relay'
17
- RSD_SERVICE_NAME = 'com.apple.syslog_relay.shim.remote'
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
- """ Accepts the alert available. """
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
- """ Dismisses the alert available. """
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
- """ Gets the text of the Alert. """
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()