pymobiledevice3 6.1.6__tar.gz → 6.2.0__tar.gz

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 (230) hide show
  1. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/PKG-INFO +1 -1
  2. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/understanding_idevice_protocol_layers.md +10 -5
  3. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/_version.py +3 -3
  4. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/developer.py +86 -1
  5. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/PKG-INFO +1 -1
  6. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.gitattributes +0 -0
  7. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/FUNDING.yml +0 -0
  8. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  10. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/pull_request_template.md +0 -0
  12. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/workflows/codeql.yml +0 -0
  13. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/workflows/generate-executable.py +0 -0
  14. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/workflows/markdown-lint.yml +0 -0
  15. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/workflows/python-app.yml +0 -0
  16. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.github/workflows/python-publish.yml +0 -0
  17. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.gitignore +0 -0
  18. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/.pre-commit-config.yaml +0 -0
  19. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/CODE_OF_CONDUCT.md +0 -0
  20. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/CONTRIBUTING.md +0 -0
  21. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/LICENSE +0 -0
  22. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/README.md +0 -0
  23. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/example.gif +0 -0
  24. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/markdownlint-config.json +0 -0
  25. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/DTServices-14.2.txt +0 -0
  26. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/DTServices-14.5.txt +0 -0
  27. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/RemoteXPC.md +0 -0
  28. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/plist_sniffer.py +0 -0
  29. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/pyinstaller.md +0 -0
  30. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/remotexpc_sniffer.py +0 -0
  31. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/misc/usbmux_sniff.sh +0 -0
  32. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/__init__.py +0 -0
  33. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/__main__.py +0 -0
  34. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/bonjour.py +0 -0
  35. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/ca.py +0 -0
  36. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/__init__.py +0 -0
  37. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/activation.py +0 -0
  38. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/afc.py +0 -0
  39. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/amfi.py +0 -0
  40. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/apps.py +0 -0
  41. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/backup.py +0 -0
  42. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/bonjour.py +0 -0
  43. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/cli_common.py +0 -0
  44. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/companion_proxy.py +0 -0
  45. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/completions.py +0 -0
  46. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/crash.py +0 -0
  47. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/diagnostics.py +0 -0
  48. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/idam.py +0 -0
  49. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/lockdown.py +0 -0
  50. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/mounter.py +0 -0
  51. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/notification.py +0 -0
  52. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/pcap.py +0 -0
  53. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/power_assertion.py +0 -0
  54. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/processes.py +0 -0
  55. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/profile.py +0 -0
  56. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/provision.py +0 -0
  57. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/remote.py +0 -0
  58. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/restore.py +0 -0
  59. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/springboard.py +0 -0
  60. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/syslog.py +0 -0
  61. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/usbmux.py +0 -0
  62. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/version.py +0 -0
  63. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/cli/webinspector.py +0 -0
  64. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/common.py +0 -0
  65. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/exceptions.py +0 -0
  66. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/irecv.py +0 -0
  67. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/irecv_devices.py +0 -0
  68. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/lockdown.py +0 -0
  69. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/lockdown_service_provider.py +0 -0
  70. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/osu/__init__.py +0 -0
  71. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/osu/os_utils.py +0 -0
  72. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/osu/posix_util.py +0 -0
  73. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/osu/win_util.py +0 -0
  74. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/pair_records.py +0 -0
  75. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/__init__.py +0 -0
  76. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/common.py +0 -0
  77. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/__init__.py +0 -0
  78. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/app_service.py +0 -0
  79. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/core_device_service.py +0 -0
  80. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/device_info.py +0 -0
  81. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/diagnostics_service.py +0 -0
  82. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/core_device/file_service.py +0 -0
  83. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/module_imports.py +0 -0
  84. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/remote_service.py +0 -0
  85. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/remote_service_discovery.py +0 -0
  86. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/remotexpc.py +0 -0
  87. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/tunnel_service.py +0 -0
  88. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/utils.py +0 -0
  89. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/remote/xpc_message.py +0 -0
  90. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/__init__.py +0 -0
  91. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/dsc_uuid_map.json +0 -0
  92. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/dsc_uuid_map.py +0 -0
  93. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/firmware_notifications.py +0 -0
  94. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/notifications.txt +0 -0
  95. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/element_attribute.js +0 -0
  96. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/element_clear.js +0 -0
  97. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/enter_fullscreen.js +0 -0
  98. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/find_nodes.js +0 -0
  99. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/focus.js +0 -0
  100. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/get_attribute.js +0 -0
  101. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/is_displayed.js +0 -0
  102. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/is_editable.js +0 -0
  103. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/resources/webinspector/is_enabled.js +0 -0
  104. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/__init__.py +0 -0
  105. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/asr.py +0 -0
  106. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/base_restore.py +0 -0
  107. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/consts.py +0 -0
  108. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/device.py +0 -0
  109. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/fdr.py +0 -0
  110. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/ftab.py +0 -0
  111. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/img4.py +0 -0
  112. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/mbn.py +0 -0
  113. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/recovery.py +0 -0
  114. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/restore.py +0 -0
  115. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/restore_options.py +0 -0
  116. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/restored_client.py +0 -0
  117. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/restore/tss.py +0 -0
  118. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/service_connection.py +0 -0
  119. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/__init__.py +0 -0
  120. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/accessibilityaudit.py +0 -0
  121. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/afc.py +0 -0
  122. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/amfi.py +0 -0
  123. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/companion.py +0 -0
  124. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/crash_reports.py +0 -0
  125. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/debugserver_applist.py +0 -0
  126. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/device_arbitration.py +0 -0
  127. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/device_link.py +0 -0
  128. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/diagnostics.py +0 -0
  129. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dtfetchsymbols.py +0 -0
  130. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/__init__.py +0 -0
  131. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +0 -0
  132. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +0 -0
  133. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/__init__.py +0 -0
  134. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +0 -0
  135. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/application_listing.py +0 -0
  136. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/condition_inducer.py +0 -0
  137. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +0 -0
  138. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/device_info.py +0 -0
  139. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/energy_monitor.py +0 -0
  140. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/graphics.py +0 -0
  141. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/location_simulation.py +0 -0
  142. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/location_simulation_base.py +0 -0
  143. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/network_monitor.py +0 -0
  144. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/notifications.py +0 -0
  145. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/process_control.py +0 -0
  146. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/screenshot.py +0 -0
  147. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/instruments/sysmontap.py +0 -0
  148. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/dvt/testmanaged/xcuitest.py +0 -0
  149. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/file_relay.py +0 -0
  150. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/heartbeat.py +0 -0
  151. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/house_arrest.py +0 -0
  152. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/idam.py +0 -0
  153. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/installation_proxy.py +0 -0
  154. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/lockdown_service.py +0 -0
  155. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/misagent.py +0 -0
  156. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/mobile_activation.py +0 -0
  157. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/mobile_config.py +0 -0
  158. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/mobile_image_mounter.py +0 -0
  159. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/mobilebackup2.py +0 -0
  160. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/notification_proxy.py +0 -0
  161. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/os_trace.py +0 -0
  162. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/pcapd.py +0 -0
  163. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/power_assertion.py +0 -0
  164. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/preboard.py +0 -0
  165. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/remote_fetch_symbols.py +0 -0
  166. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/remote_server.py +0 -0
  167. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/restore_service.py +0 -0
  168. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/screenshot.py +0 -0
  169. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/simulate_location.py +0 -0
  170. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/springboard.py +0 -0
  171. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/syslog.py +0 -0
  172. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/__init__.py +0 -0
  173. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/alert.py +0 -0
  174. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/automation_session.py +0 -0
  175. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/cdp_screencast.py +0 -0
  176. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/cdp_server.py +0 -0
  177. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/cdp_target.py +0 -0
  178. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/driver.py +0 -0
  179. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/element.py +0 -0
  180. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/inspector_session.py +0 -0
  181. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/selenium_api.py +0 -0
  182. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/session_protocol.py +0 -0
  183. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/web_protocol/switch_to.py +0 -0
  184. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/services/webinspector.py +0 -0
  185. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/tcp_forwarder.py +0 -0
  186. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/tunneld/__init__.py +0 -0
  187. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/tunneld/api.py +0 -0
  188. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/tunneld/server.py +0 -0
  189. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/usbmux.py +0 -0
  190. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3/utils.py +0 -0
  191. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/SOURCES.txt +0 -0
  192. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/dependency_links.txt +0 -0
  193. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/entry_points.txt +0 -0
  194. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/requires.txt +0 -0
  195. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pymobiledevice3.egg-info/top_level.txt +0 -0
  196. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pyproject.toml +0 -0
  197. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/pytest.ini +0 -0
  198. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/requirements.txt +0 -0
  199. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/setup.cfg +0 -0
  200. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/__init__.py +0 -0
  201. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/cli/__init__.py +0 -0
  202. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/cli/test_cli.py +0 -0
  203. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/conftest.py +0 -0
  204. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/__init__.py +0 -0
  205. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/__init__.py +0 -0
  206. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/test_core_profile_session.py +0 -0
  207. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/test_dvt_secure_socket_proxy.py +0 -0
  208. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/test_fetch_symbols.py +0 -0
  209. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/test_location.py +0 -0
  210. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/instruments/test_screenshot.py +0 -0
  211. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_accessibility.py +0 -0
  212. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_afc.py +0 -0
  213. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_apps.py +0 -0
  214. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_backup2.py +0 -0
  215. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_bonjour.py +0 -0
  216. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_crash_reports.py +0 -0
  217. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_house_arrest.py +0 -0
  218. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_list_devices.py +0 -0
  219. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_lockdown.py +0 -0
  220. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_pcapd.py +0 -0
  221. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_springboard_services_relay.py +0 -0
  222. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_start_tunnel.py +0 -0
  223. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_syslog_relay.py +0 -0
  224. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_tcp_forwarder.py +0 -0
  225. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_web_protocol/__init__.py +0 -0
  226. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_web_protocol/common.py +0 -0
  227. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_web_protocol/conftest.py +0 -0
  228. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_web_protocol/test_driver.py +0 -0
  229. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_web_protocol/test_element.py +0 -0
  230. {pymobiledevice3-6.1.6 → pymobiledevice3-6.2.0}/tests/services/test_webinspector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 6.1.6
