diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..32e1570 --- /dev/null +++ b/README.md | |||
| @@ -0,0 +1,201 @@ | |||
| 1 | # libimobiledevice | ||
| 2 | |||
| 3 | *A library to communicate with services on iOS devices using native protocols.* | ||
| 4 | |||
| 5 |  | ||
| 6 | |||
| 7 | ## Features | ||
| 8 | |||
| 9 | libimobiledevice is a cross-platform software library that talks the protocols | ||
| 10 | to interact with iOS devices. | ||
| 11 | |||
| 12 | Unlike other projects, it does not depend on using any existing proprietary | ||
| 13 | libraries and does not require jailbreaking. | ||
| 14 | |||
| 15 | Some key features are: | ||
| 16 | |||
| 17 | - **Interface**: Implements many high-level interfaces for device services | ||
| 18 | - **Implementation**: Object oriented architecture and service abstraction layer | ||
| 19 | - **Cross-Platform:** Tested on Linux, macOS, Windows and Android platforms | ||
| 20 | - **Utilities**: Provides various command-line utilities for device services | ||
| 21 | - **SSL**: Allows choosing between OpenSSL, GnuTLS, or MbedTLS to handle SSL communication | ||
| 22 | - **Network**: Supports network connections with "WiFi sync" enabled devices | ||
| 23 | - **Python:** Provides Cython based bindings for Python | ||
| 24 | |||
| 25 | The implemented interfaces of many device service protocols allow applications | ||
| 26 | to: | ||
| 27 | |||
| 28 | * Access filesystem of a device | ||
| 29 | * Access documents of file sharing apps | ||
| 30 | * Retrieve information about a device and modify various settings | ||
| 31 | * Backup and restore the device in a native way compatible with iTunes | ||
| 32 | * Manage app icons arrangement on the device | ||
| 33 | * Install, remove, list and basically manage apps | ||
| 34 | * Activate a device using official servers | ||
| 35 | * Manage contacts, calendars, notes and bookmarks | ||
| 36 | * Retrieve and remove crashreports | ||
| 37 | * Retrieve various diagnostics information | ||
| 38 | * Establish a debug connection for app debugging | ||
| 39 | * Mount filesystem images | ||
| 40 | * Forward device notifications | ||
| 41 | * Manage device provisioning | ||
| 42 | * Take screenshots from the device screen (requires mounted developer image) | ||
| 43 | * Simulate changed geolocation of the device (requires mounted developer image) | ||
| 44 | * Relay the syslog of the device | ||
| 45 | * Expose a connection for WebKit remote debugging | ||
| 46 | |||
| 47 | ... and much more. | ||
| 48 | |||
| 49 | The library is in development since August 2007 with the goal to bring support | ||
| 50 | for these devices to the Linux Desktop. | ||
| 51 | |||
| 52 | ## Installation / Getting started | ||
| 53 | |||
| 54 | ### Debian / Ubuntu Linux | ||
| 55 | |||
| 56 | First install all required dependencies and build tools: | ||
| 57 | ```shell | ||
| 58 | sudo apt-get install \ | ||
| 59 | build-essential \ | ||
| 60 | pkg-config \ | ||
| 61 | checkinstall \ | ||
| 62 | git \ | ||
| 63 | autoconf \ | ||
| 64 | automake \ | ||
| 65 | libtool-bin \ | ||
| 66 | libplist-dev \ | ||
| 67 | libusbmuxd-dev \ | ||
| 68 | libimobiledevice-glue-dev \ | ||
| 69 | libtatsu-dev \ | ||
| 70 | libssl-dev \ | ||
| 71 | usbmuxd | ||
| 72 | ``` | ||
| 73 | NOTE: [libtatsu](https://github.com/libimobiledevice/libtatsu) (and thus `libtatsu-dev`) | ||
| 74 | is a new library that was just published recently, you have to | ||
| 75 | [build it from source](https://github.com/libimobiledevice/libtatsu?tab=readme-ov-file#building). | ||
| 76 | |||
| 77 | If you want to optionally build the documentation or Python bindings use: | ||
| 78 | ```shell | ||
| 79 | sudo apt-get install \ | ||
| 80 | doxygen \ | ||
| 81 | cython | ||
| 82 | ``` | ||
| 83 | |||
| 84 | Then clone the actual project repository: | ||
| 85 | ```shell | ||
| 86 | git clone https://github.com/libimobiledevice/libimobiledevice.git | ||
| 87 | cd libimobiledevice | ||
| 88 | ``` | ||
| 89 | |||
| 90 | Now you can build and install it: | ||
| 91 | ```shell | ||
| 92 | ./autogen.sh | ||
| 93 | make | ||
| 94 | sudo make install | ||
| 95 | ``` | ||
| 96 | |||
| 97 | If you require a custom prefix or other option being passed to `./configure` | ||
| 98 | you can pass them directly to `./autogen.sh` like this: | ||
| 99 | ```bash | ||
| 100 | ./autogen.sh --prefix=/opt/local --enable-debug | ||
| 101 | make | ||
| 102 | sudo make install | ||
| 103 | ``` | ||
| 104 | |||
| 105 | By default, OpenSSL will be used as TLS/SSL library. If you prefer GnuTLS, | ||
| 106 | configure with `--with-gnutls` like this: | ||
| 107 | ```bash | ||
| 108 | ./autogen.sh --with-gnutls | ||
| 109 | ``` | ||
| 110 | |||
| 111 | MbedTLS is also supported and can be enabled by passing `--with-mbedtls` to | ||
| 112 | configure. If mbedTLS is not installed in a default location, you need to set | ||
| 113 | the environment variables `mbedtls_INCLUDES` to the path that contains the | ||
| 114 | MbedTLS headers and `mbedtls_LIBDIR` to set the library path. Optionally, | ||
| 115 | `mbedtls_LIBS` can be used to set the library names directly. Example: | ||
| 116 | ```bash | ||
| 117 | ./autogen.sh --with-mbedtls mbedtls_INCLUDES=/opt/local/include mbedtls_LIBDIR=/opt/local/lib | ||
| 118 | ``` | ||
| 119 | |||
| 120 | ## Usage | ||
| 121 | |||
| 122 | Documentation about using the library in your application is not available yet. | ||
| 123 | The "hacker way" for now is to look at the implementation of the included | ||
| 124 | utilities. | ||
| 125 | |||
| 126 | ### Utilities | ||
| 127 | |||
| 128 | The library bundles the following command-line utilities in the tools directory: | ||
| 129 | |||
| 130 | | Utility | Description | | ||
| 131 | | -------------------------- | ------------------------------------------------------------------ | | ||
| 132 | | `idevice_id` | List attached devices or print device name of given device | | ||
| 133 | | `idevicebackup` | Create or restore backup for devices (legacy) | | ||
| 134 | | `idevicebackup2` | Create or restore backups for devices running iOS 4 or later | | ||
| 135 | | `idevicebtlogger` | Capture Bluetooth HCI traffic from a device (requires log profile) | | ||
| 136 | | `idevicecrashreport` | Retrieve crash reports from a device | | ||
| 137 | | `idevicedate` | Display the current date or set it on a device | | ||
| 138 | | `idevicedebug` | Interact with the debugserver service of a device | | ||
| 139 | | `idevicedebugserverproxy` | Proxy a debugserver connection from a device for remote debugging | | ||
| 140 | | `idevicediagnostics` | Interact with the diagnostics interface of a device | | ||
| 141 | | `ideviceenterrecovery` | Make a device enter recovery mode | | ||
| 142 | | `ideviceimagemounter` | Mount disk images on the device | | ||
| 143 | | `ideviceinfo` | Show information about a connected device | | ||
| 144 | | `idevicename` | Display or set the device name | | ||
| 145 | | `idevicenotificationproxy` | Post or observe notifications on a device | | ||
| 146 | | `idevicepair` | Manage host pairings with devices and usbmuxd | | ||
| 147 | | `ideviceprovision` | Manage provisioning profiles on a device | | ||
| 148 | | `idevicescreenshot` | Gets a screenshot from the connected device | | ||
| 149 | | `idevicesetlocation` | Simulate location on device | | ||
| 150 | | `idevicesyslog` | Relay syslog of a connected device | | ||
| 151 | | `afcclient` | Interact with device filesystem via AFC/HouseArrest | | ||
| 152 | |||
| 153 | Please consult the usage information or manual pages of each utility for a | ||
| 154 | documentation of available command line options and usage examples like this: | ||
| 155 | ```shell | ||
| 156 | ideviceinfo --help | ||
| 157 | man ideviceinfo | ||
| 158 | ``` | ||
| 159 | |||
| 160 | ## Contributing | ||
| 161 | |||
| 162 | We welcome contributions from anyone and are grateful for every pull request! | ||
| 163 | |||
| 164 | If you'd like to contribute, please fork the `master` branch, change, commit and | ||
| 165 | send a pull request for review. Once approved it can be merged into the main | ||
| 166 | code base. | ||
| 167 | |||
| 168 | If you plan to contribute larger changes or a major refactoring, please create a | ||
| 169 | ticket first to discuss the idea upfront to ensure less effort for everyone. | ||
| 170 | |||
| 171 | Please make sure your contribution adheres to: | ||
| 172 | * Try to follow the code style of the project | ||
| 173 | * Commit messages should describe the change well without being too short | ||
| 174 | * Try to split larger changes into individual commits of a common domain | ||
| 175 | * Use your real name and a valid email address for your commits | ||
| 176 | |||
| 177 | We are still working on the guidelines so bear with us! | ||
| 178 | |||
| 179 | ## Links | ||
| 180 | |||
| 181 | * Homepage: https://libimobiledevice.org/ | ||
| 182 | * Repository: https://github.com/libimobiledevice/libimobiledevice.git | ||
| 183 | * Repository (Mirror): https://git.libimobiledevice.org/libimobiledevice.git | ||
| 184 | * Issue Tracker: https://github.com/libimobiledevice/libimobiledevice/issues | ||
| 185 | * Mailing List: https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel | ||
| 186 | * Twitter: https://twitter.com/libimobiledev | ||
| 187 | |||
| 188 | ## License | ||
| 189 | |||
| 190 | This library and utilities are licensed under the [GNU Lesser General Public License v2.1](https://www.gnu.org/licenses/lgpl-2.1.en.html), | ||
| 191 | also included in the repository in the `COPYING` file. | ||
| 192 | |||
| 193 | ## Credits | ||
| 194 | |||
| 195 | Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, | ||
| 196 | iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc. | ||
| 197 | |||
| 198 | This project is an independent software and has not been authorized, sponsored, | ||
| 199 | or otherwise approved by Apple Inc. | ||
| 200 | |||
| 201 | README Updated on: 2024-10-22 | ||
