pymobiledevice3


Namepymobiledevice3 JSON
Version 4.14.20 PyPI version JSON
download
home_pageNone
SummaryPure python3 implementation for working with iDevices (iPhone, etc...)
upload_time2024-11-13 17:49:05
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseGNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
keywords ios protocol lockdownd instruments automation cli afc
VCS
bugtrack_url
requirements construct asn1 click coloredlogs IPython bpylist2 pygments hexdump arrow daemonize gpxpy pykdebugparser pyusb tqdm requests xonsh parameter_decorators packaging pygnuutils cryptography pycrashreport fastapi uvicorn starlette wsproto nest_asyncio Pillow inquirer3 ipsw_parser remotezip zeroconf ifaddr hyperframe srptools qh3 developer_disk_image opack psutil pytun-pmd3 aiofiles prompt_toolkit sslpsk-pmd3 python-pcapng
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyMobileDevice3

<!-- markdownlint-disable MD013 -->
[![Python application](https://github.com/doronz88/pymobiledevice3/workflows/Python%20application/badge.svg)](https://github.com/doronz88/pymobiledevice3/actions/workflows/python-app.yml "Python application action")
[![Pypi version](https://img.shields.io/pypi/v/pymobiledevice3.svg)](https://pypi.org/project/pymobiledevice3/ "PyPi package")
[![Downloads](https://static.pepy.tech/personalized-badge/pymobiledevice3?period=total&units=none&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pymobiledevice3)
[![Discord](https://img.shields.io/discord/1133265168051208214?logo=Discord&label=Discord)](https://discord.gg/52mZGC3JXJ)
<!-- markdownlint-enable MD013 -->

- [PyMobileDevice3](#pymobiledevice3)
  - [Overview](#overview)
  - [Installation](#installation)
    - [OpenSSL libraries](#openssl-libraries)
    - [libusb dependency](#libusb-dependency)
  - [Usage](#usage)
    - [Working with developer tools (iOS \>= 17.0)](#working-with-developer-tools-ios--170)
    - [Commonly used actions](#commonly-used-actions)
  - [The bits and bytes (Python API)](#the-bits-and-bytes-python-api)
  - [Contributing](#contributing)
  - [Useful info](#useful-info)
  - [Copyright notice](#copyright-notice)

## Overview

`pymobiledevice3` is a pure python3 implementation for working with iDevices (iPhone, etc...). This means this tool is
both architecture and platform generic and is supported and tested on:

- Windows
- Linux
- macOS

Main features include:

- Device discovery over bonjour
- TCP port forwarding
- Viewing syslog lines (including debug)
- Profile management
- Application management
- File system management (AFC)
- Crash reports management
- Network sniffing (PCAP)
- Firmware update
- Mounting images
- Notification listening and triggering (`notify_post()` api)
- Querying and setting SpringBoard options
- Automating WebInspector features
- DeveloperDiskImage features:
  - Taking screenshots
  - Simulate locations
  - Process management
  - Sniffing KDebug messages (**strace** capabilities++)
  - Process monitoring (`top` like)
  - Accessibility features
  - Sniffing oslog which includes both syslog and signposts
- Backup

## Installation

You can install from PyPi:

```shell
python3 -m pip install -U pymobiledevice3
```

Or install the latest version directly from sources:

```shell
git clone git@github.com:doronz88/pymobiledevice3.git
cd pymobiledevice3
python3 -m pip install -U -e .
```

You can also install auto-completion for all available sub-commands by adding the following into your `~/.zshrc`:

```shell
# python-click<8.0
eval "$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)"
# python-click>=8.0
eval "$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)"
```

### OpenSSL libraries

Currently, openssl is explicitly required if using on older iOS version (<13).

On macOS:

```shell
brew install openssl
```

On Linux:

```shell
sudo apt install openssl
```

### libusb dependency

Interacting with the device in Recovery or DFU modes requires `libusb` to be installed (necessary for handling the `restore` subcommands).

The installation steps differentiate depending on your exact platform:

On macOS:

```shell
# using homebrew
brew install libusb

# using MacPorts
sudo port install libusb
```

On Linux:

```shell
# Debian/Ubuntu
sudo apt-get install libusb-1.0-0-dev

# Fedora
sudo dnf install libusb-devel

# Arch Linux
sudo pacman -S libusb
```

On windows:

Following libusb website to download latest release binaries:

<https://libusb.info/>

## Usage

The CLI subcommands are divided roughly by the protocol layer used for interacting in the device. For example, all
features derived from the DeveloperDiskImage will be accessible from the `developer`
subcommand. This also means that every feature which isn't there won't require it.

This is the main CLI usage:

```
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
```

### Working with developer tools (iOS >= 17.0)

> **NOTE:** Currently, this is only officially supported on macOS & Windows (up to iOS 17.3.1), but fully supported on
> all platforms starting at iOS 17.4 using the new lockdown tunnel. For windows interaction with iOS 17.0-17.3.1, you'll
> need to install the additional drivers (we don't provide them)

Starting at iOS 17.0, Apple introduced the new CoreDevice framework to work with iOS devices. This framework relies on
the [RemoteXPC](https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md) protocol. In order to
communicate with the developer services you'll be required to first
create [trusted tunnel](https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md#trusted-tunnel) in one
of the two forms:

- Launch a tunnel-server named `tunneld` to automatically detect devices and establish connections
  - Execute the following:

    ```shell
    # if the device supports remote pairing, such as corellium instances or AppleTVs,
    # you'll need to first pair them
    # normal iOS devices don't require this step 
    python3 -m pymobiledevice3 remote pair
    
    # on windows, use a privileged shell
    sudo python3 -m pymobiledevice3 remote tunneld
    ```

- Create tunnel manually using `start-tunnel`
  - Execute the following:

    ```shell
    # if the device supports remote pairing, such as corellium instances or AppleTVs,
    # you'll need to first pair them
    # normal iOS devices don't require this step 
    python3 -m pymobiledevice3 remote pair
    
    # NOTE: on windows, use a privileged shell for the following commands

    # starting at iOS 17.4 you can use the much faster lockdown tunnel
    sudo python3 -m pymobiledevice3 lockdown start-tunnel
    
    # if you need this connection type to be also available over wifi, you can enable it
    python3 -m pymobiledevice3 lockdown wifi-connections on

    # on older iOS version use the following instead
    # you may pass `-t wifi` to force a WiFi tunnel
    sudo python3 -m pymobiledevice3 remote start-tunnel
    ```

    You will be printed with the following output providing you with the required connection details:

    ```
    Interface: utun6
    RSD Address: fd7b:e5b:6f53::1
    RSD Port: 64337
    Use the follow connection option:
    --rsd fd7b:e5b:6f53::1 64337
    ```

_Ths command must be run with high privileges since it creates a new TUN/TAP device which is a high
privilege operation._

Now, (almost) all of pymobiledevice3 accept an additional `--rsd`/`--tunnel` option for connecting to the service over
the tunnel. The `--tunnel` option specifically, is always attempted implicitly upon an `InvalidServiceError` error to
simplify the work with developer services. You can now try to execute any of them as follows:

```shell
# Accessing the DVT services
# The --tunnel option may accept either an empty string, or a UDID for a specific device 
# The UDID may be suffixed with :PORT in case tunneld in serving at a non-default port 
python3 -m pymobiledevice3 developer dvt ls / --tunnel ''

# Or simply without the `--tunnel` option, assuming the tunneld is running
python3 -m pymobiledevice3 developer dvt ls /

# Or we could use the manual tunnel details
python3 -m pymobiledevice3 developer dvt ls / --rsd fd7b:e5b:6f53::1 64337

# And we can also access or the other "normal" lockdown services
python3 -m pymobiledevice3 syslog live --tunnel ''
```

### Commonly used actions

There is A LOT you may do on the device using `pymobiledevice3`. This is just a TL;DR of some common operations:

```shell
# Listing connected devices
pymobiledevice3 usbmux list

# Browse RemoteXPC devices using bonjour
pymobiledevice3 bonjour rsd

# View all syslog lines (including debug messages)
pymobiledevice3 syslog live

# Filter out only messages containing the word "SpringBoard"
pymobiledevice3 syslog live -m SpringBoard

# Restart device
pymobiledevice3 diagnostics restart

# Pull all crash reports from device
pymobiledevice3 crash pull /path/to/crashes

# Manage the media directory
pymobiledevice3 afc shell

# List all installed applications and their details
pymobiledevice3 apps list

# List query only a specific set os apps
pymobiledevice3 apps query BUNDLE_ID1 BUNDLE_ID2

# Create a TCP tunnel from your HOST to the device
pymobiledevice3 usbmux forward HOST_PORT DEVICE_PORT

# Create a full backup of the device
pymobiledevice3 backup2 backup --full DIRECTORY

# Restore a given backup
pymobiledevice3 backup2 restore DIRECTORY

# Perform a software upate by a given IPSW file/url:
pymobiledevice3 restore update -i /path/to/ipsw | url

# Note: The following webinspector subcommands will require the Web Inspector feature to be turned on

# Get interactive JavaScript shell on any open tab
pymobiledevice3 webinspector js-shell

# List currently opened tabs is device's browser
pymobiledevice3 webinspector opened-tabs

# Note: The following webinspector subcommands will require also the Remote Automation feature to be turned on

# Get interactive JavaScript shell on new remote automation tab
pymobiledevice3 webinspector js-shell --automation

# Launch an automation session to view a given URL
pymobiledevice3 webinspector launch URL

# Get a a selenium-like shell
pymobiledevice3 webinspector shell

# Note: The following subcommand will require DeveloperMode to be turned on. If your device doesn't have a pin-code, you can turn it on automatically using the following command
pymobiledevice3 amfi enable-developer-mode

# Mount the DDI (DeveloperDiskImage)
pymobiledevice3 mounter auto-mount

# Note: The following subcommands assume both DeveloperMode is turned on and the DDI has been mounted

# Simulate a `lat long` location (iOS < 17.0)
pymobiledevice3 developer simulate-location set -- lat long

# Simulate a `lat long` location (iOS >= 17.0)
pymobiledevice3 developer dvt simulate-location set -- lat long

# Play a .GPX file
pymobiledevice3 developer dvt simulate-location play route.gpx

# Add random timing noise between -500 and 500ms on the time between two points in the GPX file
pymobiledevice3 developer dvt simulate-location play route.gpx 500

# Clear the simulated location:
pymobiledevice3 developer dvt simulate-location clear

# Taking a screenshot from the device:
pymobiledevice3 developer dvt screenshot /path/to/screen.png

# View detailed process list (including ppid, uid, guid, sandboxed, etc...)
pymobiledevice3 developer dvt sysmon process single

# Sniffing oslog
pymobiledevice3 developer dvt oslog

# Kill a process
pymobiledevice3 developer dvt kill PID

# List files in a given directory (un-chrooted)
pymobiledevice3 developer dvt ls PATH

# Launch an app by its bundle name
pymobiledevice3 developer dvt launch com.apple.mobilesafari

# Sniff all KDebug events to get an `strace`-like output:
pymobiledevice3 developer dvt core-profile-session parse-live

# Sniff all KDebug events into a file for parsing later with tools such as [`pykdebugparser`](https://github.com/matan1008/pykdebugparser), `fs_usage` and so on...
pymobiledevice3 developer dvt core-profile-session save FILENAME

# Get device extended information (kernel name, chipset, etc...)
pymobiledevice3 developer dvt device-information

# Monitor energy-consumption for a specific PID
pymobiledevice3 developer dvt energy PID1 PID2 ...
```

## The bits and bytes (Python API)

To understand the bits and bytes of the communication with `lockdownd`, or if are willing to learn the python API, you
are advised to take a look at this article:

[Understanding iDevice protocol layers](https://github.com/doronz88/pymobiledevice3/blob/master/misc/understanding_idevice_protocol_layers.md)

## Contributing

See [CONTRIBUTING](https://github.com/doronz88/pymobiledevice3/blob/master/CONTRIBUTING.md).

## Useful info

Please see [misc](https://github.com/doronz88/pymobiledevice3/blob/master/misc)

Library uses WindowsSelectorEventLoopPolicy for asyncio on Windows platform. Please see discussion [misc](https://github.com/doronz88/pymobiledevice3/issues/1217)

## Copyright notice

This work is licensed under GPL 3.0, and as, credited to several major contributors:

- Hector Martin "marcan" <hector@marcansoft.com>
- Mathieu Renard
- [doronz](https://github.com/doronz88) <doron88@gmail.com>
- [matan1008](https://github.com/matan1008) <matan1008@gmail.com>
- [Guy Salton](https://github.com/guysalt)
- [netanelc305](https://github.com/netanelc305) <netanelc305@protonmail.com>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pymobiledevice3",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>",
    "keywords": "ios, protocol, lockdownd, instruments, automation, cli, afc",
    "author": null,
    "author_email": "doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/51/7f/dd5e7d94105f3ea606ec0730689eaab776ab00163dc205bfbd9dfb81a14b/pymobiledevice3-4.14.20.tar.gz",
    "platform": null,
    "description": "# PyMobileDevice3\n\n<!-- markdownlint-disable MD013 -->\n[![Python application](https://github.com/doronz88/pymobiledevice3/workflows/Python%20application/badge.svg)](https://github.com/doronz88/pymobiledevice3/actions/workflows/python-app.yml \"Python application action\")\n[![Pypi version](https://img.shields.io/pypi/v/pymobiledevice3.svg)](https://pypi.org/project/pymobiledevice3/ \"PyPi package\")\n[![Downloads](https://static.pepy.tech/personalized-badge/pymobiledevice3?period=total&units=none&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pymobiledevice3)\n[![Discord](https://img.shields.io/discord/1133265168051208214?logo=Discord&label=Discord)](https://discord.gg/52mZGC3JXJ)\n<!-- markdownlint-enable MD013 -->\n\n- [PyMobileDevice3](#pymobiledevice3)\n  - [Overview](#overview)\n  - [Installation](#installation)\n    - [OpenSSL libraries](#openssl-libraries)\n    - [libusb dependency](#libusb-dependency)\n  - [Usage](#usage)\n    - [Working with developer tools (iOS \\>= 17.0)](#working-with-developer-tools-ios--170)\n    - [Commonly used actions](#commonly-used-actions)\n  - [The bits and bytes (Python API)](#the-bits-and-bytes-python-api)\n  - [Contributing](#contributing)\n  - [Useful info](#useful-info)\n  - [Copyright notice](#copyright-notice)\n\n## Overview\n\n`pymobiledevice3` is a pure python3 implementation for working with iDevices (iPhone, etc...). This means this tool is\nboth architecture and platform generic and is supported and tested on:\n\n- Windows\n- Linux\n- macOS\n\nMain features include:\n\n- Device discovery over bonjour\n- TCP port forwarding\n- Viewing syslog lines (including debug)\n- Profile management\n- Application management\n- File system management (AFC)\n- Crash reports management\n- Network sniffing (PCAP)\n- Firmware update\n- Mounting images\n- Notification listening and triggering (`notify_post()` api)\n- Querying and setting SpringBoard options\n- Automating WebInspector features\n- DeveloperDiskImage features:\n  - Taking screenshots\n  - Simulate locations\n  - Process management\n  - Sniffing KDebug messages (**strace** capabilities++)\n  - Process monitoring (`top` like)\n  - Accessibility features\n  - Sniffing oslog which includes both syslog and signposts\n- Backup\n\n## Installation\n\nYou can install from PyPi:\n\n```shell\npython3 -m pip install -U pymobiledevice3\n```\n\nOr install the latest version directly from sources:\n\n```shell\ngit clone git@github.com:doronz88/pymobiledevice3.git\ncd pymobiledevice3\npython3 -m pip install -U -e .\n```\n\nYou can also install auto-completion for all available sub-commands by adding the following into your `~/.zshrc`:\n\n```shell\n# python-click<8.0\neval \"$(_PYMOBILEDEVICE3_COMPLETE=source_zsh pymobiledevice3)\"\n# python-click>=8.0\neval \"$(_PYMOBILEDEVICE3_COMPLETE=zsh_source pymobiledevice3)\"\n```\n\n### OpenSSL libraries\n\nCurrently, openssl is explicitly required if using on older iOS version (<13).\n\nOn macOS:\n\n```shell\nbrew install openssl\n```\n\nOn Linux:\n\n```shell\nsudo apt install openssl\n```\n\n### libusb dependency\n\nInteracting with the device in Recovery or DFU modes requires `libusb` to be installed (necessary for handling the `restore` subcommands).\n\nThe installation steps differentiate depending on your exact platform:\n\nOn macOS:\n\n```shell\n# using homebrew\nbrew install libusb\n\n# using MacPorts\nsudo port install libusb\n```\n\nOn Linux:\n\n```shell\n# Debian/Ubuntu\nsudo apt-get install libusb-1.0-0-dev\n\n# Fedora\nsudo dnf install libusb-devel\n\n# Arch Linux\nsudo pacman -S libusb\n```\n\nOn windows:\n\nFollowing libusb website to download latest release binaries:\n\n<https://libusb.info/>\n\n## Usage\n\nThe CLI subcommands are divided roughly by the protocol layer used for interacting in the device. For example, all\nfeatures derived from the DeveloperDiskImage will be accessible from the `developer`\nsubcommand. This also means that every feature which isn't there won't require it.\n\nThis is the main CLI usage:\n\n```\nUsage: pymobiledevice3 [OPTIONS] COMMAND [ARGS]...\n\n  Interact with a connected iDevice (iPhone, iPad, ...)\n  For more information please look at:\n      https://github.com/doronz88/pymobiledevice3\n\nOptions:\n  -h, --help  Show this message and exit.\n\nCommands:\n  activation       Perform iCloud activation/deactivation or query the current state\n  afc              Manage device multimedia files\n  amfi             Enable/Disable developer-mode or query its state\n  apps             Manage installed applications\n  backup2          Backup/Restore options\n  bonjour          Browse devices over bonjour\n  companion        List paired \"companion\" devices\n  crash            Manage crash reports\n  developer        Perform developer operations (Requires enable of Developer-Mode)\n  diagnostics      Reboot/Shutdown device or access other diagnostics services\n  lockdown         Pair/Unpair device or access other lockdown services\n  mounter          Mount/Umount DeveloperDiskImage or query related info\n  notification     Post/Observe notifications\n  pcap             Sniff device traffic\n  power-assertion  Create a power assertion\n  processes        View process list using diagnosticsd API\n  profile          Managed installed profiles or install SSL certificates\n  provision        Manage installed provision profiles\n  remote           Create RemoteXPC tunnels\n  restore          Restore an IPSW or access device in recovery mode\n  springboard      Access device UI\n  syslog           Watch syslog messages\n  usbmux           List devices or forward a TCP port\n  webinspector     Access webinspector services\n  version          Query pymobiledevice3 version\n```\n\n### Working with developer tools (iOS >= 17.0)\n\n> **NOTE:** Currently, this is only officially supported on macOS & Windows (up to iOS 17.3.1), but fully supported on\n> all platforms starting at iOS 17.4 using the new lockdown tunnel. For windows interaction with iOS 17.0-17.3.1, you'll\n> need to install the additional drivers (we don't provide them)\n\nStarting at iOS 17.0, Apple introduced the new CoreDevice framework to work with iOS devices. This framework relies on\nthe [RemoteXPC](https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md) protocol. In order to\ncommunicate with the developer services you'll be required to first\ncreate [trusted tunnel](https://github.com/doronz88/pymobiledevice3/blob/master/misc/RemoteXPC.md#trusted-tunnel) in one\nof the two forms:\n\n- Launch a tunnel-server named `tunneld` to automatically detect devices and establish connections\n  - Execute the following:\n\n    ```shell\n    # if the device supports remote pairing, such as corellium instances or AppleTVs,\n    # you'll need to first pair them\n    # normal iOS devices don't require this step \n    python3 -m pymobiledevice3 remote pair\n    \n    # on windows, use a privileged shell\n    sudo python3 -m pymobiledevice3 remote tunneld\n    ```\n\n- Create tunnel manually using `start-tunnel`\n  - Execute the following:\n\n    ```shell\n    # if the device supports remote pairing, such as corellium instances or AppleTVs,\n    # you'll need to first pair them\n    # normal iOS devices don't require this step \n    python3 -m pymobiledevice3 remote pair\n    \n    # NOTE: on windows, use a privileged shell for the following commands\n\n    # starting at iOS 17.4 you can use the much faster lockdown tunnel\n    sudo python3 -m pymobiledevice3 lockdown start-tunnel\n    \n    # if you need this connection type to be also available over wifi, you can enable it\n    python3 -m pymobiledevice3 lockdown wifi-connections on\n\n    # on older iOS version use the following instead\n    # you may pass `-t wifi` to force a WiFi tunnel\n    sudo python3 -m pymobiledevice3 remote start-tunnel\n    ```\n\n    You will be printed with the following output providing you with the required connection details:\n\n    ```\n    Interface: utun6\n    RSD Address: fd7b:e5b:6f53::1\n    RSD Port: 64337\n    Use the follow connection option:\n    --rsd fd7b:e5b:6f53::1 64337\n    ```\n\n_Ths command must be run with high privileges since it creates a new TUN/TAP device which is a high\nprivilege operation._\n\nNow, (almost) all of pymobiledevice3 accept an additional `--rsd`/`--tunnel` option for connecting to the service over\nthe tunnel. The `--tunnel` option specifically, is always attempted implicitly upon an `InvalidServiceError` error to\nsimplify the work with developer services. You can now try to execute any of them as follows:\n\n```shell\n# Accessing the DVT services\n# The --tunnel option may accept either an empty string, or a UDID for a specific device \n# The UDID may be suffixed with :PORT in case tunneld in serving at a non-default port \npython3 -m pymobiledevice3 developer dvt ls / --tunnel ''\n\n# Or simply without the `--tunnel` option, assuming the tunneld is running\npython3 -m pymobiledevice3 developer dvt ls /\n\n# Or we could use the manual tunnel details\npython3 -m pymobiledevice3 developer dvt ls / --rsd fd7b:e5b:6f53::1 64337\n\n# And we can also access or the other \"normal\" lockdown services\npython3 -m pymobiledevice3 syslog live --tunnel ''\n```\n\n### Commonly used actions\n\nThere is A LOT you may do on the device using `pymobiledevice3`. This is just a TL;DR of some common operations:\n\n```shell\n# Listing connected devices\npymobiledevice3 usbmux list\n\n# Browse RemoteXPC devices using bonjour\npymobiledevice3 bonjour rsd\n\n# View all syslog lines (including debug messages)\npymobiledevice3 syslog live\n\n# Filter out only messages containing the word \"SpringBoard\"\npymobiledevice3 syslog live -m SpringBoard\n\n# Restart device\npymobiledevice3 diagnostics restart\n\n# Pull all crash reports from device\npymobiledevice3 crash pull /path/to/crashes\n\n# Manage the media directory\npymobiledevice3 afc shell\n\n# List all installed applications and their details\npymobiledevice3 apps list\n\n# List query only a specific set os apps\npymobiledevice3 apps query BUNDLE_ID1 BUNDLE_ID2\n\n# Create a TCP tunnel from your HOST to the device\npymobiledevice3 usbmux forward HOST_PORT DEVICE_PORT\n\n# Create a full backup of the device\npymobiledevice3 backup2 backup --full DIRECTORY\n\n# Restore a given backup\npymobiledevice3 backup2 restore DIRECTORY\n\n# Perform a software upate by a given IPSW file/url:\npymobiledevice3 restore update -i /path/to/ipsw | url\n\n# Note: The following webinspector subcommands will require the Web Inspector feature to be turned on\n\n# Get interactive JavaScript shell on any open tab\npymobiledevice3 webinspector js-shell\n\n# List currently opened tabs is device's browser\npymobiledevice3 webinspector opened-tabs\n\n# Note: The following webinspector subcommands will require also the Remote Automation feature to be turned on\n\n# Get interactive JavaScript shell on new remote automation tab\npymobiledevice3 webinspector js-shell --automation\n\n# Launch an automation session to view a given URL\npymobiledevice3 webinspector launch URL\n\n# Get a a selenium-like shell\npymobiledevice3 webinspector shell\n\n# Note: The following subcommand will require DeveloperMode to be turned on. If your device doesn't have a pin-code, you can turn it on automatically using the following command\npymobiledevice3 amfi enable-developer-mode\n\n# Mount the DDI (DeveloperDiskImage)\npymobiledevice3 mounter auto-mount\n\n# Note: The following subcommands assume both DeveloperMode is turned on and the DDI has been mounted\n\n# Simulate a `lat long` location (iOS < 17.0)\npymobiledevice3 developer simulate-location set -- lat long\n\n# Simulate a `lat long` location (iOS >= 17.0)\npymobiledevice3 developer dvt simulate-location set -- lat long\n\n# Play a .GPX file\npymobiledevice3 developer dvt simulate-location play route.gpx\n\n# Add random timing noise between -500 and 500ms on the time between two points in the GPX file\npymobiledevice3 developer dvt simulate-location play route.gpx 500\n\n# Clear the simulated location:\npymobiledevice3 developer dvt simulate-location clear\n\n# Taking a screenshot from the device:\npymobiledevice3 developer dvt screenshot /path/to/screen.png\n\n# View detailed process list (including ppid, uid, guid, sandboxed, etc...)\npymobiledevice3 developer dvt sysmon process single\n\n# Sniffing oslog\npymobiledevice3 developer dvt oslog\n\n# Kill a process\npymobiledevice3 developer dvt kill PID\n\n# List files in a given directory (un-chrooted)\npymobiledevice3 developer dvt ls PATH\n\n# Launch an app by its bundle name\npymobiledevice3 developer dvt launch com.apple.mobilesafari\n\n# Sniff all KDebug events to get an `strace`-like output:\npymobiledevice3 developer dvt core-profile-session parse-live\n\n# Sniff all KDebug events into a file for parsing later with tools such as [`pykdebugparser`](https://github.com/matan1008/pykdebugparser), `fs_usage` and so on...\npymobiledevice3 developer dvt core-profile-session save FILENAME\n\n# Get device extended information (kernel name, chipset, etc...)\npymobiledevice3 developer dvt device-information\n\n# Monitor energy-consumption for a specific PID\npymobiledevice3 developer dvt energy PID1 PID2 ...\n```\n\n## The bits and bytes (Python API)\n\nTo understand the bits and bytes of the communication with `lockdownd`, or if are willing to learn the python API, you\nare advised to take a look at this article:\n\n[Understanding iDevice protocol layers](https://github.com/doronz88/pymobiledevice3/blob/master/misc/understanding_idevice_protocol_layers.md)\n\n## Contributing\n\nSee [CONTRIBUTING](https://github.com/doronz88/pymobiledevice3/blob/master/CONTRIBUTING.md).\n\n## Useful info\n\nPlease see [misc](https://github.com/doronz88/pymobiledevice3/blob/master/misc)\n\nLibrary uses WindowsSelectorEventLoopPolicy for asyncio on Windows platform. Please see discussion [misc](https://github.com/doronz88/pymobiledevice3/issues/1217)\n\n## Copyright notice\n\nThis work is licensed under GPL 3.0, and as, credited to several major contributors:\n\n- Hector Martin \"marcan\" <hector@marcansoft.com>\n- Mathieu Renard\n- [doronz](https://github.com/doronz88) <doron88@gmail.com>\n- [matan1008](https://github.com/matan1008) <matan1008@gmail.com>\n- [Guy Salton](https://github.com/guysalt)\n- [netanelc305](https://github.com/netanelc305) <netanelc305@protonmail.com>\n",
    "bugtrack_url": null,
    "license": "GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007",
    "summary": "Pure python3 implementation for working with iDevices (iPhone, etc...)",
    "version": "4.14.20",
    "project_urls": {
        "Bug Reports": "https://github.com/doronz88/pymobiledevice3/issues",
        "Homepage": "https://github.com/doronz88/pymobiledevice3"
    },
    "split_keywords": [
        "ios",
        " protocol",
        " lockdownd",
        " instruments",
        " automation",
        " cli",
        " afc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24367b9d2d952079add48be3e7d6e5272458b2ac1e32155f3fc55131f5699a1b",
                "md5": "d7356980c3cb45865078ac26c965948d",
                "sha256": "7ad4885e1cc8d8e5f8b5191924e19190eb630e709e929785c4eaa83279ef7552"
            },
            "downloads": -1,
            "filename": "pymobiledevice3-4.14.20-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d7356980c3cb45865078ac26c965948d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 659744,
            "upload_time": "2024-11-13T17:49:03",
            "upload_time_iso_8601": "2024-11-13T17:49:03.069619Z",
            "url": "https://files.pythonhosted.org/packages/24/36/7b9d2d952079add48be3e7d6e5272458b2ac1e32155f3fc55131f5699a1b/pymobiledevice3-4.14.20-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "517fdd5e7d94105f3ea606ec0730689eaab776ab00163dc205bfbd9dfb81a14b",
                "md5": "74e54f59974f3346d0b36fa94d54675d",
                "sha256": "817463ed8e2d7ea7f18f73b028d8be522f5fa8b39c186341afd6a5c619d1f492"
            },
            "downloads": -1,
            "filename": "pymobiledevice3-4.14.20.tar.gz",
            "has_sig": false,
            "md5_digest": "74e54f59974f3346d0b36fa94d54675d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 31566309,
            "upload_time": "2024-11-13T17:49:05",
            "upload_time_iso_8601": "2024-11-13T17:49:05.217240Z",
            "url": "https://files.pythonhosted.org/packages/51/7f/dd5e7d94105f3ea606ec0730689eaab776ab00163dc205bfbd9dfb81a14b/pymobiledevice3-4.14.20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-13 17:49:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "doronz88",
    "github_project": "pymobiledevice3",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "construct",
            "specs": [
                [
                    ">=",
                    "2.9.29"
                ]
            ]
        },
        {
            "name": "asn1",
            "specs": []
        },
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "coloredlogs",
            "specs": []
        },
        {
            "name": "IPython",
            "specs": []
        },
        {
            "name": "bpylist2",
            "specs": [
                [
                    ">=",
                    "4.0.1"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": []
        },
        {
            "name": "hexdump",
            "specs": []
        },
        {
            "name": "arrow",
            "specs": []
        },
        {
            "name": "daemonize",
            "specs": []
        },
        {
            "name": "gpxpy",
            "specs": [
                [
                    "<",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "pykdebugparser",
            "specs": [
                [
                    ">=",
                    "1.2.4"
                ]
            ]
        },
        {
            "name": "pyusb",
            "specs": [
                [
                    ">=",
                    "1.2.1"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "xonsh",
            "specs": []
        },
        {
            "name": "parameter_decorators",
            "specs": []
        },
        {
            "name": "packaging",
            "specs": []
        },
        {
            "name": "pygnuutils",
            "specs": [
                [
                    ">=",
                    "0.0.7"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    ">=",
                    "41.0.1"
                ]
            ]
        },
        {
            "name": "pycrashreport",
            "specs": [
                [
                    ">=",
                    "1.2.4"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    ">=",
                    "0.93.0"
                ]
            ]
        },
        {
            "name": "uvicorn",
            "specs": [
                [
                    ">=",
                    "0.15.0"
                ]
            ]
        },
        {
            "name": "starlette",
            "specs": []
        },
        {
            "name": "wsproto",
            "specs": []
        },
        {
            "name": "nest_asyncio",
            "specs": [
                [
                    ">=",
                    "1.5.5"
                ]
            ]
        },
        {
            "name": "Pillow",
            "specs": []
        },
        {
            "name": "inquirer3",
            "specs": [
                [
                    ">=",
                    "0.6.0"
                ]
            ]
        },
        {
            "name": "ipsw_parser",
            "specs": [
                [
                    ">=",
                    "1.3.4"
                ]
            ]
        },
        {
            "name": "remotezip",
            "specs": []
        },
        {
            "name": "zeroconf",
            "specs": [
                [
                    ">=",
                    "0.132.2"
                ]
            ]
        },
        {
            "name": "ifaddr",
            "specs": []
        },
        {
            "name": "hyperframe",
            "specs": []
        },
        {
            "name": "srptools",
            "specs": []
        },
        {
            "name": "qh3",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ],
                [
                    "<",
                    "2"
                ]
            ]
        },
        {
            "name": "developer_disk_image",
            "specs": [
                [
                    ">=",
                    "0.0.2"
                ]
            ]
        },
        {
            "name": "opack",
            "specs": []
        },
        {
            "name": "psutil",
            "specs": []
        },
        {
            "name": "pytun-pmd3",
            "specs": [
                [
                    ">=",
                    "2.0.9"
                ]
            ]
        },
        {
            "name": "aiofiles",
            "specs": []
        },
        {
            "name": "prompt_toolkit",
            "specs": []
        },
        {
            "name": "sslpsk-pmd3",
            "specs": [
                [
                    ">=",
                    "1.0.3"
                ]
            ]
        },
        {
            "name": "python-pcapng",
            "specs": [
                [
                    ">=",
                    "2.1.1"
                ]
            ]
        }
    ],
    "lcname": "pymobiledevice3"
}
        
Elapsed time: 0.40687s