Подключить первый iPod и работать с ним как с USB-накопителем было просто. С iPhone это тоже возможно, хотя подходы различаются в зависимости от того, с какими данными вы хотите работать.
В этой статье мы рассмотрим следующие подходы:
| Способ | Доступные файлы | Требования |
|---|---|---|
| PTP | Фотографии и видео | Встроено в Windows и macOS |
| AFC | Фотографии, видео и некоторые приложения | iTunes |
| FUSE (без джейлбрейка) | Фотографии, видео и некоторые приложения | Бесплатный клиент FUSE |
| FUSE (с джейлбрейком) | Все файлы | Джейлбрейк, бесплатный клиент FUSE |
| WebDAV через Filza | Все файлы | Джейлбрейк, бесплатный клиент WebDAV |
| AFC2 | Все файлы | Джейлбрейк, плагин AFC2, клиент AFC2 |
| Другие способы | Нет | Не работает в современных версиях iOS |
На устройстве без джейлбрейка можно работать только с данными камеры и некоторых приложений. В этой статье мы рассмотрим оба подхода.
PTP: доступ к фотографиям, видео и данным камеры через подключение в виде диска
При подключении по USB iOS автоматически представляет современные устройства как камеры. Для этого используется протокол передачи изображений (PTP) — довольно ограниченная система, позволяющая копировать фотографии туда и обратно. Вы, вероятно, узнаете папки DCIM, в которых обычно появляются фотографии.
У PTP есть ряд недостатков. Самый очевидный: доступ есть только к файлам камеры. Кроме того, PTP не поддерживает такие функции, как переименование или изменение файлов и папок: чтобы внести изменение, их приходится удалять и создавать заново. Это медленно.
Доступ к фотографиям и данным приложений по AFC с помощью iTunes
В базе знаний Apple есть статья, в которой описано, как управлять базовым обменом файлами с помощью iTunes.
Доступ к данным приложений по USB с помощью FUSE
FUSE — это система, которая позволяет подключать диски на компьютерах с Windows или Mac без внесения изменений в систему на уровне администратора. FUSE расшифровывается как «filesystem in userspace» (файловая система в пользовательском пространстве) и существует в разных вариантах на большинстве платформ. Сам по себе FUSE — это уровень абстракции: он не взаимодействует напрямую с устройством или источником данных, для этого обычно используется другой подход. При подключении iPhone в виде диска FUSE взаимодействует с iPhone по другому протоколу: SSH, AFC/AFC2, PTP или WebDAV. В Windows часто используется популярная файловая система пользовательского режима Dokan, а в macOS популярен osxfuse.
С точки зрения пользователя, поскольку FUSE унифицирует представление данных устройства, обычно неважно, какой именно протокол лежит в основе подключения.
Использование подключения FUSE в macOS
Покажем этот подход на примере macOS и подключения устройства. Чтобы это сработало, нужно установить бесплатный менеджер пакетов Homebrew и уметь работать с Терминалом в macOS.
Для начала найдём UDID вашего устройства. Это можно сделать с помощью бесплатной версии iPhone Backup Extractor, команды lsusb или ioreg -p IOUSB -l -w 0. Запустите iPhone Backup Extractor при подключённом устройстве, выберите своё устройство и откройте вкладку «Информация». UDID отображается в разделе «Идентификаторы оборудования»:

