PyMobileDevice3
使用開發者工具 (iOS >= 17.0)
常用動作
OpenSSL 函式庫
libusb 依賴
概述
安裝
用法
位元和位元組 (Python API)
貢獻
有用的信息
版權聲明
pymobiledevice3
是一個純 python3 實現,用於與 iDevices(iPhone 等)一起使用。這意味著該工具是架構和平台通用的,並且受支援和測試:
視窗
Linux
macOS
主要特點包括:
透過 bonjour 發現設備
TCP連接埠轉送
查看系統日誌行(包括調試)
檔案管理
應用程式管理
文件系統管理(AFC)
崩潰報告管理
網路嗅探(PCAP)
韌體更新
安裝映像
通知監聽和觸發( notify_post()
api)
查詢和設定SpringBoard選項
自動化 WebInspector 功能
DeveloperDiskImage 特點:
截圖
模擬位置
流程管理
嗅探 KDebug 訊息( strace功能++)
進程監控( top
讚)
輔助功能
嗅探 oslog,其中包括系統日誌和路標
備份
您可以從 PyPi 安裝:
python3 -m pip install -U pymobiledevice3
或直接從來源安裝最新版本:
git 複製 [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)"
目前,如果在較舊的 iOS 版本(<13)上使用,則明確需要 openssl。
在 macOS 上:
釀造安裝openssl
在 Linux 上:
sudo apt 安裝 openssl
在復原或 DFU 模式下與裝置互動需要安裝libusb
(處理restore
子指令所必需的)。
安裝步驟會根據您的特定平台而有所不同:
在 macOS 上:
# 使用 homebrewbrew 安裝 libusb# 使用 MacPortssudo 連接埠安裝 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 上,使用特權 shellsudo python3 - m pymobiledevice3 遠端隧道
使用start-tunnel
手動建立隧道
執行以下命令:
# 如果裝置支援遠端配對,例如 corellium 實例或 AppleTV,# 您需要先將它們配對# 普通 iOS 裝置不需要此步驟 python3 -m pymobiledevice3 遠端配對# 注意:在 Windows 上,使用特權 shell對於以下命令# 從iOS 17.4 開始,您可以使用更快的鎖定隧道sudo python3 -m pymobiledevice3locking start-tunnel# 如果您需要此連接類型也可透過wifi 使用,則可以啟用它python3 -m pymobiledevice3locking wifi-connections on# 在較舊的iOS版本上,請使用以下內容# 您可以透過`-t wifi` 強制建立WiFi 隧道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
選項,用於透過隧道連接到服務。具體來說,總是在出現InvalidServiceError
錯誤時隱式嘗試使用--tunnel
選項,以簡化開發人員服務的工作。現在您可以嘗試執行其中任何一個,如下所示:
# 存取 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 --tunnel ''
您可以使用pymobiledevice3
在裝置上執行很多操作。這只是一些常見操作的 TL;DR:
# 列出已連接的設備pymobiledevice3 usbmux list# 使用bonjourpymobiledevice3 bonjour rsd 瀏覽RemoteXPC 設備pymobiledevice3 bonjour rsd# 查看所有syslog 行(包括調試消息)pymobiledevice3 過濾器包含 13 過濾器包含的消息)pymobile。 # 重新啟動devicepymobiledevice3 診斷重啟#從設備中提取所有崩潰報告pymobiledevice3 crash pull /path/to/crashes# 管理媒體目錄pymobiledevice3 afc shell# 列出所有已安裝的應用程式及其詳細資訊pymobiledevice3 apps list# 僅列出查詢特定的一組作業系統應用程式pymobiledevice3 apps 查詢BUNDLE_ID1 BUNDLE_ID2# 建立TCP 隧道您的主機到裝置pymobiledevice3 usbmuxHOST_PORT DEVICE_PORT, Nacto 隧道您的主機到裝置pymobiledevice3 usbmuxHOST_PORT DEVICE_PORT, N823232323 backup2 123 backup2 2 月的備份還原給定DIRECTORY#透過給定的IPSW檔/url執行軟體更新:pymobiledevice3恢復更新-i /路徑/到/ipsw | url# 注意:以下webinspector 子指令將需要開啟Web Inspector 功能# 在任何開啟的標籤上取得互動式JavaScript shell pymobiledevice3 webinspector js-shell# 列出目前開啟的標籤是裝置的瀏覽器pymobiledevice3 webinspector opening-tabs # 注意:以下webinspector 子命令還需要打開遠端自動化功能# 在新的遠端自動化標籤上取得互動式JavaScript shellpymobiledevice3 webinspector js-shell --automation# 啟動自動化會話以查看給定的URLpymobiledevice3 webinspector 啟動URL# 取得類似selenium 的shellpymobiledevice3 webinspector shell # 注意:以下子命令將需要開啟 DeveloperMode。如果您的裝置沒有 pin 碼,您可以使用下列指令自動開啟它 pymobiledevice3 amfi enable-developer-mode# Mount the DDI (DeveloperDiskImage)pymobiledevice3 mounter auto-mount# 注意:下列子指令假設兩個 DeveloperMode 均為 DeveloperMode已安裝DDI # 模擬「經緯度」位置(iOS < 17.0)pymobiledevice3 開發人員模擬位置集-- 經緯度# 模擬「緯度經度」位置(iOS >= 17.0)pymobiledevice3 開發人員dvt 模擬- location set -- lat long# 播放.GPX 檔案pymobiledevice3developer dvtsimulate-locationplayroute.gpx# 在GPX 檔案中兩點之間的時間上新增-500 到500ms 之間的隨機定時雜訊pymobiledevice3developerdvtsimulate-locationplayroute. :pymobiledevice3developerdvtscreenshot/path/to/screen.png# 查看詳細進程清單(包括ppid,uid,guid,sandboxed等) ...)pymobiledevice3 Developer dvt sysmon process single# 嗅探終止進程PID# 列出給定目錄中的檔案(未更改根目錄)pymobiledevice3 Developer dvt ls PATH# 按應用程式套件名稱啟動應用程式pymobiledevice3 Developer dvt launch com.apple.mobilesafari# 嗅探所有KDebug 事件以獲得類似於`` strace` 的輸出:pymobiledevice3 Developer dvt core-profile-session parse-live# 將所有KDebug 事件嗅探到檔案中,以便稍後使用[` 等工具進行解析pykdebugparser`](https://github.com/matan1008 /pykdebugparser)、`fs_usage`等等...pymobiledevice3 Developer dvt core-profile-session save FILENAME# 取得裝置擴充資訊(核心名稱、晶片組等.. .)pymobiledevice3 Developer dvt device-information# 能監控特定PID 的能監控特定PID 的能監控特定PID 的能監控特定PID。耗pymobiledevice3 Developer dvt energy PID1 PID2 ...
要了解與lockdownd
溝通的細節,或者如果您願意學習python API,建議您看一下這篇文章:
了解 iDevice 協定層
請參閱貢獻。
請參閱雜項
庫在 Windows 平台上使用 WindowsSelectorEventLoopPolicy 進行 asyncio。請參閱討論雜項
本作品根據 GPL 3.0 獲得許可,並歸功於幾個主要貢獻者:
赫克托·馬丁“marcan”[email protected]
馬蒂厄·雷納德
matan1008 [email protected]
蓋·索爾頓
netanelc305 [email protected]