3
+ Version: 6.2.0
4
4
  Summary: Pure python3 implementation for working with iDevices (iPhone, etc...)
5
5
  Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
6
6
  Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
@@ -287,14 +287,14 @@ pymobiledevice3 developer dvt launch com.apple.mobilesafari
287
287
 
288
288
  ## DVT
289
289
 
290
- One of the more interesting developer services, is the one exposed by `DTServiceHub`. It is using DTX protocol messages,
290
+ One of the more interesting developer services is the one exposed by `DTServiceHub`. It is using DTX protocol messages,
291
291
  but since it mainly wraps and allows access to stuff in `DVTFoundation.framework` we called it DVT in our
292
292
  implementation (probably standing for DeveloperTools).
293
293
 
294
294
  We don't delve too much into this protocol, but we'll say in general it allows us to invoke a whitelist of ObjC methods
295
295
  in different ObjC objects. The terminology used by DVT to each such ObjC object is called "channels".
296
296
 
297
- In order to access this different object use the following APIs:
297
+ To access this different object use the following APIs:
298
298
 
299
299
  ```python
300
300
  from pymobiledevice3.lockdown import create_using_usbmux
@@ -313,17 +313,22 @@ dvt_channel = Screenshot(dvt)
313
313
  open('/tmp/screen.png', 'wb').write(dvt_channel.get_screenshot())
314
314
  ```