Данные устройства в iPhone Backup Extractor
Теперь подготовим FUSE для macOS:
$ brew tap homebrew/cask
$ brew cask install osxfuse
==> Caveats
To install and/or use osxfuse you may need to enable their kernel extension in
System Preferences → Security & Privacy → General
For more information refer to vendor documentation or the Apple Technical Note:
https://developer.apple.com/library/content/technotes/tn2459/_index.html
You must reboot for the installation of osxfuse to take effect.
А теперь установим ifuse — код, который может взаимодействовать с устройствами iOS через FUSE:
$ brew install ifuse
Когда ifuse установлен, можно подключить iPhone или iPad, используя UDID, полученный ранее:
$ mkdir ~/iphone
$ ifuse ~/iphone --udid 000000000000000000000000
Теперь iPhone будет подключён к компьютеру в виде диска. Если хотите пойти дальше и изучить больше данных, будет полезна эта публикация на superuser, а эта публикация описывает использование инструмента usbmuxd.
Устранение возможных ошибок
ifuse может выдать сообщение: Invalid device UDID specified, length needs to be 40 characters. Начиная с iPhone X, Apple изменила формат UDID: теперь он состоит из 24 байтов и дефиса (-) вместо прежнего 40-байтового формата.
Если вы получаете Failed to connect to lockdownd service on the device. Try again. If it still fails try rebooting your device., убедитесь, что устройство подключено и на нём не отображается диалог «Доверять этому компьютеру?». Сначала его нужно подтвердить. Если после этого вы получаете ERROR: Device 000000000000000000000000 returned unhandled error code -13, отключите и снова подключите устройство.
При этом стоит убедиться, что на компьютере с Windows или Mac не запущены другие приложения, которые могут пытаться подключиться к вашему устройству iOS.
Если вы собираетесь подключать только одно устройство iOS, достаточно выполнить ifuse ~/iphone.
Нужно использовать предварительную версию usbmuxd?
usbmuxd обновляется нечасто, поэтому иногда при выходе новой версии iOS поддержки в нём нет. Чтобы это исправить, установите его последнюю версию для разработки, как показано ниже:
brew unlink usbmuxd
brew install --HEAD usbmuxd
brew unlink libimobiledevice
brew install --HEAD libimobiledevice
brew cask uninstall osxfuse
brew cask install osxfuse idevicepair
Доступ к данным приложений по USB с помощью FUSE на устройстве с джейлбрейком
Инструкции точно такие же, как выше. Если на устройстве выполнен джейлбрейк, вы сразу увидите больше данных. Здорово, правда?
Использование WebDAV-сервера Filza для доступа к корневым файлам iOS
На устройстве iOS с джейлбрейком через Cydia можно установить файловый менеджер Filza. В настройках Filza можно включить режим сервера WebDAV. Это довольно простой интерфейс, через который другие устройства могут получить доступ к вашему устройству iOS, хотя он крайне небезопасен. WebDAV — очень универсальный механизм работы с веб-данными, и доступ к нему есть у многих клиентов, в том числе у веб-интерфейса, встроенного в Filza. Подключитесь к устройству через веб-браузер, и вы увидите интерфейс. Всё просто.
Использование AFC2 для доступа к файлам iOS по USB
Что такое AFC2?
AFC расшифровывается как «Apple File Conduit» — это собственный механизм Apple для передачи данных с устройства iOS на компьютер. AFC работает на каждом устройстве iOS, но предоставляет доступ только к ограниченному набору данных. «AFC2» — неформальное название ряда инструментов, созданных сообществом джейлбрейка: они эмулируют AFC, но дают доступ ко всему устройству. Последнюю реализацию AFC2 создал Cannathea, она доступна на GitHub.
AFC2 можно установить из Cydia, и после установки любой клиент AFC сможет просматривать устройство целиком.
Другие способы получить доступ ко всем данным на устройствах с джейлбрейком
До выхода iOS 8 существовало несколько плагинов Cydia для устройств с джейлбрейком, благодаря которым iPhone при подключении определялся как USB-накопитель. Увы, в современных версиях iOS они больше не поддерживаются.
Восстановление удалённых файлов с подключённого устройства iOS
Если вы можете подключить iPhone или iPad в виде диска, может показаться, что удалённые файлы можно восстановить, напрямую работая с файловой системой на устройстве с джейлбрейком. К сожалению, таким способом файлы с iPhone восстановить нельзя, поскольку файловая система зашифрована. Даже если бы вам удалось найти фрагменты данных, расшифровать их было бы невозможно. У каждого файла свой ключ шифрования, и при удалении эти ключи уничтожаются.
Об этом кратко говорится в руководстве Apple по безопасности iOS на странице 17, в «обзоре архитектуры»:
Каждый раз, когда на разделе данных создаётся файл, функция «Защита данных» создаёт новый 256-битный ключ («ключ файла») и передаёт его аппаратному механизму AES, который использует этот ключ для шифрования файла при записи во флеш-память в режиме AES-XTS. На устройствах с SoC A7, S2 или S3 используется AES-CBC. Вектор инициализации вычисляется на основе смещения блока в файле и шифруется с помощью хеша SHA-1 ключа файла.
Подключение хорошо подходит для доступа к существующим файлам, но для восстановления почти бесполезно. Для этого нужна резервная копия iTunes или iCloud, данные, синхронизированные с iCloud, или криминалистический образ устройства, созданный до удаления данных.
Бонус: подключение компьютера с Windows с iPhone или iPad
В iOS 13 появилась поддержка SMB. Она позволяет удалённо получать доступ к дискам на компьютерах с Windows. Вот как это работает:
- Узнайте IP-адрес компьютера с Windows. Его покажет команда
ipconfig. - На компьютере с Windows щёлкните правой кнопкой мыши папку, к которой хотите открыть доступ, и выберите
Properties→Sharing→Advanced sharing. Нажмите «Открыть общий доступ к этой папке». - На вкладке «Доступ» выберите
Share..., затем в раскрывающемся меню выберите свою учётную запись, добавьте её и убедитесь, что у неё есть разрешения «Чтение и запись». Нажмите «Поделиться» и «Применить» и закройте окно. - На устройстве iOS откройте приложение Apple «Файлы» и нажмите «Подключиться к серверу». Введите
smb://и IP-адрес вашего компьютера. Затем выберите «Зарегистрированный пользователь» и введите имя учётной записи и пароль Windows.
После этого диск Windows должен появиться на устройстве iOS.