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.
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/PKG-INFO +1 -1
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/_version.py +3 -3
- pymobiledevice3-4.26.2/pymobiledevice3/ca.py +282 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/lockdown.py +23 -18
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/notifications.txt +52 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/PKG-INFO +1 -1
- pymobiledevice3-4.26.0/pymobiledevice3/ca.py +0 -53
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.gitattributes +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/FUNDING.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/pull_request_template.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/codeql.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/generate-executable.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/markdown-lint.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/python-app.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.github/workflows/python-publish.yml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.gitignore +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/.pre-commit-config.yaml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/CODE_OF_CONDUCT.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/CONTRIBUTING.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/LICENSE +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/README.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/example.gif +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/markdownlint-config.json +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/DTServices-14.2.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/DTServices-14.5.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/RemoteXPC.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/plist_sniffer.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/pyinstaller.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/remotexpc_sniffer.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/understanding_idevice_protocol_layers.md +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/misc/usbmux_sniff.sh +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/__main__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/bonjour.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/activation.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/afc.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/amfi.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/apps.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/backup.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/bonjour.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/cli_common.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/companion_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/completions.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/crash.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/developer.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/diagnostics.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/lockdown.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/mounter.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/notification.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/pcap.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/power_assertion.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/processes.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/profile.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/provision.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/remote.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/restore.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/springboard.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/syslog.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/usbmux.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/version.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/cli/webinspector.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/common.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/exceptions.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/irecv.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/irecv_devices.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/lockdown_service_provider.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/os_utils.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/posix_util.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/osu/win_util.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/pair_records.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/common.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/app_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/core_device_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/device_info.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/diagnostics_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/core_device/file_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/module_imports.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remote_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remote_service_discovery.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/remotexpc.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/tunnel_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/utils.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/remote/xpc_message.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/dsc_uuid_map.json +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/dsc_uuid_map.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/firmware_notifications.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/element_attribute.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/element_clear.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/enter_fullscreen.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/find_nodes.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/focus.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/get_attribute.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_displayed.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_editable.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/webinspector/is_enabled.js +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/asr.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/base_restore.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/consts.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/device.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/fdr.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/ftab.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/img4.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/recovery.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restore.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restore_options.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/restored_client.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/restore/tss.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/service_connection.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/accessibilityaudit.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/afc.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/amfi.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/companion.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/crash_reports.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/debugserver_applist.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/device_arbitration.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/device_link.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/diagnostics.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dtfetchsymbols.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/dvt_secure_socket_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/dvt_testmanaged_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/activity_trace_tap.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/application_listing.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/condition_inducer.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/core_profile_session_tap.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/device_info.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/energy_monitor.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/graphics.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/location_simulation.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/location_simulation_base.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/network_monitor.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/notifications.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/process_control.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/screenshot.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/instruments/sysmontap.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/dvt/testmanaged/xcuitest.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/file_relay.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/heartbeat.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/house_arrest.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/installation_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/lockdown_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/misagent.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_activation.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_config.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobile_image_mounter.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/mobilebackup2.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/notification_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/os_trace.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/pcapd.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/power_assertion.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/preboard.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/remote_fetch_symbols.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/remote_server.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/restore_service.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/screenshot.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/simulate_location.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/springboard.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/syslog.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/alert.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/automation_session.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_screencast.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_server.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/cdp_target.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/driver.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/element.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/inspector_session.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/selenium_api.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/session_protocol.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/web_protocol/switch_to.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/services/webinspector.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tcp_forwarder.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/api.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/tunneld/server.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/usbmux.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/utils.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/SOURCES.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/dependency_links.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/entry_points.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/requires.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3.egg-info/top_level.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pyproject.toml +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pytest.ini +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/requirements.txt +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/setup.cfg +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/cli/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/cli/test_cli.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/conftest.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_core_profile_session.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_dvt_secure_socket_proxy.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_fetch_symbols.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_location.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/instruments/test_screenshot.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_accessibility.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_afc.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_apps.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_backup2.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_bonjour.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_crash_reports.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_list_devices.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_lockdown.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_pcapd.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_springboard_services_relay.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_start_tunnel.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_syslog_relay.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_tcp_forwarder.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/__init__.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/common.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/conftest.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/test_driver.py +0 -0
- {pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/tests/services/test_web_protocol/test_element.py +0 -0
- {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.
|
|
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.
|
|
32
|
-
__version_tuple__ = version_tuple = (4, 26,
|
|
31
|
+
__version__ = version = '4.26.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (4, 26, 2)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
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
|
|
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
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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':
|
|
374
|
-
'RootPrivateKey':
|
|
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'] =
|
|
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
|
-
|
|
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 = {'
|
|
411
|
-
'
|
|
412
|
-
'HostCertificate': cert_pem,
|
|
416
|
+
pair_record = {'DeviceCertificate': device_cert_pem,
|
|
417
|
+
'HostCertificate': host_cert_pem,
|
|
413
418
|
'HostID': self.host_id,
|
|
414
|
-
'RootCertificate':
|
|
415
|
-
'RootPrivateKey':
|
|
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'] =
|
|
442
|
+
pair_record['HostPrivateKey'] = host_key_pem
|
|
438
443
|
escrow_bag = pair.get('EscrowBag')
|
|
439
444
|
|
|
440
445
|
if escrow_bag is not None:
|
{pymobiledevice3-4.26.0 → pymobiledevice3-4.26.2}/pymobiledevice3/resources/notifications.txt
RENAMED
|
@@ -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.
|
|
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>
|