嗅探iPhone和Mac之间的bonjour流量



我的最终结果是尝试查看在我的iphone &我的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浏览器查找服务注册的端口),然后在手机上点击发送命令。
  3. 将pcap文件转换为文本文件:tshark -V -r Dump.pcap > Dump.txt(最终结果是这样)
  4. 手动从文本文件中删除标题和其他信息,这样我就只剩下有效载荷(我们现在在文件中有这个)
  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的列表?

我猜您的问题是在步骤4左右,您手动编辑请求的地方。我只是尝试了一些类似的东西,使用Charles而不是tcpdump,并且在我知道包含plist的有效负载上得到了完全相同的错误。不知道为什么我们得到JSON错误消息。

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

最新更新