2012-05-21 85 views
17

我有意將AirDrop作爲iPad或Windows計算機等設備上的客戶端來實施。任何人都可以用正確的方向指出我是用Python還是C來實現AirDrop協議。任何幫助都將不勝感激。提前致謝。實施AirDrop協議

+0

相關:http://stackoverflow.com/questions/5220136/how-the-new-mac-os-airdrop-works –

回答

43

對於你或任何人的利益誰將會嘗試逆向工程和實施空投,這裏是我發現,你將不得不做上手什麼:

有兩個步驟涉及到,他們可以獨立或並行完成。

  1. 反向工程物理WLAN ad-hoc網絡的創建和命名

要做到這一點,從這裏http://istumbler.net/得到iStumbler和嘗試看看是否有其他ad-hoc網絡顯示出來的方式當空投運行時。我已經簡單地嘗試過了,似乎有一個未加密的特別802.11b網絡,它的名字以「H」開頭。 (但是我可能錯了,自己試試。)嘗試找到Airdrop用來命名或識別網絡的模式。嘗試從多個Mac上找到這個。

  1. 逆向工程的協議

一旦客戶機都加入了WiFi網絡,空投會使用Bonjour檢測到其他客戶端。

首先,如在http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/描述,在終端得到的東西的工作運行此不隱藏的ad-hoc網絡:

默認寫com.apple.NetworkBrowser BrowseAllInterfaces 1

然後重啓搜索。

獲取從這裏卓悅瀏覽器:tildesoft.com

當開始空投,你會發現,你的MAC通告服務「_airdrop._tcp」。它還會發布主機和端口的各種IP地址(每次在Finder中打開Airdrop時都會創建一個新IP地址),以便您的Mac正在監聽。它還會發布計算機的名稱以及兩個鍵「ehash」和「phash」以及一個值爲1的鍵「標誌」。您將不得不查看這兩個哈希如何生成以及是否需要。可能它們是。嘗試使用可用的Bonjour庫之一在第二臺計算機上發佈自己的數據,並查看它們是否顯示在Airdrop(Finder中)中。

我已經發現,通過每個客戶端露出的TCP服務使用SSL連接。服務器證書似乎與您的Apple ID相關聯。您可以在鑰匙串中找到證書。客戶端證書也被服務器請求。這可能與其他計算機的Apple ID證書相同。你將不得不嘗試這個。

我不知道是做什麼用的協議,SSL連接內,沒有進入到第二Mac:目前調查。你將不得不MITM的連接找出(嘗試查爾斯和Wireshark)。在任何情況下,它都將用於傳輸用戶圖標以及協商傳輸並可能移動實際數據。

我認爲,一個開放的實施,這將是有很大好處,即使它會變成最終被限制到用戶使用Apple ID - 它們都是免費的畢竟。

祝你好運!

+0

非常感謝。偉大的提示開始。我儘可能用Bonjour Browser進行監控,但之後放棄。 – petschekr

+0

感謝您的有用答案,我也對此感興趣 –