Я заинтересован в том, чтобы внедрять AirDrop в качестве клиента на устройстве, таком как iPad или Windows. Может ли кто-нибудь указать мне в правильном направлении для реализации протокола AirDrop в Python или C. Любая помощь по этому поводу будет очень признательна. Спасибо заранее.
Внедрение протокола AirDrop
Ответ 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 - они все-таки свободны.
Удачи!