gpt4 book ai didi

macos - Cocoa 监控端口上的数据包

转载 作者:行者123 更新时间:2023-12-03 16:32:32 26 4
gpt4 key购买 nike

我想监视 Mac OS X 中特定端口上的数据包。能够读取其内容,有时还可以更改其内容(如果可能)。我想知道是否可以通过编写 KEXT 来实现,或者我可以在应用程序中执行此操作并立即显示结果。我将不胜感激有关我可以用来实现这一目标的库和方法的任何信息。

最佳答案

“监控数据包”有何意义?

如果您的意思是“监视发送到特定 TCP 或 UDP 端口的数据包或从特定 TCP 或 UDP 端口发送的数据包”或“在特定网络接口(interface)上发送或接收的数据包”,则可以使用 pcap library ,就像在其他 UN*X 上一样。 libpcap/WinPcap 是 Wireshark 和 tcpdump 使用的库;在 OS X 上,它使用的底层内核机制是 BPF(伯克利数据包过滤器),它内置于 XNU 中(它是开源的 - 请参阅 XNU 源代码中的 bsd/net/bpf.cbsd/net/bpf_filter.c 文件以及它们包含的头文件)并且不需要 kext。 (Wireshark 没有自己的 kext;它使用 libpcap/WinPcap,因此它可以在 Linux 和 OS X、*BSD、Solaris、HP-UX、AIX、Tru64 UNIX 和 IRIX 等上运行,也可以在 Windows 上运行(如果WinPcap 已安装,因此,在 OS X 和 *BSD 上,它最终使用 BPF。)

除了 Linux 之外,Libpcap/WinPcap 不允许您使用一个“句柄”捕获所有接口(interface);您必须使用 pcap_findalldevs() 来查找所有当前可用的接口(interface),然后为每个接口(interface)打开单独的句柄。如果“端口”指的是“网络端口”,那么一个“端口”是以太网端口,另一个是 Wi-Fi 适配器,则必须单独打开要捕获的所有“端口”。

如果“端口”指的是 TCP 或 UDP 端口,并且您只想监视进出特定端口的流量,则必须指定“过滤器”表达式,将其转换为 pcap_compile() 的“BPF 代码”,然后使用 pcap_setfilter() 使其成为特定 libpcap/WinPcap 句柄的过滤器。

如果你想使用 Cocoa 包装器进行 pcap,我不久前进行的 Google 搜索发现了 packetsnifferCapKit ;我没有使用过其中任何一个,因此我无法推荐其中之一。

关于macos - Cocoa 监控端口上的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com