2012-05-21 29 views
17

Jestem zainteresowany implementacją AirDrop jako klienta na urządzeniu takim jak iPad lub komputer z systemem Windows. Czy ktoś może wskazać mi właściwy kierunek implementacji protokołu AirDrop w Pythonie lub C. Każda pomoc w tym zakresie byłaby bardzo doceniana. Z góry dziękuję.Implementowanie protokołu AirDrop

+0

Powiązane: http://stackoverflow.com/questions/5220136/how-the-new-mac-os-air-workwork –

Odpowiedz

43

Z korzyścią dla Ciebie lub kogokolwiek, kto będzie próbował odwrócić inżynier i wdrożenie zrzut, oto co znalazłem i co trzeba zrobić, aby zacząć:

Istnieją dwa etapy i mogą zrobić samodzielnie lub równolegle.

  1. inżynierii wstecznej sposób sieć ad-hoc fizyczny WLAN jest stworzony i nazwany

Aby to zrobić, dostać iStumbler stąd http://istumbler.net/ i spróbować sprawdzić, czy dodatkowa sieć ad-hoc zjawia kiedy zrzut jest uruchomiony. Próbowałem krótko i wydaje się, że istnieje niezaszyfrowana sieć ad-hoc 802.11b, której nazwa zaczyna się od litery "H". (Ale mogę się mylić, spróbuj sam.) Spróbuj znaleźć wzór używany przez Airdrop, aby nazwać lub zidentyfikować sieć. Spróbuj z wielu komputerów Mac, aby to znaleźć.

  1. inżynierii wstecznej protokoły

Gdy klienci dołączyło do sieci WiFi, zrzut wykryje innych klientów za pomocą Bonjour.

Po pierwsze, jak to opisano w http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/, uruchomić to w terminalu dostać rzeczy pracujących bez ukrytą sieć ad-hoc:

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

Następnie ponownie Finder .

Pobierz przeglądarkę Bonjour stąd: tildesoft.com

Uruchamiając zrzut okaże się, że Twój Mac reklamuje usługę „_airdrop._tcp”. Publikuje również różne adresy IP hosta i portu (nowy jest tworzony za każdym razem, gdy Airdrop jest otwierany w Finderze), którego mac słucha. Publikuje również nazwę komputera oraz dwa klucze "ehash" i "phash" oraz jeden klucz "flags" o wartości 1. Musiałbyś sprawdzić, jak te dwa skróty są generowane i czy są wymagane . Prawdopodobnie tak. Spróbuj opublikować własne dane na drugim komputerze, korzystając z jednej z dostępnych bibliotek Bonjour i sprawdź, czy pojawiają się w Airdrop (w Finderze).

Znalazłem, że usługa TCP ujawniona przez każdego klienta używa połączenia SSL. Wydaje się, że certyfikat serwera jest powiązany z Twoim Apple ID. Certyfikat można znaleźć w pęku kluczy. Certyfikat serwera jest również wymagany przez serwer. Jest to prawdopodobnie ten sam certyfikat Apple ID z innego komputera. Będziesz musiał eksperymentować z tym.

Nie wiem, jaki protokół jest używany w tym połączeniu SSL i nie mam dostępu do drugiego komputera Mac, aby zbadać w tej chwili. Będziesz musiał nawiązać połączenie MITM, aby się dowiedzieć (spróbuj Charles i Wireshark). W każdym przypadku będzie on używany do przesyłania ikony użytkownika, a także do negocjowania przelewu i ewentualnie do przenoszenia rzeczywistych danych.

Wydaje mi się, że otwarta implementacja tego będzie bardzo przydatna, nawet jeśli ostatecznie okaże się, że będzie ograniczona do użytkowników z identyfikatorem Apple ID - w końcu są wolni.

Powodzenia!

+0

Dziękuję bardzo. Świetne wskazówki, aby zacząć. Dotarłem do monitoringu z Bonjour Browser, ale po tym zrezygnowałem. – petschekr

+0

Dziękuję za pomocną odpowiedź, jestem również zainteresowany tym –