嗅探iPhone和Mac之间的bonjour流量

时间:2011-12-29 08:50:21

标签: iphone plist bonjour packet-sniffers tcpdump

我最终的结果是试着看到我的iPhone和iPad之间发送的plist。我的mac(我知道它是一个plist,因为我可以在hexdump中看到bplist00。)

我有一个应用程序通过bonjour服务在我的iPhone和Mac之间发送数据。

我使用tcpdump捕获流量并尝试将有效负载hexdump转换为二进制,然后将其转换为plist文本文件。

以下是我的步骤:

  1. 确保已连接iphone和mac,准备好发送命令
  2. 在我的无线网络上运行tcp dump:sudo tcpdump -vSs 0 -A -i en1 -w Dump.pcap 'tcp port 57097'(我使用Bonjour Browser查找服务注册的端口),然后点击手机上的send命令。
  3. 将pcap文件转换为文本文件:tshark -V -r Dump.pcap > Dump.txtend result is this
  4. 手动删除文本文件中的标题和其他信息,以便我只留下有效负载(我们现在have this在文件中)
  5. 执行反向十六进制转储以将文件转换为二进制文件:xxd -r Dump.txt Dump1.txt
  6. 将二进制plist转换为文本文件:plutil -convert xml1 Dump1.txt
  7. 然而,在第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上的错误?

    这种低级别的网络捕获并不是我通常所说的(我通常更喜欢小提琴或查尔斯,但考虑到这不是通过HTTP我需要降低堆栈)。

    有人可以告诉我,我在做什么是正确的,或者是否有更简单的方法来做到这一点?

    如何捕捉被发送到我的mac的plist?

1 个答案:

答案 0 :(得分:0)

我的猜测是您的问题在第4步附近,您手动编辑请求。我只是尝试类似的东西,使用Charles而不是tcpdump,并且使用我知道包含plist的有效负载得到完全相同的错误。不确定为什么我们收到JSON错误消息。

我能够通过直接将Charles的二进制编码的plist请求体保存到文件中来解决它(Charles有一个" Save Request"菜单选项),然后在其上运行plutil -convert xml1 FILENAME -o - ,它工作得很好。