我的最终结果是尝试查看在我的 iphone 和我的 mac 之间发送的 plist(我知道它是一个 plist,因为我可以bplist00
在 hexdump 中看到)。
我有一个应用程序通过 bonjour 服务在我的 iphone 和我的 mac 之间发送数据。
我使用 tcpdump 捕获流量并尝试将有效负载 hexdump 转换为二进制,然后将其转换为 plist 文本文件。
这是我的步骤:
- 确保 iphone 和 mac 已连接,准备好发送命令
- 运行 tcp dump:
sudo tcpdump -vSs 0 -A -i en1 -w Dump.pcap 'tcp port 57097'
在我的无线网络上(我使用Bonjour 浏览器查找服务注册的端口),然后点击手机上的发送命令。 - 将 pcap 文件转换为文本文件:(
tshark -V -r Dump.pcap > Dump.txt
最终结果是这样的) - 从文本文件中手动删除标题和其他信息,这样我就只剩下有效负载了(我们现在在文件中有这个)
- 执行反向十六进制转储以将文件转换为二进制文件:
xxd -r Dump.txt Dump1.txt
- 将二进制 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?