PyMobileDevice3
Arbeiten mit Entwicklertools (iOS >= 17.0)
Häufig verwendete Aktionen
OpenSSL-Bibliotheken
libusb-Abhängigkeit
Überblick
Installation
Verwendung
Die Bits und Bytes (Python-API)
Mitwirken
Nützliche Informationen
Urheberrechtshinweis
pymobiledevice3
ist eine reine Python3-Implementierung für die Arbeit mit iDevices (iPhone usw.). Dies bedeutet, dass dieses Tool sowohl architektur- als auch plattformgenerisch ist und unterstützt und getestet wird auf:
Windows
Linux
macOS
Zu den Hauptmerkmalen gehören:
Geräteerkennung über Bonjour
TCP-Portweiterleitung
Anzeigen von Syslog-Zeilen (einschließlich Debug)
Profilverwaltung
Anwendungsmanagement
Dateisystemverwaltung (AFC)
Verwaltung von Absturzberichten
Netzwerk-Sniffing (PCAP)
Firmware-Update
Bilder montieren
Abhören und Auslösen von Benachrichtigungen ( notify_post()
API)
Abfragen und Festlegen von SpringBoard-Optionen
Automatisieren von WebInspector-Funktionen
DeveloperDiskImage-Funktionen:
Screenshots machen
Standorte simulieren
Prozessmanagement
KDebug-Nachrichten ausspionieren ( Strace -Funktionen++)
Prozessüberwachung ( top
like)
Barrierefreiheitsfunktionen
Oslog-Sniffing, das sowohl Syslog als auch Wegweiser umfasst
Sicherung
Sie können von PyPi aus installieren:
python3 -m pip install -U pymobiledevice3
Oder installieren Sie die neueste Version direkt von den Quellen:
Git-Klon [email protected]:doronz88/pymobiledevice3.gitcd pymobiledevice3 python3 -m pip install -U -e .
Sie können auch die automatische Vervollständigung für alle verfügbaren Unterbefehle installieren, indem Sie Folgendes zu Ihrer ~/.zshrc
hinzufügen:
# python-click<8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)"# python-click>=8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)"
Derzeit ist OpenSSL explizit erforderlich, wenn eine ältere iOS-Version (<13) verwendet wird.
Auf macOS:
brew install openssl
Unter Linux:
sudo apt install openssl
Für die Interaktion mit dem Gerät im Wiederherstellungs- oder DFU-Modus muss libusb
installiert sein (notwendig für die Verarbeitung der restore
).
Die Installationsschritte unterscheiden sich je nach Ihrer genauen Plattform:
Auf macOS:
# mit Homebrewbrew libusb installieren# mit MacPortssudo-Port libusb installieren
Unter Linux:
# Debian/Ubuntusudo apt-get install libusb-1.0-0-dev# Fedorasudo dnf install libusb-devel# Arch Linuxsudo pacman -S libusb
Unter Windows:
Folgen Sie der Libusb-Website, um die neuesten Binärdateien herunterzuladen:
https://libusb.info/
Die CLI-Unterbefehle sind grob nach der Protokollschicht unterteilt, die für die Interaktion im Gerät verwendet wird. Beispielsweise sind alle vom DeveloperDiskImage abgeleiteten Funktionen über den Unterbefehl developer
zugänglich. Das bedeutet auch, dass jede Funktion, die nicht vorhanden ist, sie auch nicht benötigt.
Dies ist die Hauptverwendung der 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
HINWEIS: Derzeit wird dies offiziell nur auf macOS und Windows (bis iOS 17.3.1) unterstützt, aber auf allen Plattformen ab iOS 17.4 mit dem neuen Sperrtunnel vollständig unterstützt. Für die Windows-Interaktion mit iOS 17.0–17.3.1 müssen Sie die zusätzlichen Treiber installieren (wir stellen diese nicht zur Verfügung).
Ab iOS 17.0 führte Apple das neue CoreDevice-Framework für die Arbeit mit iOS-Geräten ein. Dieses Framework basiert auf dem RemoteXPC-Protokoll. Um mit den Entwicklerdiensten zu kommunizieren, müssen Sie zunächst einen vertrauenswürdigen Tunnel in einer der beiden Formen erstellen:
Starten Sie einen Tunnelserver namens tunneld
um Geräte automatisch zu erkennen und Verbindungen herzustellen
Führen Sie Folgendes aus:
# wenn das Gerät Remote-Pairing unterstützt, wie zum Beispiel Corellium-Instanzen oder AppleTVs,# müssen Sie sie zuerst koppeln# normale iOS-Geräte benötigen diesen Schritt nicht python3 -m pymobiledevice3 Remote-Pair# unter Windows verwenden Sie eine privilegierte Shellsudo python3 - m pymobiledevice3 remote getunnelt
Erstellen Sie den Tunnel manuell mit start-tunnel
Führen Sie Folgendes aus:
# Wenn das Gerät Remote-Pairing unterstützt, z. B. Corellium-Instanzen oder AppleTVs, # müssen Sie sie zuerst koppeln. # Normale iOS-Geräte erfordern diesen Schritt nicht. python3 -m pymobiledevice3 Remote Pair # HINWEIS: Verwenden Sie unter Windows eine privilegierte Shell Für die folgenden Befehle# können Sie ab iOS 17.4 den viel schnelleren Lockdown-Tunnelsudo python3 -m pymobiledevice3 lockdown start-tunnel# verwenden, wenn Sie diese Verbindung benötigen Damit der Typ auch über WLAN verfügbar ist, können Sie ihn aktivieren.python3 -m pymobiledevice3 sperrt WLAN-Verbindungen auf# auf älteren iOS-Versionen verwenden Sie stattdessen Folgendes# Sie können „-t wifi“ übergeben, um einen WLAN-Tunnel zu erzwingen. sudo python3 -m pymobiledevice3 Remote-Start- Tunnel
Sie erhalten die folgende Ausgabe mit den erforderlichen Verbindungsdetails:
Interface: utun6 RSD Address: fd7b:e5b:6f53::1 RSD Port: 64337 Use the follow connection option: --rsd fd7b:e5b:6f53::1 64337
Dieser Befehl muss mit hohen Rechten ausgeführt werden, da er ein neues TUN/TAP-Gerät erstellt, was eine Operation mit hohen Rechten darstellt.
Jetzt akzeptieren (fast) alle pymobiledevice3 eine zusätzliche Option --rsd
/ --tunnel
für die Verbindung zum Dienst über den Tunnel. Insbesondere die Option --tunnel
wird bei einem InvalidServiceError
-Fehler immer implizit ausprobiert, um die Arbeit mit Entwicklerdiensten zu vereinfachen. Sie können nun versuchen, eine davon wie folgt auszuführen:
# Zugriff auf die DVT-Dienste# Die Option --tunnel kann entweder eine leere Zeichenfolge oder eine UDID für ein bestimmtes Gerät akzeptieren. # Der UDID kann das Suffix :PORT hinzugefügt werden, falls getunnelt und an einem nicht standardmäßigen Port bereitgestellt wird. python3 -m pymobiledevice3 Developer dvt ls / --tunnel ''# Oder einfach ohne die Option „--tunnel“, vorausgesetzt, der Tunnel läuft.python3 -m pymobiledevice3 Developer dvt ls /# Oder wir könnten die manuellen Tunneldetailspython3 -m pymobiledevice3 Developer dvt ls / --rsd fd7b:e5b:6f53::1 64337# verwenden. Und wir können auch auf die anderen „normalen“ Lockdown-Dienste zugreifenpython3 -m pymobiledevice3 syslog live --tunnel ''
Mit pymobiledevice3
können Sie auf dem Gerät VIEL tun. Dies ist nur eine Zusammenfassung einiger gängiger Vorgänge:
# Angeschlossene Geräte auflistenpymobiledevice3 usbmux list# RemoteXPC-Geräte mit Bonjour durchsuchenpymobiledevice3 bonjour rsd# Alle Syslog-Zeilen anzeigen (einschließlich Debug-Meldungen)pymobiledevice3 syslog live# Nur Nachrichten herausfiltern, die das Wort „SpringBoard“ enthalten.pymobiledevice3 syslog live -m SpringBoard# Gerät neu startenpymobiledevice3 Diagnostics Neustart# Ziehen Sie alle Absturzberichte aus dem Absturz-Pull von devicepymobiledevice3 /path/to/crashes# Medienverzeichnis verwaltenpymobiledevice3 afc shell# Alle installierten Anwendungen und deren Details auflistenpymobiledevice3 apps list# Liste nur eine bestimmte Gruppe von Betriebssystemen abfragenpymobiledevice3 apps query BUNDLE_ID1 BUNDLE_ID2# Erstellen Sie einen TCP-Tunnel von Ihrem HOST zum Gerätpymobiledevice3 USBmux Forward HOST_PORT DEVICE_PORT# Erstellen Sie eine vollständige Sicherung der Sicherung „devicepymobiledevice3 backup2“. --full DIRECTORY# Stellen Sie ein bestimmtes Backuppymobiledevice3 Backup2 Restore DIRECTORY# wieder her. Führen Sie eine Softwareaktualisierung durch eine bestimmte IPSW-Datei/URL durch: pymobiledevice3 Restore Update -i /path/to/ipsw | url# Hinweis: Für die folgenden Webinspector-Unterbefehle muss die Web Inspector-Funktion aktiviert sein. # Interaktive JavaScript-Shell auf jedem geöffneten Tab abrufen. pymobiledevice3 webinspector js-shell# Liste der aktuell geöffneten Tabs ist der Browser des Geräts erfordert auch die Aktivierung der Remote-Automatisierungsfunktion. Rufen Sie die interaktive JavaScript-Shell für die neue Remote-Automatisierung auf tabpymobiledevice3 webinspector js-shell --automation# Starten Sie eine Automatisierungssitzung, um eine bestimmte URL anzuzeigen. Start-URL für pymobiledevice3 Webinspector. Rufen Sie eine Selenium-ähnliche Shell ab. pymobiledevice3 Webinspector Shell# Hinweis: Für den folgenden Unterbefehl muss DeveloperMode aktiviert sein. Wenn Ihr Gerät keinen PIN-Code hat, können Sie es mit dem folgenden Befehl automatisch einschalten: pymobiledevice3 amfi enable-developer-mode# Mounten Sie das DDI (DeveloperDiskImage). eingeschaltet und das DDI wurde gemountet# Simulieren Sie einen „Lat Long“-Standort (iOS < 17.0)pymobiledevice3 Developer Simulate-Location Set -- lat long# Simulieren Sie einen `lat long`-Standort (iOS >= 17.0)pymobiledevice3 Developer DVT Simulate-Location Set -- Lat Long# Spielen Sie eine .GPX-Datei ab.Pymobiledevice3 Developer DVT Simulate-Location Play Route.gpx# Fügen Sie zufälliges Timing-Rauschen dazwischen hinzu -500 und 500 ms auf die Zeit zwischen zwei Punkten in der GPX-Dateipymobiledevice3 Developer DVT Simulate-Location Play Route.gpx 500# Löschen Sie den simulierten Standort:pymobiledevice3 Developer Dvt Simulate-Location Clear# Einen Screenshot vom Gerät erstellen:pymobiledevice3 Developer DVT Screenshot /path/to/screen.png# Detaillierte Prozessliste anzeigen (einschließlich Ppid, UID, Guid, Sandboxed usw.) ...)pymobiledevice3 Developer dvt sysmon Process Single# Sniffing oslogpymobiledevice3 Developer dvt oslog# Kill a Prozesspymobiledevice3 Developer dvt kill PID# Dateien in einem bestimmten Verzeichnis auflisten (nicht chrooted)pymobiledevice3 Developer dvt ls PATH# Eine App mit ihrem Bundle-Namen startenpymobiledevice3 Developer dvt Launch com.apple.mobilesafari# Alle KDebug-Ereignisse abhören, um einen „strace“ zu erhalten- wie Ausgabe:pymobiledevice3 Developer dvt core-profile-session parse-live# Sniff all KDebug Ereignisse in eine Datei zum späteren Parsen mit Tools wie [`pykdebugparser`](https://github.com/matan1008/pykdebugparser), `fs_usage` und so weiter...pymobiledevice3 Developer DVT Core-Profile-Session Save FILENAME# Erhalten Sie erweiterte Geräteinformationen (Kernelname, Chipsatz usw.)pymobiledevice3 Developer DVT Geräteinformationen# Überwachen Sie den Energieverbrauch für ein bestimmtes Gerät PIDpymobiledevice3 Entwickler dvt Energie PID1 PID2 ...
Um die Bits und Bytes der Kommunikation mit lockdownd
zu verstehen oder bereit zu sein, die Python-API zu erlernen, empfehlen wir Ihnen, einen Blick auf diesen Artikel zu werfen:
Verständnis der iDevice-Protokollebenen
Siehe BEITRAGEN.
Bitte sehen Sie sich Sonstiges an
Die Bibliothek verwendet WindowsSelectorEventLoopPolicy für Asyncio auf der Windows-Plattform. Bitte sehen Sie sich die Diskussion Sonstiges an
Dieses Werk ist unter der GPL 3.0 lizenziert und wird mehreren wichtigen Mitwirkenden zugeschrieben:
Hector Martin „marcan“ [email protected]
Mathieu Renard
doronz [email protected]
matan1008 [email protected]
Guy Salton
netanelc305 [email protected]