Подтвердить что ты не робот

Внедрение протокола AirDrop

Я заинтересован в том, чтобы внедрять AirDrop в качестве клиента на устройстве, таком как iPad или Windows. Может ли кто-нибудь указать мне в правильном направлении для реализации протокола AirDrop в Python или C. Любая помощь по этому поводу будет очень признательна. Спасибо заранее.

4b9b3361

Ответ 1

В интересах вас или любого, кто попытается перепроектировать и внедрить Airdrop, вот что я нашел и что вам нужно сделать, чтобы начать:

Есть два этапа, и они могут выполняться независимо или параллельно.

  • Обратное проектирование способа создания физической сети WLAN ad-hoc и имени

Чтобы сделать это, откройте здесь iStumbler http://istumbler.net/ и попробуйте посмотреть, появляется ли дополнительная ad-hoc сеть при запуске airdrop. Я кратко попробовал, и, похоже, есть незашифрованная, ad-hoc сеть 802.11b, ее название начинается с "H". (Но я могу ошибаться, попробуйте сами.) Попробуйте найти шаблон, используемый Airdrop для обозначения или идентификации сети. Попробуйте использовать несколько компьютеров Mac, чтобы найти это.

  • Обратный-инженер протоколов

Как только клиенты присоединились к сети WiFi, Airdrop обнаружит других клиентов, использующих Bonjour.

Сначала, как описано в http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/, запустите это в своем терминале, чтобы заставить все работать без скрытой сети ad-hoc:

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

Затем перезапустите Finder.

Получить Bonjour Browser отсюда: tildesoft.com

При запуске Airdrop вы обнаружите, что ваш mac рекламирует услугу "_airdrop._tcp". Он также публикует различные IP-адреса хоста и порта (новый создается каждый раз, когда Airdrop открывается в Finder), который ваш Mac прослушивает. Он также публикует имя компьютера, а также два ключа "ehash" и "phash" и один ключ "флаги", который имеет значение 1. Вам нужно будет посмотреть, как генерируются эти два хэша, и если они требуются, Наверное, они есть. Попробуйте опубликовать свои собственные данные на втором компьютере, используя одну из доступных библиотек Bonjour, и посмотрите, отображаются ли они в Airdrop (в Finder).

Я обнаружил, что служба TCP, предоставляемая каждым клиентом, использует SSL-соединение. Кажется, что сертификат сервера связан с вашим Apple ID. Вы можете найти сертификат в Keychain. Сервер также запрашивает сертификат клиента. Вероятно, это тот же сертификат Apple ID с другого компьютера. Вам придется поэкспериментировать с этим.

Я не знаю, какой протокол используется внутри этого SSL-соединения, и у меня нет доступа ко второму Mac для расследования в настоящее время. Вам нужно ПОМНИТЬ соединение, чтобы узнать (попробуйте Чарльз и Вирешарк). В любом случае он будет использоваться для передачи значка пользователя, а также для согласования передачи и, возможно, для перемещения фактических данных.

Я думаю, что открытая реализация этого будет очень полезной, даже если она окажется в конечном итоге ограничена пользователями с Apple ID - они все-таки свободны.

Удачи!