commit | de1d724d0b753f21267da41eb4802e4f844f1331 | [log] [tgz] |
---|---|---|
author | Nikias Bassen <nikias@gmx.li> | Mon Feb 01 11:32:28 2021 +0100 |
committer | Nikias Bassen <nikias@gmx.li> | Mon Feb 01 11:32:28 2021 +0100 |
tree | df43ed6436bd9d9615044ae46f19c5729e7e4fd0 | |
parent | 09f2332f7d4cd0cc8c4646a63d75a3f037e2b9b2 [diff] |
idevice: Allow partial reads in idevice_connection_receive_timeout() and handle timeouts more adequate idevice_connection_receive_timeout(), when in SSL mode, was assuming it should always try to read the exact amount of data specified in `len` parameter. While this works with most protocols that have length fields or fixed sized headers/packets, some others (e.g. debugserver) break because it will request a read but doesn't know the size that is expected to be returned beforehand. This commit will handle timeouts better and return the number of bytes that were read in such cases (instead of returning 0 bytes read + error). Note that in the event of a timeout, IDEVICE_E_TIMEOUT will be returned even though actual data might have been read. The number of bytes read will be returned in recv_bytes.
A library to communicate with services on iOS devices using native protocols.
libimobiledevice is a cross-platform software library that talks the protocols to interact with iOS devices.
Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking.
Some key features are:
The implemented interfaces of many device service protocols allow applications to:
... and much more.
The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.
First install all required dependencies and build tools:
sudo apt-get install \ build-essential \ checkinstall \ git \ autoconf \ automake \ libtool-bin \ libplist-dev \ libusbmuxd-dev \ libssl-dev \ usbmuxd
If you want to optionally build the documentation or Python bindings use:
sudo apt-get install \ doxygen \ cython
Then clone the actual project repository:
git clone https://github.com/libimobiledevice/libimobiledevice.git cd libimobiledevice
Now you can build and install it:
./autogen.sh make sudo make install
If you require a custom prefix or other option being passed to ./configure
you can pass them directly to ./autogen.sh
like this:
./autogen.sh --prefix=/opt/local --enable-debug make sudo make install
By default, OpenSSL will be used. If you prefer GnuTLS, configure with --disable-openssl
like this:
./autogen.sh --disable-openssl
Documentation about using the library in your application is not available yet. The “hacker way” for now is to look at the implementation of the included utilities.
The library bundles the following command-line utilities in the tools directory:
Utility | Description |
---|---|
idevice_id | List attached devices or print device name of given device |
idevicebackup | Create or restore backup for devices (legacy) |
idevicebackup2 | Create or restore backups for devices running iOS 4 or later |
idevicecrashreport | Retrieve crash reports from a device |
idevicedate | Display the current date or set it on a device |
idevicedebug | Interact with the debugserver service of a device |
idevicedebugserverproxy | Proxy a debugserver connection from a device for remote debugging |
idevicediagnostics | Interact with the diagnostics interface of a device |
ideviceenterrecovery | Make a device enter recovery mode |
ideviceimagemounter | Mount disk images on the device |
ideviceinfo | Show information about a connected device |
idevicename | Display or set the device name |
idevicenotificationproxy | Post or observe notifications on a device |
idevicepair | Manage host pairings with devices and usbmuxd |
ideviceprovision | Manage provisioning profiles on a device |
idevicescreenshot | Gets a screenshot from the connected device |
idevicesetlocation | Simulate location on device |
idevicesyslog | Relay syslog of a connected device |
Please consult the usage information or manual pages of each utility for a documentation of available command line options and usage examples like this:
ideviceinfo --help man ideviceinfo
We welcome contributions from anyone and are grateful for every pull request!
If you'd like to contribute, please fork the master
branch, change, commit and send a pull request for review. Once approved it can be merged into the main code base.
If you plan to contribute larger changes or a major refactoring, please create a ticket first to discuss the idea upfront to ensure less effort for everyone.
Please make sure your contribution adheres to:
We are still working on the guidelines so bear with us!
This library and utilities are licensed under the GNU Lesser General Public License v2.1, also included in the repository in the COPYING
file.
Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.
This project is an independent software and has not been authorized, sponsored, or otherwise approved by Apple Inc.
README Updated on: 2020-06-12