2011-12-29 71 views
1

我的最終結果是嘗試看到我的iphone(我知道它是一個plist,因爲我可以在hexdump中看到bplist00)在我的iphone &之間發送的plist。嗅探iPhone和Mac之間的bonjour流量

我有一個應用程序通過bonjour服務在我的iphone和我的mac之間發送數據。

我使用tcpdump捕獲流量並嘗試將負載hexdump轉換爲二進制文件,然後將其轉換爲plist文本文件。

這裏是我的步驟:

  1. 確保iPhone和Mac連接,有命令準備好發送
  2. 運行TCP轉儲:sudo tcpdump -vSs 0 -A -i en1 -w Dump.pcap 'tcp port 57097'我的無線網絡上(我用Bonjour Browser找到哪個端口該服務已註冊),然後點擊電話上的發送命令。
  3. 的PCAP文件轉換爲文本文件:tshark -V -r Dump.pcap > Dump.txt(在end result is this
  4. 手動刪除從文本文件的標題和其他信息。這樣,我剛剛離開與有效載荷(我們現在have this文件中)
  5. 做一個反向的十六進制轉儲文件轉換成二進制:xxd -r Dump.txt Dump1.txt
  6. 轉換二進制的plist到一個文本文件:plutil -convert xml1 Dump1.txt

然而,在第6步,事情會失敗:Dump1.txt: Property List error: Conversion of string failed. The string is empty./JSON error: JSON text did not start with array or object and option to allow fragments not set.(雖然它ç應該是前一步的錯誤)。我不確定爲什麼當我要求進行XML轉換時,它爲什麼會報告JSON錯誤?

這種低級別的網絡捕獲並不是我通常所說的(我通常比較喜歡fiddler或charles,但考慮到這不是通過HTTP,我需要降低堆棧)。

有人可以告訴我,如果我做的是正確的,或者是否有更簡單的方法來做到這一點?

我該如何去捕獲發送給我的Mac的plist?

回答

0

我的猜測是你的問題是在第4步的地方,你手動編輯請求。我只是在嘗試類似的東西,使用Charles而不是tcpdump,並且得到了與我知道包含plist的有效載荷完全相同的錯誤。不知道爲什麼我們收到JSON錯誤消息。

我能夠通過直接將查爾斯的二進制編碼的plist請求體保存到一個文件(查爾斯有一個「保存請求」菜單選項),然後在其上運行plutil -convert xml1 FILENAME -o -來解決它,它工作得很好。