Pull to refresh

Автоматическое копирование файлов на iOS устроство без Jailbreak и файловых менеджеров

Reading time3 min
Views5.4K
Попался мне один проект, по своей сути ничего сверхъестественного — самая обычная галлерея картинок, для которой данные подгружались с сервера, но тем не менее он был достаточно интересен. Прежде всего нужно было учитывать, что те изображения, которые отображаются в галлерее, ни в коем случае не должны попасть к третьим лицам, так как это приложение специально создавалось для олигархов сильных мира сего. Согласно всем предъявленным требованиям, общение с сервером должно происходить по протоколу SSL и в процессе каждого запроса необходимо проверять сертификат, полученный от сервера на доверенность, и только после этой проверки отправлять необходимый сертификат для валидации пользователя на каждый конкретный запрос. Т.е., не все запросы используют один и тот же сертификат, а значит на девайс нужно перенести некоторое количество сертификатов, которое зависит от клиента и его регистрации.

Перед нами стал вопрос: каким образом можно перенести необходимые сертификаты на устройство. В самом начале рассматривались способы копирования файлов в самом iTunes используя File Sharing, загрузка сертификатов в Keychain через Wi-Fi, отправка сертификатов по элекронной почте и т.п. Но все они не подходили по нескольким требованиям:

1. Нельзя использовать беспроводные сети, исходя из концепции безопасности, только проводное соединение.
2. Пользователь не должен принимать участия в переносе файлов.
3. Использовать системный Keychain запрещено.
4. Все должно происходить более-менее незаметно

После всех исследований и обсуждений был найден способ, который отвечал всем требованиям. Он использовался в реализации нескольких браузеров файловой системы для iPhone/iPad (iPhone Explorer, iDisk, iPhone Browser), но подход был непонятен. После очередного забега по нашему любимому гуглу и долгих размышлений стало понятно, что все эти браузеры используют iTunes в своей работе и это происходит через приватный фреймворк MobileDevice.framework. Для того чтобы с ним работать, был добыт файл MobileDevice.h, который был сформирован добрыми людьми через реверс инжиниринг. И тут началась магия…

Исследовав все функции этого .h файла, мы поняли его назначение и приблизительную модель работы с девайсом. Через некоторое время удалось заполучить и m. файл реализации некоторой части этих функций. И после необходимых изменений под наши нужды имеем такой функционал:

1. Поиск приложения по его идентификатору (необходим приложению для определения местоположения приложения и его директорий).
2. Отображение списка всех установленных приложений.
3. Просмотр списка директорий.
4. Просмотр содержания директорий.
5. Копирование файлов с/на устройство.
6. Определение подключено/отключено устройство.
7. Просмотр папки Media и все вложенных в нее папок и фалов, и некоторые другие.

Стоит добавить, что все эти функции доступны без Jailbreak. Это очень важно, так как для конечного потребителя это было бы очень неудобно, а иногда даже и нереально, разобраться во взломе устройства и его подключении через SSH или SFTP и в самостоятельном копировании файлов. Тем более разрабатываемой программой должны пользоваться не совсем рядовые граждане.

Дабы использовать данную библиотеку было написано приложение с коммандной строкой для Mac OS, так как эта система будет чаще всего использоваться у клиента. Во входящих параметрах приложения, для простоты и удобства, указываются идентификатор приложения, исходный путь файла и путь, куда необходимо его скопировать. Так как в приложении на самом устройстве удобно использовать файлы из папки /Documents, то чаще всего она и указывается как конечная директория для файла.

Поскольку приводить реализацию всех функций и решений неудобно и займет много кода, так как написанная библиотека не маленькая, данное консольное приложение было выложено для всех желающих для проб и использования в своих проектах на GitHub: github.com/xslim/mobileDeviceManager

Всем приятной работы, интерестных проектов, и чтобы требования всегда совпадали с вашими возможностями!

PS Всем спасибо, поправил опечатки. Топик писался после рабочего дня, вот откуда ошибочки.
Tags:
Hubs:
+43
Comments43

Articles

Change theme settings