MacOS上的用户应用程序可以接收原始以太网数据包吗?



MacOS上的用户应用程序可以接收原始以太网数据包吗?我有一个硬件,该硬件使用其自己的自定义以太网协议,并且已定义了它自己的以太类型。无论如何,我是否可以创建一个发送/接收这些数据包的用户应用程序?Mac OS不支持AF_PACKET。我相信伯克利数据包过滤器需要访问根。还有其他选项吗?

安装libpcap库-https://formulae.brew.sh/formula/libpcap然后,您可以嗅探和/或注入任意数据包。

MacOS上的用户应用程序可以接收原始以太网数据包吗?

是。参见,例如/usr/sbin/tcpdump。

我相信伯克利数据包过滤器需要访问根。

是的,默认情况下;这就是"启动守护程序",该守护程序可以调整系统启动时的捕获权限。由Wireshark提供(基于LibPCAP源分布中的内容( - 它使BPF设备由组可读取且可写作,因此,如果您的代码与该组作为其组中的一个组之一,则可以读取(它可以读取(捕获(和在BPF设备上写入(发送(。

还有其他选项吗?

PF_NDRV插座可能有效。例如,请参阅MACOS/iOS/等的本章。内部书籍和此堆叠的答案。

安装libpcap库

请注意,libpcap作为MACOS的一部分发货,并且标头作为MacOS SDK的一部分发货,因此,在MacOS上,您可以在MacOS上构建可以使用它的程序而无需安装Xcode(或Xcode命令行工具(以外的任何其他内容(,就像您在Linux上一样,构建使用LIBPCAP的程序,而无需安装编译器和您的发行版的libpcap&quot&quot"开发人员软件包",并且您可以在 *bsd上构建它,而无需安装安装程序以外的任何内容说您需要开发软件(默认情况下它甚至可能安装编译器/链接器和适当的标题(。

最新更新