OpenDrop -это инструмент командной строки, который позволяет обмен файлами между устройствами непосредственно через Wi-Fi. Его уникальная особенность заключается в том, что он совместим с протоколом с Apple AirDrop, который позволяет делиться файлами с устройствами Apple, работающих в iOS и MacOS. В настоящее время (и, вероятно, также для обозримого будущего), OpenDrop поддерживает только отправку на устройства Apple, которые можно обнаружить всеми , поскольку режим только для контактов по умолчанию требует сертификатов, подписанных Apple. Мы поддерживаем устройства только для контактов, используя извлеченные учетные данные Airdrop (ключи и сертификаты) из MacOS через наш экстрактор для ключей.
OpenDrop является экспериментальным программным обеспечением и является результатом усилий по обратной инженерии от Open Wireless Link Project. Следовательно, он не поддерживает все функции AirDrop или может быть несовместимы с будущими версиями AirDrop. OpenDrop не связан или одобрен или одобрен Apple Inc. Используйте этот код на свой страх и риск.
Для достижения совместимости с Apple Airdrop Opendrop требует, чтобы целевая платформа поддерживала конкретный уровень канала Wi-Fi. Кроме того, это требует Python> = 3,6, а также несколько библиотек.
Apple Wireless Direct Link. Поскольку AirDrop работает исключительно по Apple Wireless Direct Link (AWDL), OpenDrop поддерживается только в MacOS или в системах Linux с открытым повторным внедрением AWDL, такой как OWL.
Библиотеки. Opendrop полагается на текущую версию Libarchive. MacOS поставляется с довольно старой версией, поэтому вам нужно будет установить более новую версию, например, через Homebrew:
brew install libarchive
OpenDrop автоматически устанавливает DYLD_LIBRARY_PATH
для поиска домашней версии. Возможно, вам потребуется обновить переменную самостоятельно, если вы установите библиотеки по -разному.
Распределения Linux должны поставляться с более современными версиями, так что это не потребуется.
Установка выпуска пакета Python проста с помощью pip3
:
pip3 install opendrop
Вы также можете установить текущую версию разработки, сначала клонируя этот репозиторий, а затем установив ее через pip3
:
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
Мы кратко объясняем, как отправлять и получать файлы с помощью opendrop
. Чтобы увидеть все параметры командной строки, запустите opendrop -h
.
Отправка файла обычно является двухэтапной процедурой. Сначала вы обнаруживаете устройства в непосредственной близости, используя команду find
. Остановите процесс, как только вы нашли приемник.
$ opendrop find
Looking for receivers. Press Ctrl+C to stop ...
Found index 0 ID eccb2f2dcfe7 name John’s iPhone
Found index 1 ID e63138ac6ba8 name Jane’s MacBook Pro
Затем вы можете send
файл (или ссылку, см. Ниже), используя
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
Вместо index
вы также можете использовать ID
или name
. OpenDrop попытается интерпретировать ввод в index
порядка (1), (2) ID
и (3) name
и сбой, если совпадение не было найдено.
Отправка веб -ссылки. С момента v0.13 Opendrop поддерживает отправку веб -ссылок, т.е. URL, так что получение устройств Apple немедленно откроет свой браузер при принятии. (Обратите внимание, что приемники OpenDrop по -прежнему поддерживают только получение обычных файлов.)
$ opendrop send -r 0 -f https://owlink.org --url
Получение намного проще. Просто используйте команду receive
. OpendRop будет принимать все входящие файлы автоматически и размещать полученные файлы в текущий каталог.
$ opendrop receive
OpenDrop является результатом исследовательского проекта и, таким образом, имеет несколько ограничений (неэкгастичный список ниже). У меня нет возможности самостоятельно работать над ними, но я рад оказать помощь, если кто -то хочет взять их на себя.
Запуск приемников macOS/iOS через низкую энергию Bluetooth. Устройства Apple запускают свой интерфейс AWDL и Airdrop Server только после получения пользовательской рекламы через Bluetooth LE (подробности см. Usenix Paper). Это означает, что Apple Airdrop -приемники не могут быть обнаружены, даже если они обнаруживаются всеми .
Аутентификация и состояние подключения отправителя/получателя. В настоящее время не существует аутентификации со стороны сверстников, как в Apple Airdrop, в частности, (1) OpenDrop не проверяет, что сертификат TLS подписан корнем Apple и (2), что запись проверки идентификатора Apple является правильной (см. Документ Usenix для получения подробной информации) Полем Кроме того, OpenDrop автоматически принимает любой файл, который он получает из -за отсутствующего состояния соединения.
Отправка нескольких файлов. Apple Airdrop поддерживает отправку нескольких файлов одновременно, OpenDrop не может (потребует добавления большего количества файлов в архив, изменять запрос HTTP /ASK и т. Д.).
Opendrop лицензирован в соответствии с общей публичной лицензией GNU V3.0 .