PyMobileDevice3
Работа с инструментами разработчика (iOS >= 17.0)
Часто используемые действия
библиотеки OpenSSL
зависимость от libusb
Обзор
Установка
Использование
Биты и байты (Python API)
Содействие
Полезная информация
Уведомление об авторских правах
pymobiledevice3
— это чистая реализация Python3 для работы с iDevices (iPhone и т. д.). Это означает, что этот инструмент является универсальным как по архитектуре, так и по платформе, а также поддерживается и тестируется на:
Окна
Линукс
macOS
Основные особенности включают в себя:
Обнаружение устройств через Bonjour
Переадресация TCP-порта
Просмотр строк системного журнала (включая отладку)
Управление профилем
Управление приложениями
Управление файловой системой (AFC)
Управление отчетами о сбоях
Сетевой анализ (PCAP)
Обновление прошивки
Монтаж изображений
Прослушивание и запуск уведомлений ( notify_post()
api)
Запрос и настройка параметров SpringBoard
Автоматизация функций WebInspector
Возможности DeveloperDiskImage:
Делаем скриншоты
Имитировать локации
Управление процессами
Прослушивание сообщений KDebug (возможности strace ++)
Мониторинг процессов ( top
лайк)
Специальные возможности
Анализ oslog, который включает в себя как системный журнал, так и указатели.
Резервное копирование
Вы можете установить из PyPi:
python3 -m pip install -U pymobiledevice3
Или установите последнюю версию прямо из исходников:
git clone [email protected]:doronz88/pymobiledevice3.gitcd pymobiledevice3 python3 -m pip install -U -e .
Вы также можете установить автозаполнение для всех доступных подкоманд, добавив в ~/.zshrc
следующее:
# python-click<8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)"# python-click>=8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)"
В настоящее время openssl явно требуется при использовании в более старой версии iOS (<13).
В macOS:
заварить установку openssl
В Linux:
sudo apt установить openssl
Для взаимодействия с устройством в режимах Recovery или DFU необходимо установить libusb
(необходим для обработки подкоманд restore
).
Шаги установки различаются в зависимости от вашей конкретной платформы:
В macOS:
# с помощью homebrewbrew install libusb # с помощью порта MacPortssudo install libusb
В Linux:
# Debian/Ubuntusudo apt-get install libusb-1.0-0-dev# Fedorasudo dnf install libusb-devel# Arch Linuxsudo pacman -S libusb
На окнах:
Следующий веб-сайт libusb для загрузки последних двоичных файлов:
https://libusb.info/
Подкоманды CLI примерно разделены по уровню протокола, используемому для взаимодействия с устройством. Например, все функции, полученные из DeveloperDiskImage, будут доступны из подкоманды developer
. Это также означает, что каждая функция, которой нет, не потребует ее.
Это основное использование CLI:
Usage: pymobiledevice3 [OPTIONS] COMMAND [ARGS]... Interact with a connected iDevice (iPhone, iPad, ...) For more information please look at: https://github.com/doronz88/pymobiledevice3 Options: -h, --help Show this message and exit. Commands: activation Perform iCloud activation/deactivation or query the current state afc Manage device multimedia files amfi Enable/Disable developer-mode or query its state apps Manage installed applications backup2 Backup/Restore options bonjour Browse devices over bonjour companion List paired "companion" devices crash Manage crash reports developer Perform developer operations (Requires enable of Developer-Mode) diagnostics Reboot/Shutdown device or access other diagnostics services lockdown Pair/Unpair device or access other lockdown services mounter Mount/Umount DeveloperDiskImage or query related info notification Post/Observe notifications pcap Sniff device traffic power-assertion Create a power assertion processes View process list using diagnosticsd API profile Managed installed profiles or install SSL certificates provision Manage installed provision profiles remote Create RemoteXPC tunnels restore Restore an IPSW or access device in recovery mode springboard Access device UI syslog Watch syslog messages usbmux List devices or forward a TCP port webinspector Access webinspector services version Query pymobiledevice3 version
ПРИМЕЧАНИЕ. В настоящее время это официально поддерживается только в macOS и Windows (вплоть до iOS 17.3.1), но полностью поддерживается на всех платформах, начиная с iOS 17.4, с использованием нового туннеля блокировки. Для взаимодействия Windows с iOS 17.0-17.3.1 необходимо установить дополнительные драйверы (мы их не предоставляем)
Начиная с iOS 17.0, Apple представила новую платформу CoreDevice для работы с устройствами iOS. Эта платформа опирается на протокол RemoteXPC. Для связи со службами разработчика вам необходимо сначала создать доверенный туннель в одной из двух форм:
Запустите туннельный сервер с именем tunneld
для автоматического обнаружения устройств и установления соединений.
Выполните следующее:
# если устройство поддерживает удаленное сопряжение, например экземпляры Corellium или AppleTV, # вам необходимо сначала выполнить сопряжение # обычные устройства iOS не требуют этого шага python3 -m pymobiledevice3 удаленная пара# в Windows, используйте привилегированную оболочку sudo python3 - m pymobiledevice3 удаленный туннель
Создайте туннель вручную, используя start-tunnel
Выполните следующее:
# если устройство поддерживает удаленное сопряжение, например экземпляры Corellium или AppleTV, # вам необходимо сначала выполнить сопряжение # обычные устройства iOS не требуют этого шага python3 -m pymobiledevice3 удаленная пара # ПРИМЕЧАНИЕ: в Windows используйте привилегированную оболочку для следующих команд#, начиная с iOS 17.4, вы можете использовать гораздо более быстрый туннель блокировки sudo python3 -m pymobiledevice3 lockdown start-tunnel#, если вам нужно, чтобы этот тип соединения также был доступен через Wi-Fi вы можете включить его. Python3 -m pymobiledevice3 блокирует Wi-Fi-соединения # в более старой версии iOS вместо этого используйте следующее # вы можете передать `-t wifi`, чтобы принудительно создать туннель Wi-Fi sudo python3 -m pymobiledevice3 удаленный запуск туннеля
Вам будет распечатан следующий вывод, предоставляющий необходимые сведения о подключении:
Interface: utun6 RSD Address: fd7b:e5b:6f53::1 RSD Port: 64337 Use the follow connection option: --rsd fd7b:e5b:6f53::1 64337
Эту команду необходимо запускать с высокими привилегиями, поскольку она создает новое устройство TUN/TAP, что является операцией с высокими привилегиями.
Теперь (почти) все pymobiledevice3 поддерживают дополнительную опцию --rsd
/ --tunnel
для подключения к сервису через туннель. В частности, опция --tunnel
всегда неявно используется при ошибке InvalidServiceError
, чтобы упростить работу со службами разработчика. Теперь вы можете попробовать выполнить любой из них следующим образом:
# Доступ к службам DVT# Опция --tunnel может принимать либо пустую строку, либо UDID для конкретного устройства # UDID может иметь суффикс :PORT в случае туннелирования при обслуживании через порт, отличный от порта по умолчанию. python3 -m pymobiledevice3 Developer dvt ls / --tunnel ''# Или просто без опции `--tunnel`, предполагая, что в туннеле работает python3 -m pymobiledevice3 Developer dvt ls /# Или мы могли бы использовать подробные сведения о туннеле вручную. Python3 -m pymobiledevice3 Developer dvt ls / --rsd fd7b:e5b:6f53::1 64337# И мы также можем получить доступ к другим «обычным» службам блокировки. Python3 -m pymobiledevice3 syslog live --туннель ''
Вы можете МНОГОЕ сделать на устройстве, используя pymobiledevice3
. Это всего лишь краткий обзор некоторых распространенных операций:
# Вывод списка подключенных устройствpymobiledevice3 usbmux list# Просмотр устройств RemoteXPC с помощью bonjourpymobiledevice3 bonjour rsd# Просмотр всех строк системного журнала (включая сообщения отладки)pymobiledevice3 syslog live# Отфильтровать только сообщения, содержащие слово «SpringBoard»pymobiledevice3 syslog live -m SpringBoard# Перезапустить устройствоpymobiledevice3 Diagnostics restart# Извлеките все отчеты о сбоях из devicepymobiledevice3 сбой pull /path/to/crashes# Управление медиа-каталогомpymobiledevice3 afc Shell# Перечислить все установленные приложения и их подробные сведения. Список приложений pymobiledevice3# Список запросов только для определенного набора приложений OS usbmux пересылать HOST_PORT DEVICE_PORT# Создать полную резервную копию устройстваpymobiledevice3 резервное копирование2 резервное копирование --full DIRECTORY# Восстановить данную резервную копиюpymobiledevice3 резервное копирование2 восстановление DIRECTORY# Выполнить обновление программного обеспечения по заданному файлу/url IPSW:pymobiledevice3 восстановления обновления -i /path/to/ipsw | url# Примечание. Следующие подкоманды веб-инспектора потребуют включения функции веб-инспектора# Получить интерактивную оболочку JavaScript на любом открытом tabpymobiledevice3 webinspector js-shell# Список открытых в данный момент вкладок — это браузер устройства.pymobiledevice3 webinspector open-tabs# Примечание. Следующие подкоманды веб-инспектора также потребуется включить функцию удаленной автоматизации# Получите интерактивную оболочку JavaScript для новой удаленной автоматизации tabpymobiledevice3 webinspector js-shell --automation# Запустить сеанс автоматизации для просмотра заданного URL-адреса запуска веб-инспектора pymobiledevice3 # Получить селеноподобную оболочку веб-инспектора Shellpymobiledevice3 # Примечание. Для следующей подкоманды потребуется включить DeveloperMode. Если у вашего устройства нет пин-кода, вы можете включить его автоматически, используя следующую командуpymobiledevice3 amfi Enable-developer-mode# Смонтируйте DDI (DeveloperDiskImage)pymobiledevice3 mounter auto-mount# Примечание. Следующие подкоманды предполагают, что оба режима DeveloperMode включен и DDI смонтирован # Имитация «широтного» местоположения (iOS < 17.0) pymobiledevice3 разработчика моделирования местоположения — lat long# Имитировать местоположение `lat long` (iOS >= 17.0)pymobiledevice3 Developer dvt Simulator-Location Set -- lat Long# Воспроизвести файл .GPXpymobiledevice3 Developer dvt Simulate-location play Route.gpx# Добавить случайный временной шум в диапазоне -500 и 500 мс во времени между двумя точками в файле GPX pymobiledevice3 разработчика dvt имитировать местоположение воспроизведения маршрута.gpx 500# Очистите смоделированное местоположение: pymobiledevice3 Developer dvt Simulation-location Clear# Делаем снимок экрана с устройства: pymobiledevice3 Developer dvt скриншот /path/to/screen.png# Просмотр подробного списка процессов (включая ppid, uid, guid, изолированную программную среду и т. д.). .)pymobiledevice3 Developer dvt sysmon процесс один# Обнюхивание oslogpymobiledevice3 Developer dvt oslog# Kill a processpymobiledevice3 Developer dvt kill PID# Вывести список файлов в заданном каталоге (без chrooted)pymobiledevice3 Developer dvt ls PATH# Запустить приложение по имени его пакетаpymobiledevice3 Developer dvt launch com.apple.mobilesafari# Прослушать все события KDebug, чтобы получить `strace`- как вывод: pymobiledevice3 Developer dvt core-profile-session parse-live # Sniff all События KDebug в файл для последующего анализа с помощью таких инструментов, как [`pykdebugparser`](https://github.com/matan1008/pykdebugparser), `fs_usage` и т. д.... разработчик pymobiledevice3 dvt core-profile-session save ИМЯ ФАЙЛА # Получить расширенную информацию об устройстве (имя ядра, набор микросхем и т. д.) pymobiledevice3 Developer dvt информация об устройстве# Мониторинг энергопотребления для конкретного разработчика PIDpymobiledevice3 dvt Energy PID1 PID2 ...
Чтобы понять биты и байты связи с помощью lockdownd
или если вы хотите изучить API Python, вам рекомендуется взглянуть на эту статью:
Понимание уровней протокола iDevice
См. ВКЛАД.
Пожалуйста, посмотрите разное
Библиотека использует WindowsSelectorEventLoopPolicy для asyncio на платформе Windows. Пожалуйста, смотрите обсуждение
Эта работа распространяется под лицензией GPL 3.0 и указана несколькими основными участниками:
Гектор Мартин «marcan» [email protected]
Матье Ренар
доронз [email protected]
matan1008 [email protected]
Гай Солтон
netanelc305 [email protected]