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..ec057a6 --- /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://git.libimobiledevice.org/libimobiledevice.git | ||
183 | * Repository (Mirror): https://github.com/libimobiledevice/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-06-27 | ||