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

17

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

    
задан petschekr 22.05.2012 в 00:17
источник
  • Связанный: stackoverflow.com/questions/5220136/... –  Dan D. 22.05.2012 в 00:53

1 ответ

44

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

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

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

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

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

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

Сначала, как описано в ссылке , запустите это в ваш терминал будет работать с без скрытой сети 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 - они все-таки свободны.

Удачи!

    
ответ дан jroith 03.08.2012 в 13:23
  • Большое спасибо. Отличные советы для начала. Я дошел до мониторинга с Bonjour Browser, но сдался после этого. –  petschekr 03.08.2012 в 17:15
  • Спасибо за полезный ответ, меня тоже интересует –  ดาว 11.06.2016 в 21:43