pymobiledevice3 4.26.0__tar.gz → 4.26.2__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.

Potentially problematic release.


This version of pymobiledevice3 might be problematic. Click here for more details.

Files changed (227) hide show
  1. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/PKG-INFO +1 -1
  2. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/_version.py +3 -3
  3. pymobiledevice3-4.26.2/pymobiledevice3/ca.py +282 -0
  4. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/lockdown.py +23 -18
  5. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/notifications.txt +52 -0
  6. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/PKG-INFO +1 -1
  7. pymobiledevice3-4.26.0/pymobiledevice3/ca.py +0 -53
  8. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.gitattributes +0 -0
  9. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/FUNDING.yml +0 -0
  10. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  11. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  12. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  13. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/pull_request_template.md +0 -0
  14. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/codeql.yml +0 -0
  15. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/generate-executable.py +0 -0
  16. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/markdown-lint.yml +0 -0
  17. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/python-app.yml +0 -0
  18. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/python-publish.yml +0 -0
  19. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.gitignore +0 -0
  20. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.pre-commit-config.yaml +0 -0
  21. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/CODE_OF_CONDUCT.md +0 -0
  22. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/CONTRIBUTING.md +0 -0
  23. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/LICENSE +0 -0
  24. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/README.md +0 -0
  25. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/example.gif +0 -0
  26. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/markdownlint-config.json +0 -0
  27. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/DTServices-14.2.txt +0 -0
  28. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/DTServices-14.5.txt +0 -0
  29. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/RemoteXPC.md +0 -0
  30. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/plist_sniffer.py +0 -0
  31. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/pyinstaller.md +0 -0
  32. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/remotexpc_sniffer.py +0 -0
  33. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/understanding_idevice_protocol_layers.md +0 -0
  34. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/usbmux_sniff.sh +0 -0
  35. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/__init__.py +0 -0
  36. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/__main__.py +0 -0
  37. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/bonjour.py +0 -0
  38. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/__init__.py +0 -0
  39. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/activation.py +0 -0
  40. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/afc.py +0 -0
  41. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/amfi.py +0 -0
  42. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/apps.py +0 -0
  43. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/backup.py +0 -0
  44. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/bonjour.py +0 -0
  45. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/cli_common.py +0 -0
  46. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/companion_proxy.py +0 -0
  47. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/completions.py +0 -0
  48. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/crash.py +0 -0
  49. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/developer.py +0 -0
  50. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/diagnostics.py +0 -0
  51. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/lockdown.py +0 -0
  52. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/mounter.py +0 -0
  53. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/notification.py +0 -0
  54. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/pcap.py +0 -0
  55. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/power_assertion.py +0 -0
  56. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/processes.py +0 -0
  57. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/profile.py +0 -0
  58. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/provision.py +0 -0
  59. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/remote.py +0 -0
  60. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/restore.py +0 -0
  61. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/springboard.py +0 -0
  62. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/syslog.py +0 -0
  63. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/usbmux.py +0 -0
  64. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/version.py +0 -0
  65. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/webinspector.py +0 -0
  66. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/common.py +0 -0
  67. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/exceptions.py +0 -0
  68. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/irecv.py +0 -0
  69. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/irecv_devices.py +0 -0
  70. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/lockdown_service_provider.py +0 -0
  71. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/__init__.py +0 -0
  72. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/os_utils.py +0 -0
  73. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/posix_util.py +0 -0
  74. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/win_util.py +0 -0
  75. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/pair_records.py +0 -0
  76. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/__init__.py +0 -0
  77. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/common.py +0 -0
  78. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/__init__.py +0 -0
  79. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/app_service.py +0 -0
  80. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/core_device_service.py +0 -0
  81. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/device_info.py +0 -0
  82. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/diagnostics_service.py +0 -0
  83. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/file_service.py +0 -0
  84. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/module_imports.py +0 -0
  85. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remote_service.py +0 -0
  86. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remote_service_discovery.py +0 -0
  87. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remotexpc.py +0 -0
  88. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/tunnel_service.py +0 -0
  89. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/utils.py +0 -0
  90. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/xpc_message.py +0 -0
  91. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/__init__.py +0 -0
  92. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/dsc_uuid_map.json +0 -0
  93. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/dsc_uuid_map.py +0 -0
  94. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/firmware_notifications.py +0 -0
  95. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/element_attribute.js +0 -0
  96. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/element_clear.js +0 -0
  97. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/enter_fullscreen.js +0 -0
  98. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/find_nodes.js +0 -0
  99. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/focus.js +0 -0
  100. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/get_attribute.js +0 -0
  101. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_displayed.js +0 -0
  102. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_editable.js +0 -0
  103. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_enabled.js +0 -0
  104. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/__init__.py +0 -0
  105. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/asr.py +0 -0
  106. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/base_restore.py +0 -0
  107. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/consts.py +0 -0
  108. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/device.py +0 -0
  109. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/fdr.py +0 -0
  110. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/ftab.py +0 -0
  111. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/img4.py +0 -0
  112. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/recovery.py +0 -0
  113. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restore.py +0 -0
  114. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restore_options.py +0 -0
  115. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restored_client.py +0 -0
  116. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/tss.py +0 -0
  117. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/service_connection.py +0 -0
  118. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/__init__.py +0 -0
  119. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/accessibilityaudit.py +0 -0
  120. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/afc.py +0 -0
  121. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/amfi.py +0 -0
  122. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/companion.py +0 -0
  123. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/crash_reports.py +0 -0
  124. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/debugserver_applist.py +0 -0
  125. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/device_arbitration.py +0 -0
  126. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/device_link.py +0 -0
  127. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/diagnostics.py +0 -0
  128. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dtfetchsymbols.py +0 -0
  129. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/__init__.py +0 -0
  130. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +0 -0
  131. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +0 -0
  132. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/__init__.py +0 -0
  133. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +0 -0
  134. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/application_listing.py +0 -0
  135. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/condition_inducer.py +0 -0
  136. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +0 -0
  137. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/device_info.py +0 -0
  138. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/energy_monitor.py +0 -0
  139. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/graphics.py +0 -0
  140. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/location_simulation.py +0 -0
  141. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/location_simulation_base.py +0 -0
  142. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/network_monitor.py +0 -0
  143. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/notifications.py +0 -0
  144. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/process_control.py +0 -0
  145. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/screenshot.py +0 -0
  146. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/sysmontap.py +0 -0
  147. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/testmanaged/xcuitest.py +0 -0
  148. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/file_relay.py +0 -0
  149. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/heartbeat.py +0 -0
  150. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/house_arrest.py +0 -0
  151. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/installation_proxy.py +0 -0
  152. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/lockdown_service.py +0 -0
  153. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/misagent.py +0 -0
  154. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_activation.py +0 -0
  155. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_config.py +0 -0
  156. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_image_mounter.py +0 -0
  157. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobilebackup2.py +0 -0
  158. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/notification_proxy.py +0 -0
  159. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/os_trace.py +0 -0
  160. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/pcapd.py +0 -0
  161. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/power_assertion.py +0 -0
  162. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/preboard.py +0 -0
  163. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/remote_fetch_symbols.py +0 -0
  164. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/remote_server.py +0 -0
  165. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/restore_service.py +0 -0
  166. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/screenshot.py +0 -0
  167. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/simulate_location.py +0 -0
  168. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/springboard.py +0 -0
  169. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/syslog.py +0 -0
  170. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/__init__.py +0 -0
  171. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/alert.py +0 -0
  172. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/automation_session.py +0 -0
  173. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_screencast.py +0 -0
  174. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_server.py +0 -0
  175. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_target.py +0 -0
  176. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/driver.py +0 -0
  177. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/element.py +0 -0
  178. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/inspector_session.py +0 -0
  179. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/selenium_api.py +0 -0
  180. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/session_protocol.py +0 -0
  181. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/switch_to.py +0 -0
  182. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/webinspector.py +0 -0
  183. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tcp_forwarder.py +0 -0
  184. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/__init__.py +0 -0
  185. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/api.py +0 -0
  186. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/server.py +0 -0
  187. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/usbmux.py +0 -0
  188. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/utils.py +0 -0
  189. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/SOURCES.txt +0 -0
  190. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/dependency_links.txt +0 -0
  191. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/entry_points.txt +0 -0
  192. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/requires.txt +0 -0
  193. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/top_level.txt +0 -0
  194. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pyproject.toml +0 -0
  195. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pytest.ini +0 -0
  196. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/requirements.txt +0 -0
  197. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/setup.cfg +0 -0
  198. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/__init__.py +0 -0
  199. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/cli/__init__.py +0 -0
  200. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/cli/test_cli.py +0 -0
  201. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/conftest.py +0 -0
  202. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/__init__.py +0 -0
  203. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/__init__.py +0 -0
  204. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_core_profile_session.py +0 -0
  205. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_dvt_secure_socket_proxy.py +0 -0
  206. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_fetch_symbols.py +0 -0
  207. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_location.py +0 -0
  208. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_screenshot.py +0 -0
  209. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_accessibility.py +0 -0
  210. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_afc.py +0 -0
  211. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_apps.py +0 -0
  212. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_backup2.py +0 -0
  213. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_bonjour.py +0 -0
  214. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_crash_reports.py +0 -0
  215. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_list_devices.py +0 -0
  216. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_lockdown.py +0 -0
  217. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_pcapd.py +0 -0
  218. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_springboard_services_relay.py +0 -0
  219. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_start_tunnel.py +0 -0
  220. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_syslog_relay.py +0 -0
  221. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_tcp_forwarder.py +0 -0
  222. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/__init__.py +0 -0
  223. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/common.py +0 -0
  224. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/conftest.py +0 -0
  225. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/test_driver.py +0 -0
  226. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/test_element.py +0 -0
  227. {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_webinspector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 4.26.0
3
+ Version: 4.26.2
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>
@@ -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 = '4.26.0'
32
- __version_tuple__ = version_tuple = (4, 26, 0)
31
+ __version__ = version = '4.26.2'
32
+ __version_tuple__ = version_tuple = (4, 26, 2)
33
33
 
34
- __commit_id__ = commit_id = 'g3d245807a'
34
+ __commit_id__ = commit_id = 'g40d68e379'
@@ -0,0 +1,282 @@
1
+ from datetime import datetime, timedelta, timezone
2
+ from pathlib import Path
3
+ from typing import Optional, Union
4
+
5
+ from cryptography import x509
6
+ from cryptography.hazmat.primitives import hashes, serialization
7
+ from cryptography.hazmat.primitives.asymmetric import rsa
8
+ from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey, RSAPublicKey
9
+ from cryptography.hazmat.primitives.serialization import Encoding, NoEncryption, PrivateFormat, load_pem_public_key
10
+ from cryptography.x509 import Certificate
11
+ from cryptography.x509.oid import NameOID
12
+
13
+ _SERIAL = 1
14
+
15
+
16
+ def select_hash_algorithm(device_version: Union[tuple[int, int, int], str, None]) -> hashes.HashAlgorithm:
17
+ """
18
+ Choose hash algorithm to match libimobiledevice (idevicepair) logic.
19
+
20
+ :param device_version: Device version tuple (major, minor, patch) or "a.b.c" string.
21
+ If None, defaults to SHA-256 (modern).
22
+ :returns: SHA-1 if version < 4.0.0, else SHA-256.
23
+ """
24
+ if device_version is None:
25
+ return hashes.SHA256()
26
+ if isinstance(device_version, str):
27
+ parts = tuple(int(x) for x in device_version.split("."))
28
+ else:
29
+ parts = device_version
30
+ return hashes.SHA1() if parts < (4, 0, 0) else hashes.SHA256()
31
+
32
+
33
+ def get_validity_bounds(years: int = 10) -> tuple[datetime, datetime]:
34
+ """
35
+ Compute notBefore / notAfter validity window.
36
+
37
+ :param years: Number of years for certificate validity.
38
+ :returns: (not_before, not_after) in UTC.
39
+ """
40
+ now = datetime.now(timezone.utc)
41
+ return now - timedelta(minutes=1), now + timedelta(days=365 * years)
42
+
43
+
44
+ def serialize_cert_pem(cert: Certificate) -> bytes:
45
+ """
46
+ Serialize an X.509 certificate in PEM format.
47
+
48
+ :param cert: Certificate object.
49
+ :returns: PEM-encoded certificate bytes.
50
+ """
51
+ return cert.public_bytes(Encoding.PEM)
52
+
53
+
54
+ def serialize_private_key_pkcs8_pem(key: RSAPrivateKey) -> bytes:
55
+ """
56
+ Serialize a private key in PKCS#8 PEM format (like OpenSSL's PEM_write_bio_PrivateKey).
57
+
58
+ :param key: RSA private key.
59
+ :returns: PEM-encoded PKCS#8 key bytes (unencrypted).
60
+ """
61
+ return key.private_bytes(Encoding.PEM, PrivateFormat.PKCS8, NoEncryption())
62
+
63
+
64
+ # =======================================
65
+ # Certificate builders (empty DN, v3, KU)
66
+ # =======================================
67
+
68
+ def build_root_certificate(root_key: RSAPrivateKey, alg: hashes.HashAlgorithm) -> Certificate:
69
+ """
70
+ Build a self-signed root (CA) certificate:
71
+ - Empty subject/issuer (x509.Name([]))
72
+ - Serial = 1
73
+ - X.509 v3 with BasicConstraints CA:TRUE (critical)
74
+ - Signed with root_key using the chosen hash
75
+
76
+ :param root_key: RSA private key for the root CA.
77
+ :param alg: Hash algorithm (SHA-1 or SHA-256).
78
+ :returns: Root CA certificate.
79
+ """
80
+ not_before, not_after = get_validity_bounds()
81
+ empty = x509.Name([])
82
+ builder = (
83
+ x509.CertificateBuilder()
84
+ .subject_name(empty)
85
+ .issuer_name(empty)
86
+ .public_key(root_key.public_key())
87
+ .serial_number(_SERIAL)
88
+ .not_valid_before(not_before)
89
+ .not_valid_after(not_after)
90
+ .add_extension(x509.BasicConstraints(ca=True, path_length=None), critical=True)
91
+ )
92
+ return builder.sign(root_key, alg)
93
+
94
+
95
+ def build_host_certificate(
96
+ host_key: RSAPrivateKey,
97
+ root_cert: Certificate,
98
+ root_key: RSAPrivateKey,
99
+ alg: hashes.HashAlgorithm,
100
+ ) -> Certificate:
101
+ """
102
+ Build the host (leaf) certificate signed by the root:
103
+ - Empty subject
104
+ - Issuer = root's (empty) subject
105
+ - Serial = 1
106
+ - BasicConstraints CA:FALSE (critical)
107
+ - KeyUsage: digitalSignature, keyEncipherment (critical)
108
+ - Signed with root_key
109
+
110
+ :param host_key: Host RSA private key (leaf).
111
+ :param root_cert: Root CA certificate.
112
+ :param root_key: Root RSA private key.
113
+ :param alg: Hash algorithm (SHA-1 or SHA-256).
114
+ :returns: Host certificate (leaf).
115
+ """
116
+ not_before, not_after = get_validity_bounds()
117
+ builder = (
118
+ x509.CertificateBuilder()
119
+ .subject_name(x509.Name([]))
120
+ .issuer_name(root_cert.subject) # empty
121
+ .public_key(host_key.public_key())
122
+ .serial_number(_SERIAL)
123
+ .not_valid_before(not_before)
124
+ .not_valid_after(not_after)
125
+ .add_extension(x509.BasicConstraints(ca=False, path_length=None), critical=True)
126
+ .add_extension(
127
+ x509.KeyUsage(
128
+ digital_signature=True,
129
+ key_encipherment=True,
130
+ key_cert_sign=False, crl_sign=False,
131
+ content_commitment=False, data_encipherment=False,
132
+ key_agreement=False, encipher_only=False, decipher_only=False,
133
+ ),
134
+ critical=True,
135
+ )
136
+ )
137
+ return builder.sign(root_key, alg)
138
+
139
+
140
+ def build_device_certificate(
141
+ device_public_key: RSAPublicKey,
142
+ root_cert: Certificate,
143
+ root_key: RSAPrivateKey,
144
+ alg: hashes.HashAlgorithm,
145
+ ) -> Certificate:
146
+ """
147
+ Build the device certificate (leaf) signed by the root:
148
+ - Empty subject
149
+ - Issuer = root's (empty) subject
150
+ - Serial = 1
151
+ - BasicConstraints CA:FALSE (critical)
152
+ - KeyUsage: digitalSignature, keyEncipherment (critical)
153
+ - SubjectKeyIdentifier = hash
154
+ - Signed with root_key
155
+
156
+ :param device_public_key: Device's RSA public key (as advertised by lockdown).
157
+ :param root_cert: Root CA certificate.
158
+ :param root_key: Root RSA private key.
159
+ :param alg: Hash algorithm (SHA-1 or SHA-256).
160
+ :returns: Device certificate (leaf).
161
+ """
162
+ not_before, not_after = get_validity_bounds()
163
+ builder = (
164
+ x509.CertificateBuilder()
165
+ .subject_name(x509.Name([]))
166
+ .issuer_name(root_cert.subject) # empty
167
+ .public_key(device_public_key)
168
+ .serial_number(_SERIAL)
169
+ .not_valid_before(not_before)
170
+ .not_valid_after(not_after)
171
+ .add_extension(x509.BasicConstraints(ca=False, path_length=None), critical=True)
172
+ .add_extension(
173
+ x509.KeyUsage(
174
+ digital_signature=True,
175
+ key_encipherment=True,
176
+ key_cert_sign=False, crl_sign=False,
177
+ content_commitment=False, data_encipherment=False,
178
+ key_agreement=False, encipher_only=False, decipher_only=False,
179
+ ),
180
+ critical=True,
181
+ )
182
+ .add_extension(x509.SubjectKeyIdentifier.from_public_key(device_public_key), critical=False)
183
+ )
184
+ return builder.sign(root_key, alg)
185
+
186
+
187
+ # ==========================================
188
+ # Public API for your pairing flow (renamed)
189
+ # ==========================================
190
+
191
+ def generate_pairing_cert_chain(
192
+ device_public_key_pem: bytes,
193
+ private_key: Optional[RSAPrivateKey] = None,
194
+ device_version: Union[tuple[int, int, int], str, None] = (4, 0, 0),
195
+ ) -> tuple[bytes, bytes, bytes, bytes, bytes]:
196
+ """
197
+ Generate a root→host certificate chain and a device certificate that mirror the
198
+ libimobiledevice C behavior (empty DN, serial=1, BC/KU/SKI, SHA1 flip for < 4.0).
199
+
200
+ :param device_public_key_pem: Device RSA public key in PEM ("RSA PUBLIC KEY") format.
201
+ :param private_key: Optional host RSA private key to reuse; if None, a new one is generated.
202
+ :param device_version: Version to select hash (tuple or "a.b.c"). < 4.0.0 => SHA-1; else SHA-256.
203
+ :returns: (host_cert_pem, host_key_pem, device_cert_pem, root_cert_pem, root_key_pem)
204
+ """
205
+ alg = select_hash_algorithm(device_version)
206
+
207
+ # Root CA (self-signed)
208
+ root_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
209
+ root_cert = build_root_certificate(root_key, alg)
210
+
211
+ # Host leaf (reuse provided key if given)
212
+ host_key = private_key or rsa.generate_private_key(public_exponent=65537, key_size=2048)
213
+ host_cert = build_host_certificate(host_key, root_cert, root_key, alg)
214
+
215
+ # Device leaf (public key provided by the device)
216
+ dev_pub = load_pem_public_key(device_public_key_pem)
217
+ if not isinstance(dev_pub, RSAPublicKey):
218
+ raise ValueError("device_public_key_pem must be an RSA PUBLIC KEY in PEM format")
219
+ device_cert = build_device_certificate(dev_pub, root_cert, root_key, alg)
220
+
221
+ return (
222
+ serialize_cert_pem(host_cert),
223
+ serialize_private_key_pkcs8_pem(host_key),
224
+ serialize_cert_pem(device_cert),
225
+ serialize_cert_pem(root_cert),
226
+ serialize_private_key_pkcs8_pem(root_key),
227
+ )
228
+
229
+
230
+ def make_cert(key: RSAPrivateKey, public_key: RSAPublicKey, common_name: Optional[str] = None) -> Certificate:
231
+ """
232
+ Create a simple self-signed certificate for the provided key.
233
+
234
+ NOTE: This is not suitable for pairing (it sets subject/issuer and lacks C-style fields).
235
+ It is preserved as-is for your keybag usage.
236
+
237
+ :param key: RSA private key for signing.
238
+ :param public_key: RSA public key to embed in the certificate.
239
+ :param common_name: Optional CN to include in subject/issuer.
240
+ :returns: Self-signed certificate.
241
+ """
242
+ attributes = [x509.NameAttribute(NameOID.COMMON_NAME, common_name)] if common_name else []
243
+ subject = issuer = x509.Name(attributes)
244
+ cert = x509.CertificateBuilder()
245
+ cert = cert.subject_name(subject)
246
+ cert = cert.issuer_name(issuer)
247
+ cert = cert.public_key(public_key)
248
+ cert = cert.serial_number(1)
249
+ now = datetime.now()
250
+ now = now.replace(tzinfo=None)
251
+ cert = cert.not_valid_before(now - timedelta(minutes=1))
252
+ cert = cert.not_valid_after(now + timedelta(days=365 * 10))
253
+ cert = cert.sign(key, hashes.SHA256())
254
+ return cert
255
+
256
+
257
+ def dump_cert(cert: Certificate) -> bytes:
258
+ """
259
+ Serialize a certificate in PEM format.
260
+
261
+ :param cert: Certificate object.
262
+ :returns: PEM-encoded certificate bytes.
263
+ """
264
+ return cert.public_bytes(Encoding.PEM)
265
+
266
+
267
+ def create_keybag_file(file: Path, common_name: str) -> None:
268
+ """
269
+ Write a private key and a simple self-signed certificate to a file (PEM concatenated).
270
+
271
+ :param file: Destination file path.
272
+ :param common_name: Common Name to embed in the self-signed certificate.
273
+ """
274
+ private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
275
+ cer = make_cert(private_key, private_key.public_key(), common_name)
276
+ file.write_bytes(
277
+ private_key.private_bytes(
278
+ encoding=serialization.Encoding.PEM,
279
+ format=PrivateFormat.TraditionalOpenSSL,
280
+ encryption_algorithm=serialization.NoEncryption()
281
+ ) + cer.public_bytes(encoding=serialization.Encoding.PEM)
282
+ )
@@ -24,13 +24,13 @@ from packaging.version import Version
24
24
 
25
25
  from pymobiledevice3 import usbmux
26
26
  from pymobiledevice3.bonjour import DEFAULT_BONJOUR_TIMEOUT, browse_mobdev2
27
- from pymobiledevice3.ca import ca_do_everything
27
+ from pymobiledevice3.ca import generate_pairing_cert_chain
28
28
  from pymobiledevice3.common import get_home_folder
29
29
  from pymobiledevice3.exceptions import BadDevError, CannotStopSessionError, ConnectionFailedError, \
30
30
  ConnectionTerminatedError, DeviceNotFoundError, FatalPairingError, GetProhibitedError, IncorrectModeError, \
31
31
  InvalidConnectionError, InvalidHostIDError, InvalidServiceError, LockdownError, MissingValueError, \
32
32
  NoDeviceConnectedError, NotPairedError, PairingDialogResponsePendingError, PairingError, PasswordRequiredError, \
33
- SetProhibitedError, StartServiceError, UserDeniedPairingError
33
+ PyMobileDevice3Exception, SetProhibitedError, StartServiceError, UserDeniedPairingError
34
34
  from pymobiledevice3.irecv_devices import IRECV_DEVICES
35
35
  from pymobiledevice3.lockdown_service_provider import LockdownServiceProvider
36
36
  from pymobiledevice3.pair_records import create_pairing_records_cache_folder, generate_host_id, \
@@ -308,6 +308,7 @@ class LockdownClient(ABC, LockdownServiceProvider):
308
308
  if not response or response.get('Result') != 'Success':
309
309
  raise CannotStopSessionError()
310
310
  return response
311
+ raise PyMobileDevice3Exception('No active session')
311
312
 
312
313
  def validate_pairing(self) -> bool:
313
314
  if self.pair_record is None:
@@ -363,15 +364,17 @@ class LockdownClient(ABC, LockdownServiceProvider):
363
364
  raise PairingError()
364
365
 
365
366
  self.logger.info('Creating host key & certificate')
366
- cert_pem, private_key_pem, device_certificate = ca_do_everything(self.device_public_key,
367
- private_key=private_key)
368
-
369
- pair_record = {'DevicePublicKey': self.device_public_key,
370
- 'DeviceCertificate': device_certificate,
371
- 'HostCertificate': cert_pem,
367
+ host_cert_pem, host_key_pem, device_cert_pem, root_cert_pem, root_key_pem = generate_pairing_cert_chain(
368
+ self.device_public_key,
369
+ private_key=private_key
370
+ # TODO: consider parsing product_version to support iOS < 4
371
+ )
372
+
373
+ pair_record = {'DeviceCertificate': device_cert_pem,
374
+ 'HostCertificate': host_cert_pem,
372
375
  'HostID': self.host_id,
373
- 'RootCertificate': cert_pem,
374
- 'RootPrivateKey': private_key_pem,
376
+ 'RootCertificate': root_cert_pem,
377
+ 'RootPrivateKey': root_key_pem,
375
378
  'WiFiMACAddress': self.wifi_mac_address,
376
379
  'SystemBUID': self.system_buid}
377
380
 
@@ -380,7 +383,7 @@ class LockdownClient(ABC, LockdownServiceProvider):
380
383
 
381
384
  pair = self._request_pair(pair_options, timeout=timeout)
382
385
 
383
- pair_record['HostPrivateKey'] = private_key_pem
386
+ pair_record['HostPrivateKey'] = host_key_pem
384
387
  escrow_bag = pair.get('EscrowBag')
385
388
 
386
389
  if escrow_bag is not None:
@@ -405,14 +408,16 @@ class LockdownClient(ABC, LockdownServiceProvider):
405
408
  raise PairingError()
406
409
 
407
410
  self.logger.info('Creating host key & certificate')
408
- cert_pem, private_key_pem, device_certificate = ca_do_everything(self.device_public_key)
411
+ host_cert_pem, host_key_pem, device_cert_pem, root_cert_pem, root_key_pem = generate_pairing_cert_chain(
412
+ self.device_public_key
413
+ # TODO: consider parsing product_version to support iOS < 4
414
+ )
409
415
 
410
- pair_record = {'DevicePublicKey': self.device_public_key,
411
- 'DeviceCertificate': device_certificate,
412
- 'HostCertificate': cert_pem,
416
+ pair_record = {'DeviceCertificate': device_cert_pem,
417
+ 'HostCertificate': host_cert_pem,
413
418
  'HostID': self.host_id,
414
- 'RootCertificate': cert_pem,
415
- 'RootPrivateKey': private_key_pem,
419
+ 'RootCertificate': root_cert_pem,
420
+ 'RootPrivateKey': root_key_pem,
416
421
  'WiFiMACAddress': self.wifi_mac_address,
417
422
  'SystemBUID': self.system_buid}
418
423
 
@@ -434,7 +439,7 @@ class LockdownClient(ABC, LockdownServiceProvider):
434
439
  # second pair with Response to Challenge
435
440
  pair = self._request_pair(pair_options, timeout=timeout)
436
441
 
437
- pair_record['HostPrivateKey'] = private_key_pem
442
+ pair_record['HostPrivateKey'] = host_key_pem
438
443
  escrow_bag = pair.get('EscrowBag')
439
444
 
440
445
  if escrow_bag is not None:
@@ -2,9 +2,11 @@
2
2
  ABAddressBookMeCardChangeDistributedNotification
3
3
  ACDAccountStoreDidChangeNotification
4
4
  AFAssistantEnablementDidChangeDarwinNotification
5
+ AFDictationEnablementDidChangeDarwinNotification
5
6
  AFLanguageCodeDidChangeDarwinNotification
6
7
  AppleDatePreferencesChangedNotification
7
8
  AppleKeyboardsPreferencesChangedNotification
9
+ AppleKeyboardsSettingsChangedNotification
8
10
  AppleLanguagePreferencesChangedNotification
9
11
  AppleNumberPreferencesChangedNotification
10
12
  ApplePreferredContentSizeCategoryChangedNotification
@@ -75,6 +77,7 @@ com.apple.AirTunes.DACP.shuffletoggle
75
77
  com.apple.AirTunes.DACP.volumedown
76
78
  com.apple.AirTunes.DACP.volumeup
77
79
  com.apple.AppleMediaServices.accountCachedData.dataUpdated
80
+ com.apple.AppleMediaServices.activeicloudaccountchanged
78
81
  com.apple.AppleMediaServices.deviceOffersChanged
79
82
  com.apple.AppleMediaServices.eligibilityoverridechanged
80
83
  com.apple.ApplicationService.replicatord.terminus
@@ -93,6 +96,8 @@ com.apple.EscrowSecurityAlert.server
93
96
  com.apple.FindMyDevice.LocatableStateReported
94
97
  com.apple.FitnessCoaching.FCPauseRingsSampleChangedNotification
95
98
  com.apple.GeoServices.PreferencesSync.SettingsChanged
99
+ com.apple.GeoServices.countryCodeChanged
100
+ com.apple.GeoServices.experimentsChanged
96
101
  com.apple.GeoServices.navigation.started
97
102
  com.apple.GeoServices.navigation.stopped
98
103
  com.apple.GeoServices.pairedDeviceExperimentsConfigChanged
@@ -118,6 +123,8 @@ com.apple.MobileAsset.AppleKeyServicesCRL.new-asset-installed
118
123
  com.apple.MobileAsset.AutoAssetAtomicNotification^ATOMIC_INSTANCE_DOWNLOADED
119
124
  com.apple.MobileAsset.AutoAssetAtomicNotification^ATOMIC_INSTANCE_ELIMINATED
120
125
  com.apple.MobileAsset.AutoAssetAtomicNotification^ATOMIC_INSTANCE_NO_ENTRIES
126
+ com.apple.MobileAsset.AutoAssetAtomicNotification^com.apple.MobileAsset.UAF.AONSenseConfiguration^ATOMIC_INSTANCE_DOWNLOADED
127
+ com.apple.MobileAsset.AutoAssetAtomicNotification^com.apple.MobileAsset.UAF.AONSenseConfiguration^ATOMIC_INSTANCE_NO_ENTRIES
121
128
  com.apple.MobileAsset.AutoAssetAtomicNotification^com.apple.translation.assets^ATOMIC_INSTANCE_DOWNLOADED
122
129
  com.apple.MobileAsset.AutoAssetAtomicNotification^com.apple.translation.assets^ATOMIC_INSTANCE_ELIMINATED
123
130
  com.apple.MobileAsset.AutoAssetAtomicNotification^com.apple.translation.assets^ATOMIC_INSTANCE_NO_ENTRIES
@@ -127,6 +134,7 @@ com.apple.MobileAsset.CoreTextAssets.ma.cached-metadata-updated
127
134
  com.apple.MobileAsset.CoreTextAssets.ma.new-asset-installed
128
135
  com.apple.MobileAsset.EmbeddedSpeech.ma.new-asset-installed
129
136
  com.apple.MobileAsset.Font7.ma.cached-metadata-updated
137
+ com.apple.MobileAsset.Font8.ma.cached-metadata-updated
130
138
  com.apple.MobileAsset.KextDenyList.ma.new-asset-installed
131
139
  com.apple.MobileAsset.SecureElementServiceAssets.ma.cached-metadata-updated
132
140
  com.apple.MobileAsset.SecureElementServiceAssets.ma.new-asset-installed
@@ -135,6 +143,7 @@ com.apple.MobileAsset.SpeechEndpointAssets.ma.cached-metadata-updated
135
143
  com.apple.MobileAsset.TTSAXResourceModelAssets.ma.new-asset-installed
136
144
  com.apple.MobileAsset.TimeZoneUpdate.ma.cached-metadata-updated
137
145
  com.apple.MobileAsset.TimeZoneUpdate.ma.new-asset-installed
146
+ com.apple.MobileAsset.UAF.Siri.TextToSpeech.ma.new-asset-installed
138
147
  com.apple.MobileAsset.VoiceServices.CustomVoice.ma.new-asset-installed
139
148
  com.apple.MobileAsset.VoiceServices.GryphonVoice.ma.new-asset-installed
140
149
  com.apple.MobileAsset.VoiceServices.VoiceResources.ma.new-asset-installed
@@ -160,7 +169,9 @@ com.apple.MobileAsset.VoiceTriggerHSAssetsIPad.ma.new-asset-installed
160
169
  com.apple.MobileAsset.VoiceTriggerHSAssetsWatch.ma.cached-metadata-updated
161
170
  com.apple.MobileAsset.VoiceTriggerHSAssetsWatch.ma.new-asset-installed
162
171
  com.apple.MobileBackup.backgroundCellularAccessChanged
172
+ com.apple.MobileSMS.CKNanoCannedRepliesArray.changed
163
173
  com.apple.MobileSoftwareUpdate.OSVersionChanged
174
+ com.apple.MobileStoreDemo.ShallowRefreshReady
164
175
  com.apple.Music-AllowsCellularDataDownloads
165
176
  com.apple.NanoPhotos.Library.changed
166
177
  com.apple.OTACrashCopier.SubmissionPreferenceChanged
@@ -182,9 +193,11 @@ com.apple.SafariShared.Assistant.reload_plugin
182
193
  com.apple.SafeEjectGPUStartupDaemon.received
183
194
  com.apple.SensorKit.als
184
195
  com.apple.SensorKit.deviceUsageReport
196
+ com.apple.SensorKit.hearing.acousticSettings
185
197
  com.apple.SensorKit.mediaEvents
186
198
  com.apple.SensorKit.messagesUsageReport
187
199
  com.apple.SensorKit.phoneUsageReport
200
+ com.apple.SensorKit.sleep.sessions
188
201
  com.apple.SensorKit.visits
189
202
  com.apple.Sharing.prefsChanged
190
203
  com.apple.SiriTTSTrainingAgent.taskEvent.cancelled
@@ -197,6 +210,8 @@ com.apple.SiriTTSTrainingAgent.taskEvent.undefined
197
210
  com.apple.SoftwareUpdate.CheckForCatalogChange
198
211
  com.apple.SoftwareUpdate.SUPreferencesChanged
199
212
  com.apple.SoftwareUpdate.TriggerBackgroundCheck
213
+ com.apple.SoftwareUpdateServices.newUpdateFound
214
+ com.apple.SoftwareUpdateServices.updateFound
200
215
  com.apple.StoreServices.SSAccountStore.activeaccountchanged
201
216
  com.apple.StoreServices.StorefrontChanged
202
217
  com.apple.SynthesisProvider.updatedVoices
@@ -376,7 +391,9 @@ com.apple.exchangesyncd.ping
376
391
  com.apple.fairplayd.resync-fpkeybag
377
392
  com.apple.family.family_updated
378
393
  com.apple.fitness.FitnessAppInstalled
394
+ com.apple.fitnessintelligence.network-service
379
395
  com.apple.gamepolicy.daemon.launch
396
+ com.apple.generativepartnerservicesettings
380
397
  com.apple.geoservices.siri_data_changed
381
398
  com.apple.gms.availability.notification
382
399
  com.apple.gms.availability.notification.private
@@ -405,6 +422,7 @@ com.apple.icloud.findmydeviced.localActivationLockInfoChanged
405
422
  com.apple.icloud.fmip.lostmode.enable
406
423
  com.apple.icloud.fmip.siri_data_changed
407
424
  com.apple.icloud.searchparty.accessoryDidPair
425
+ com.apple.icloud.searchparty.secureLocations.liteLocationPublishRequest
408
426
  com.apple.icloud.searchparty.selfbeaconchanged
409
427
  com.apple.icloudpairing.idslaunchnotification
410
428
  com.apple.idscredentials.idslaunchnotification
@@ -436,6 +454,7 @@ com.apple.kvs.store-did-change.com.apple.cloudsettings.mouse
436
454
  com.apple.kvs.store-did-change.com.apple.cloudsettings.pencil
437
455
  com.apple.kvs.store-did-change.com.apple.cloudsettings.sound
438
456
  com.apple.kvs.store-did-change.com.apple.cloudsettings.trackpad
457
+ com.apple.kvs.store-did-change.com.apple.devicesharingd.deviceEnrollmentData
439
458
  com.apple.kvs.store-did-change.com.apple.iBooks
440
459
  com.apple.kvs.store-did-change.com.apple.reminders
441
460
  com.apple.kvs.store-did-change.com.apple.sleepd
@@ -457,12 +476,15 @@ com.apple.managedconfiguration.effectivesettingschanged
457
476
  com.apple.managedconfiguration.managedorginfochanged
458
477
  com.apple.managedconfiguration.passcodechanged
459
478
  com.apple.managedconfiguration.restrictionchanged
479
+ com.apple.managedconfiguration.rrts
460
480
  com.apple.media.entities.siri_data_changed
461
481
  com.apple.media.podcasts.siri_data_changed
462
482
  com.apple.mediaaccessibility.displayFilterSettingsChanged
483
+ com.apple.migrationkit.internalsettings.dismissed
463
484
  com.apple.mobile.disk_image_mounted
464
485
  com.apple.mobile.keybagd.first_unlock
465
486
  com.apple.mobile.keybagd.lock_status
487
+ com.apple.mobile.keybagd.user_changed
466
488
  com.apple.mobile.lockdown.BonjourPairingServiceChanged
467
489
  com.apple.mobile.lockdown.BonjourServiceChanged
468
490
  com.apple.mobile.lockdown.activation_state
@@ -497,12 +519,15 @@ com.apple.mobiletimerd.wakeuptest
497
519
  com.apple.modelcatalog.generative-experiences-readiness
498
520
  com.apple.nanomusic.sync.defaults
499
521
  com.apple.nanophotos.prefs.LibraryCollectionTargetMapData-changed
522
+ com.apple.nanopreferencessync.initialSyncCompletion
500
523
  com.apple.nanoregistry.devicedidpair
501
524
  com.apple.nanoregistry.devicedidunpair
502
525
  com.apple.nanoregistry.pairedSync.initialSyncDidComplete
503
526
  com.apple.nanoregistry.paireddevicedidchangecapabilities
504
527
  com.apple.nanoregistry.paireddevicedidchangeversion
505
528
  com.apple.nanoregistry.watchdidbecomeactive
529
+ com.apple.nanotimekit.replicator.library.message
530
+ com.apple.nanotimekit.replicator.library.record
506
531
  com.apple.navd.backgroundCommute.startPredicting
507
532
  com.apple.navd.wakeUpForHypothesisUpdate
508
533
  com.apple.nearfield.handoff.terminal
@@ -511,32 +536,40 @@ com.apple.networkextension.apps-changed
511
536
  com.apple.networkextension.nehelper-init
512
537
  com.apple.networkrelay.launch.phs
513
538
  com.apple.networkserviceproxy.reset
539
+ com.apple.newdeviceoutreach.coverageupdated
514
540
  com.apple.nfcacd.multitag.state.change
515
541
  com.apple.os-eligibility-domain.change
516
542
  com.apple.os-eligibility-domain.change.aluminum
517
543
  com.apple.os-eligibility-domain.change.chromium
518
544
  com.apple.os-eligibility-domain.change.greymatter
545
+ com.apple.os-eligibility-domain.change.iron
519
546
  com.apple.os-eligibility-domain.change.manganese
520
547
  com.apple.os-eligibility-domain.change.silicon
521
548
  com.apple.os-eligibility-domain.input-needed
549
+ com.apple.osintelligence.iblm.mitigationchanged
522
550
  com.apple.pairedsync.syncDidComplete
523
551
  com.apple.parsec-fbf.FLUploadImmediately
524
552
  com.apple.parsecd.bag
525
553
  com.apple.parsecd.queries.clearData
526
554
  com.apple.pasteboard.notify.changed
555
+ com.apple.perfpowermetricmonitor.monitoring_timed_out
527
556
  com.apple.pex.connections.focalappchanged
528
557
  com.apple.photos.DidUpdateAutonamingUserFeedback
529
558
  com.apple.photosface.network-service
530
559
  com.apple.photostream.idslaunchnotification
560
+ com.apple.powerexperienced.testdevicecontext.changed
561
+ com.apple.powerexperienced.testmobilechargingcontroller.changed
531
562
  com.apple.powerlog.batteryServiceNotification
532
563
  com.apple.powermanagement.idlesleeppreventers
533
564
  com.apple.powermanagement.restartpreventers
534
565
  com.apple.powermanagement.systempowerstate
535
566
  com.apple.powermanagement.systemsleeppreventers
567
+ com.apple.powerui.mclstatuschanged
536
568
  com.apple.powerui.requiredFullCharge
537
569
  com.apple.powerui.smartcharge
538
570
  com.apple.private.SensorKit.pedometer.stridecalibration
539
571
  com.apple.private.restrict-post.MobileBackup.backgroundCellularAccessChanged
572
+ com.apple.private.restrict-post.fmip.lostmode.enable
540
573
  com.apple.proactive.PersonalizationPortrait.namedEntitiesInvalidated
541
574
  com.apple.proactive.information.source.weather
542
575
  com.apple.proactive.queries.clearData
@@ -569,9 +602,11 @@ com.apple.security.secureobjectsync.holdlock
569
602
  com.apple.security.secureobjectsync.viewschanged
570
603
  com.apple.security.view-change.PCS
571
604
  com.apple.security.view-change.SE-PTC
605
+ com.apple.security.view-ready.Manatee
572
606
  com.apple.security.view-ready.SE-PTC
573
607
  com.apple.sessionagent.screenIsLocked
574
608
  com.apple.sessionagent.screenIsUnlocked
609
+ com.apple.sharing.authentication.enabled-devices-changed
575
610
  com.apple.shortcuts.daemon-wakeup-request
576
611
  com.apple.shortcuts.runner-prewarm-request
577
612
  com.apple.siri.ShortcutsCloudKitAccountAddedNotification
@@ -588,6 +623,9 @@ com.apple.siri.preheat.quiet
588
623
  com.apple.siri.uaf.com.apple.MobileAsset.UAF.FM.Overrides
589
624
  com.apple.siri.uaf.com.apple.MobileAsset.UAF.FM.Overrides.root
590
625
  com.apple.siri.uaf.com.apple.MobileAsset.UAF.FM.Visual
626
+ com.apple.siri.uaf.com.apple.MobileAsset.UAF.Photos.MagicCleanup
627
+ com.apple.siri.uaf.com.apple.if.planner
628
+ com.apple.siri.uaf.com.apple.if.planner.overrides
591
629
  com.apple.siri.uaf.com.apple.modelcatalog
592
630
  com.apple.siri.uaf.com.apple.modelcatalog.root
593
631
  com.apple.siri.uaf.com.apple.siri.understanding
@@ -617,6 +655,7 @@ com.apple.softwareupdateservicesd.activity.installAlert
617
655
  com.apple.softwareupdateservicesd.activity.presentBanner
618
656
  com.apple.softwareupdateservicesd.activity.rollbackReboot
619
657
  com.apple.softwareupdateservicesd.activity.splatAutoScan
658
+ com.apple.spatialphotosrelive.enablement.changed
620
659
  com.apple.spotlight.SyndicatedContentDeleted
621
660
  com.apple.spotlight.SyndicatedContentRefreshed
622
661
  com.apple.spotlightui.prefschanged
@@ -634,6 +673,8 @@ com.apple.system.accpowersources.attach
634
673
  com.apple.system.accpowersources.source
635
674
  com.apple.system.clock_set
636
675
  com.apple.system.config.network_change
676
+ com.apple.system.console_mode_changed
677
+ com.apple.system.earlythermalnotification
637
678
  com.apple.system.hostname
638
679
  com.apple.system.logging.power_button_notification
639
680
  com.apple.system.loginwindow.desktopUp
@@ -641,9 +682,11 @@ com.apple.system.lowdiskspace.system
641
682
  com.apple.system.lowpowermode
642
683
  com.apple.system.lowpowermode.auto_disabled
643
684
  com.apple.system.lowpowermode.first_time
685
+ com.apple.system.powermanagement.clamshellstate
644
686
  com.apple.system.powermanagement.poweradapter
645
687
  com.apple.system.powermanagement.useractivity2
646
688
  com.apple.system.powermanagement.uservisiblepowerevent
689
+ com.apple.system.powersources.chargingiconography
647
690
  com.apple.system.powersources.criticallevel
648
691
  com.apple.system.powersources.percent
649
692
  com.apple.system.powersources.source
@@ -656,10 +699,15 @@ com.apple.tcc.access.changed
656
699
  com.apple.telephonyutilities.callservicesd.fakeincomingmessage
657
700
  com.apple.telephonyutilities.callservicesd.fakeoutgoingmessage
658
701
  com.apple.telephonyutilities.callservicesdaemon.voicemailcallended
702
+ com.apple.textunderstanding.pipeline.distributedDeletion
703
+ com.apple.textunderstanding.pipeline.distributedResults
659
704
  com.apple.thermalmonitor.ageAwareMitigationsEnabled
660
705
  com.apple.timezone.prefschanged
661
706
  com.apple.timezonesync.idslaunchnotification
662
707
  com.apple.touchsetupd.launch
708
+ com.apple.trial.NamespaceUpdate.COREOS_FAST_PREWARMING
709
+ com.apple.trial.NamespaceUpdate.COREOS_GMPOWER_VM_TUNING_PAGE_SHORTAGE_THRESHOLDS
710
+ com.apple.trial.NamespaceUpdate.COREOS_VM_OBJECT_COPY_DELAYED_NO_WAIT
663
711
  com.apple.trial.NamespaceUpdate.FREEZER_POLICIES
664
712
  com.apple.trial.NamespaceUpdate.NETWORK_SERVICE_PROXY_CONFIG_UPDATE
665
713
  com.apple.trial.NamespaceUpdate.SIRI_DICTATION_ASSETS
@@ -668,6 +716,7 @@ com.apple.trial.NamespaceUpdate.SIRI_UNDERSTANDING_ASR_ASSISTANT
668
716
  com.apple.trial.NamespaceUpdate.SIRI_UNDERSTANDING_ATTENTION_ASSETS
669
717
  com.apple.trial.NamespaceUpdate.SIRI_UNDERSTANDING_NL
670
718
  com.apple.trial.NamespaceUpdate.SIRI_UNDERSTANDING_NL_OVERRIDES
719
+ com.apple.trial.NamespaceUpdate.STEEL_ROSE_CHECK_IN_COHORT
671
720
  com.apple.trial.bmlt.activated
672
721
  com.apple.triald.new-experiment
673
722
  com.apple.triald.system.wake
@@ -696,8 +745,11 @@ com.apple.webinspectord.enabled
696
745
  com.apple.welcomekitinternalsettings.dismissed
697
746
  com.apple.wirelessinsightsd.anonymity
698
747
  com.apple.wirelessproximity.launch
748
+ com.vpg.managedassets.notify.iCloudSyncDown
749
+ com.vpg.managedassets.notify.iCloudSyncUp
699
750
  dmf.policy.monitor.app
700
751
  kAFPreferencesDidChangeDarwinNotification
752
+ kCFLocaleCurrentLocaleDidChangeNotification
701
753
  kCTSMSCellBroadcastConfigChangedNotification
702
754
  kCalBirthdayDefaultAlarmChangedNote
703
755
  kCalEventOccurrenceCacheChangedNotification
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymobiledevice3
3
- Version: 4.26.0
3
+ Version: 4.26.2
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>