PyMobileDevice3
Bekerja dengan alat pengembang (iOS >= 17.0)
Tindakan yang umum digunakan
Perpustakaan OpenSSL
ketergantungan libusb
Ringkasan
Instalasi
Penggunaan
Bit dan byte (API Python)
Berkontribusi
Informasi yang berguna
Pemberitahuan hak cipta
pymobiledevice3
adalah implementasi python3 murni untuk bekerja dengan iDevices (iPhone, dll...). Artinya, alat ini bersifat generik dalam arsitektur dan platform serta didukung dan diuji pada:
jendela
Linux
macOS
Fitur utama meliputi:
Penemuan perangkat melalui bonjour
Penerusan port TCP
Melihat baris syslog (termasuk debug)
Manajemen profil
Manajemen aplikasi
Manajemen sistem file (AFC)
Manajemen laporan kerusakan
Pengendusan jaringan (PCAP)
Pembaruan firmware
Memasang gambar
Mendengarkan dan memicu notifikasi ( notify_post()
api)
Membuat kueri dan mengatur opsi SpringBoard
Mengotomatiskan fitur WebInspector
Fitur DeveloperDiskImage:
Mengambil tangkapan layar
Simulasikan lokasi
Manajemen proses
Mengendus pesan KDebug (kemampuan strace ++)
Pemantauan proses (suka top
)
Fitur aksesibilitas
Mengendus oslog yang mencakup syslog dan rambu-rambu
Cadangan
Anda dapat menginstal dari PyPi:
python3 -m instalasi pip -U pymobiledevice3
Atau instal versi terbaru langsung dari sumber:
git clone [email protected]:doronz88/pymobiledevice3.gitcd pymobiledevice3 python3 -m pip instal -U -e .
Anda juga dapat menginstal pelengkapan otomatis untuk semua sub-perintah yang tersedia dengan menambahkan yang berikut ke ~/.zshrc
:
# python-klik<8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)"# python-klik>=8.0eval "$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)"
Saat ini, openssl secara eksplisit diperlukan jika menggunakan versi iOS yang lebih lama (<13).
Di macOS:
pembuatan bir, openssl
Di Linux:
sudo apt install openssl
Berinteraksi dengan perangkat dalam mode Pemulihan atau DFU memerlukan instalasi libusb
(diperlukan untuk menangani subperintah restore
).
Langkah-langkah instalasi berbeda tergantung pada platform Anda:
Di macOS:
# menggunakan homebrewbrew instal libusb# menggunakan port MacPortssudo instal libusb
Di Linux:
# Debian/Ubuntusudo apt-get install libusb-1.0-0-dev# Fedorasudo dnf install libusb-devel# Arch Linuxsudo pacman -S libusb
Di jendela:
Mengikuti situs web libusb untuk mengunduh binari rilis terbaru:
https://libusb.info/
Subperintah CLI dibagi secara kasar berdasarkan lapisan protokol yang digunakan untuk berinteraksi di perangkat. Misalnya, semua fitur yang berasal dari DeveloperDiskImage akan dapat diakses dari subperintah developer
. Ini juga berarti bahwa setiap fitur yang tidak ada tidak memerlukannya.
Ini adalah penggunaan CLI utama:
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
CATATAN: Saat ini, ini hanya didukung secara resmi di macOS & Windows (hingga iOS 17.3.1), namun didukung penuh di semua platform mulai iOS 17.4 menggunakan terowongan penguncian baru. Untuk interaksi windows dengan iOS 17.0-17.3.1, Anda perlu menginstal driver tambahan (kami tidak menyediakannya)
Mulai iOS 17.0, Apple memperkenalkan kerangka kerja CoreDevice baru untuk bekerja dengan perangkat iOS. Kerangka kerja ini bergantung pada protokol RemoteXPC. Untuk berkomunikasi dengan layanan pengembang, Anda harus terlebih dahulu membuat terowongan tepercaya dalam salah satu dari dua bentuk:
Luncurkan server terowongan bernama tunneld
untuk mendeteksi perangkat secara otomatis dan membuat koneksi
Jalankan yang berikut ini:
# jika perangkat mendukung pemasangan jarak jauh, seperti instance corellium atau AppleTV,# Anda harus memasangkannya terlebih dahulu# perangkat iOS normal tidak memerlukan langkah ini python3 -m pymobiledevice3 pasangan jarak jauh# di windows, gunakan shellsudo python3 yang memiliki hak istimewa - m pymobiledevice3 terowongan jarak jauh
Buat terowongan secara manual menggunakan start-tunnel
Jalankan yang berikut ini:
# jika perangkat mendukung pemasangan jarak jauh, seperti instance corellium atau AppleTV,# Anda harus memasangkannya terlebih dahulu# perangkat iOS normal tidak memerlukan langkah ini python3 -m pymobiledevice3 pasangan jarak jauh# CATATAN: di windows, gunakan shell yang memiliki hak istimewa untuk perintah berikut# mulai dari iOS 17.4 Anda dapat menggunakan lockdown tunnelsudo python3 -m pymobiledevice3 lockdown start-tunnel# jika Anda memerlukan jenis koneksi ini juga tersedia melalui wifi, Anda dapat aktifkan itpython3 -m pymobiledevice3 lockdown koneksi wifi aktif# pada versi iOS yang lebih lama gunakan yang berikut ini# Anda dapat meneruskan `-t wifi` untuk memaksa terowongan WiFisudo python3 -m pymobiledevice3 remote start-tunnel
Anda akan dicetak dengan keluaran berikut yang memberi Anda rincian koneksi yang diperlukan:
Interface: utun6 RSD Address: fd7b:e5b:6f53::1 RSD Port: 64337 Use the follow connection option: --rsd fd7b:e5b:6f53::1 64337
Perintah ini harus dijalankan dengan hak istimewa tinggi karena ini akan membuat perangkat TUN/TAP baru yang merupakan operasi dengan hak istimewa tinggi.
Sekarang, (hampir) semua pymobiledevice3 menerima opsi --rsd
/ --tunnel
tambahan untuk menyambung ke layanan melalui terowongan. Opsi --tunnel
khususnya, selalu dicoba secara implisit pada kesalahan InvalidServiceError
untuk menyederhanakan pekerjaan dengan layanan pengembang. Anda sekarang dapat mencoba menjalankan salah satunya sebagai berikut:
# Mengakses layanan DVT# Opsi --tunnel dapat menerima string kosong, atau UDID untuk perangkat tertentu # UDID dapat diberi akhiran :PORT jika ada terowongan yang melayani di port non-default python3 -m pymobiledevice3 developer dvt ls / --tunnel ''# Atau tanpa opsi `--tunnel`, dengan asumsi terowongan sedang berjalanpython3 -m pymobiledevice3 developer dvt ls /# Atau kita dapat menggunakan rincian terowongan manualpython3 -m pymobiledevice3 developer dvt ls / --rsd fd7b:e5b:6f53::1 64337# Dan kita juga dapat mengakses layanan lockdown "normal" lainnyapython3 -m pymobiledevice3 syslog live - -terowongan ''
Ada BANYAK yang dapat Anda lakukan pada perangkat menggunakan pymobiledevice3
. Ini hanyalah TL;DR dari beberapa operasi umum:
# Daftar perangkat yang terhubungpymobiledevice3 daftar usbmux# Telusuri perangkat RemoteXPC menggunakan bonjourpymobiledevice3 bonjour rsd# Lihat semua baris syslog (termasuk pesan debug)pymobiledevice3 syslog live# Filter hanya pesan yang mengandung kata "SpringBoard"pymobiledevice3 syslog live -m SpringBoard# Mulai ulang perangkatpymobiledevice3 diagnostik restart# Tarik semua laporan kerusakan dari tarikan kerusakan perangkatpymobiledevice3 /path/to/crashes# Kelola direktori mediapymobiledevice3 afc shell# Cantumkan semua aplikasi terinstal dan detailnya daftar aplikasi pymobiledevice3# Daftar kueri hanya kumpulan aplikasi spesifik os appspymobiledevice3 kueri aplikasi BUNDLE_ID1 BUNDLE_ID2# Buat terowongan TCP dari HOST Anda ke perangkatpymobiledevice3 usbmux forward HOST_PORT DEVICE_PORT# Buat cadangan penuh dari cadangan perangkatpymobiledevice3 backup2 --penuh DIRECTORY# Pulihkan cadangan tertentupymobiledevice3 backup2 pemulihan DIRECTORY# Lakukan pembaruan perangkat lunak dengan file/url IPSW tertentu:pymobiledevice3 pemulihan pembaruan -i /path/to/ipsw | url# Catatan: Subperintah webinspector berikut mengharuskan fitur Web Inspector diaktifkan# Dapatkan shell JavaScript interaktif di tabpymobiledevice3 webinspector js-shell# Daftar tab yang sedang dibuka adalah browser perangkatpymobiledevice3 webinspector yang dibuka-tab# Catatan: Subperintah webinspector berikut juga akan memerlukan fitur Otomasi Jarak Jauh untuk diaktifkan# Dapatkan shell JavaScript interaktif pada tabpymobiledevice3 otomatisasi jarak jauh yang baru webinspector js-shell --automation# Luncurkan sesi otomasi untuk melihat URL tertentupymobiledevice3 URL peluncuran webinspector# Dapatkan Shellpymobiledevice3 webinspector shell yang mirip Selenium# Catatan: Subperintah berikut mengharuskan DeveloperMode diaktifkan. Jika perangkat Anda tidak memiliki kode pin, Anda dapat menyalakannya secara otomatis menggunakan perintah berikut pymobiledevice3 amfi aktifkan-mode pengembang# Pasang DDI (DeveloperDiskImage)pymobiledevice3 mounter auto-mount# Catatan: Subperintah berikut mengasumsikan kedua DeveloperMode adalah dihidupkan dan DDI telah dipasang# Simulasikan lokasi `lat panjang` (iOS < 17.0)set lokasi simulasi pengembang pymobiledevice3 -- lintang panjang# Simulasikan lokasi `lat panjang` (iOS >= 17.0)pengembang pymobiledevice3 dvt set lokasi simulasi -- lintang panjang# Mainkan file .GPXpymobiledevice3 pengembang dvt simulasi-lokasi putar rute.gpx# Tambahkan kebisingan waktu acak antara -500 dan 500ms pada waktu antara dua titik di file GPXpymobiledevice3 pengembang dvt simulasi-lokasi putar rute.gpx 500# Hapus lokasi simulasi:pymobiledevice3 pengembang dvt simulasi-lokasi jelas# Mengambil tangkapan layar dari perangkat:pymobiledevice3 pengembang dvt tangkapan layar /path/to/screen.png# Lihat daftar proses terperinci (termasuk ppid, uid, guid, kotak pasir, dll...) pymobiledevice3 pengembang dvt sysmon proses tunggal# Mengendus oslogpymobiledevice3 pengembang dvt oslog# Matikan prosespymobiledevice3 pengembang dvt bunuh PID# Daftar file di direktori tertentu (tidak di-chroot)pymobiledevice3 developer dvt ls PATH# Luncurkan aplikasi dengan nama bundelnyapymobiledevice3 developer dvt launch com.apple.mobilesafari# Sniff semua event KDebug untuk mendapatkan keluaran seperti `strace`:pymobiledevice3 developer dvt core- sesi profil parse-live# Mengendus semua peristiwa KDebug ke dalam file untuk diurai nanti dengan alat seperti [`pykdebugparser`](https://github.com/matan1008/pykdebugparser), `fs_usage` dan seterusnya...pengembang pymobiledevice3 dvt sesi profil inti simpan NAMA FILE# Dapatkan informasi tambahan perangkat (nama kernel, chipset, dll ...)informasi perangkat dvt pengembang pymobiledevice3# Pantau konsumsi energi untuk PIDpymobiledevice3 pengembang dvt energi PID1 tertentu PID2 ...
Untuk memahami bit dan byte komunikasi dengan lockdownd
, atau jika ingin mempelajari API python, Anda disarankan untuk membaca artikel ini:
Memahami lapisan protokol iDevice
Lihat KONTRIBUSI.
Silakan lihat lain-lain
Perpustakaan menggunakan WindowsSelectorEventLoopPolicy untuk asyncio pada platform Windows. Silakan lihat diskusi lain-lain
Karya ini dilisensikan di bawah GPL 3.0, dan dikreditkan ke beberapa kontributor utama:
Hector Martin "marcan" [email protected]
Mathieu Renard
doronz [email protected]
matan1008 [email protected]
Guy Salton
netanelc305 [email protected]