315
315
 
316
- Looking for an unimplemented feature/channel? Feel free to play with it (and submit a PR afterwards 🙏) using the
316
+ Looking for an unimplemented feature/channel? Feel free to play with it (and submit a PR afterward 🙏) using the
317
317
  following shell:
318
318
 
319
319
  ```shell
320
320
  pymobiledevice3 developer dvt shell
321
321
  ```
322
322
 
323
+ > **NOTE:** The full list of the methods that can be invoked on a DVT channel can be found by looking at all ObjC
324
+ > classes in `DVTInstrumentsFoundation.framework` implementing the `DTXAllowedRPC` protocol.
325
+ > There is an existing [Anubis rule](https://github.com/netanelc305/anubis/blob/9da337178ebd7e9f168e9df2d82b192eba4f1b30/example_rules.yaml#L14-L17)
326
+ > I use to diff new methods against the existing ones.
327
+
323
328
  ## RemoteXPC
324
329
 
325
330
  Starting at iOS 17.0, Apple made a large refactor in the manner we all interact with the developer services. There can
326
- be multiple reasons for that decision, but in general this refactor main key points are:
331
+ be multiple reasons for that decision, but in general these refactor main key points are:
327
332
 
328
333
  - Create a single standard for interacting with the new lockdown services (XPC Messages, Apple's proprietary IPC)
329
334
  - Optimize the protocol for large file transfers (such as the dyld_shared_cache)
@@ -347,7 +352,7 @@ Since all this communication is IP-based, but without any additional exported TC
347
352
  help us here. Instead, starting at iOS 16.0, when connecting an iDevice, it exports another non-standard USB-Ethernet
348
353
  adapter (with IPv6 link-local address), placing us in a subnet with the device's `remoted`.
349
354
 
350
- As we've said this communication is non-standard, and requires either:
355
+ As we've said, this communication is non-standard and requires either:
351
356
 
352
357
  - macOS Monterey or higher
353
358
  - Special driver on your linux/Windows machine
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '6.1.6'
32
- __version_tuple__ = version_tuple = (6, 1, 6)
31
+ __version__ = version = '6.2.0'
32
+ __version_tuple__ = version_tuple = (6, 2, 0)
33
33
 
34
- __commit_id__ = commit_id = 'g8900837a9'
34
+ __commit_id__ = commit_id = 'g54f93648f'
@@ -13,7 +13,7 @@ import sys
13
13
  import time
14
14
  from collections import namedtuple
15
15
  from dataclasses import asdict
16
- from datetime import datetime
16
+ from datetime import datetime, timezone
17
17
  from pathlib import Path
18
18
  from typing import IO, Optional
19
19
 
@@ -419,6 +419,91 @@ def sysmon_process_single(service_provider: LockdownClient, attributes: list[str
419
419
  print_json(result)
420
420
 
421
421
 
422
+ @sysmon_process.command("monitor-single", cls=Command)
423
+ @click.option(
424
+ "-a",
425
+ "--attributes",
426
+ multiple=True,
427
+ help="filter processes by attribute (key=value). Multiple filters on same attribute use OR logic, different attributes use AND.",
428
+ )
429
+ @click.option(
430
+ "-o",
431
+ "--output",
432
+ type=click.Path(),
433
+ default=None,
434
+ help="output file path for JSONL format (optional, defaults to stdout)",
435
+ )
436
+ @click.option(
437
+ "-i", "--interval", type=click.INT, default=None, help="minimum interval in milliseconds between outputs (optional)"
438
+ )
439
+ @click.option(
440
+ "-d",
441
+ "--duration",
442
+ type=click.INT,
443
+ default=None,
444
+ help="maximum duration in milliseconds to run monitoring (optional)",
445
+ )
446
+ def sysmon_process_monitor_single(
447
+ service_provider: LockdownClient,
448
+ attributes: list[str],
449
+ output: Optional[str],
450
+ interval: Optional[int],
451
+ duration: Optional[int],
452
+ ):
453
+ """Continuously monitor a single process with comprehensive metrics."""
454
+ count = 0
455
+ start_time = None
456
+
457
+ # Parse attributes into grouped filters: same attribute uses OR, different attributes use AND
458
+ parsed_filters: dict[str, list[str]] = {}
459
+ if attributes:
460
+ for raw in attributes:
461
+ key, value = raw.split("=", 1)
462
+ parsed_filters.setdefault(key, []).append(value)
463
+
464
+ def matches_filters(proc: dict) -> bool:
465
+ """Check if process matches all filter criteria."""
466
+ if not parsed_filters:
467
+ return True
468
+ return all(str(proc.get(key)) in values for key, values in parsed_filters.items())
469
+
470
+ with contextlib.ExitStack() as stack:
471
+ output_file = stack.enter_context(open(output, "w")) if output else None
472
+
473
+ dvt = stack.enter_context(DvtSecureSocketProxyService(lockdown=service_provider))
474
+ sysmon = stack.enter_context(Sysmontap(dvt))
475
+
476
+ for process_snapshot in sysmon.iter_processes():
477
+ count += 1
478
+
479
+ if count < 2:
480
+ continue
481
+
482
+ if start_time is None:
483
+ start_time = time.time()
484
+
485
+ if duration is not None:
486
+ elapsed_ms = (time.time() - start_time) * 1000
487
+ if elapsed_ms >= duration:
488
+ break
489
+
490
+ for process in process_snapshot:
491
+ if not matches_filters(process):
492
+ continue
493
+
494
+ process["timestamp"] = datetime.now(timezone.utc).isoformat()
495
+
496
+ if output_file:
497
+ json_output = json.dumps(process, default=default_json_encoder)
498
+ output_file.write(json_output + "\n")
499
+ output_file.flush()
500
+ else:
501
+ print_json(process)
502
+
503
+ if interval:
504
+ time.sleep(interval / 1000.0)
505
+
506
+
422
507
  @sysmon.command("system", cls=Command)
423
508
  @click.option("-f", "--fields", help='field names splitted by ",".')
424
509
  def sysmon_system(service_provider: LockdownClient, fields):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 6.1.6
3
+ Version: 6.2.0
4
4
  Summary: Pure python3 implementation for working with iDevices (iPhone, etc...)
5
5
  Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
6
6
  Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>
File without changes