如何从apple站点获取套接字过滤器句柄(sflt_filter.sf_handle)的值以注册数据包过滤

hkb*_*dev 5 c macos kernel udp kernel-extension

我正在尝试获取套接字过滤器的句柄密钥以注册数据包过滤.我已经注册了TCP数据包,现在我想将其注册为UDP数据包.此句柄键需要与其他应用程序不同.

sflt_filter.sf_handle = 0xAACAF333;
Run Code Online (Sandbox Code Playgroud)

我在大约2年前使用链接(http://developer.apple.com/datatype/)获得了它,但它现在被重定向到不同的链接.

我已经阅读了它说的创建者代码被10.6及以上忽略的链接.但是为了实现用于数据包过滤的kext,我们需要该代码是唯一的.

有没有人知道如何获得唯一密钥?或者不需要获取唯一密钥?或者他们现在使用手柄的方式不同了吗?

提前致谢.

Art*_*iev 1

我知道这个问题已经过时了,但我也遇到了同样的问题,并且只是为了下一个也会遇到的问题:

现在您可以注册并获取过滤器的唯一句柄,从 sys/kern_event.h 调用 kev_vendor_code_find 函数,传递包 ID 和指向 uint32 变量的指针。

之后,在用户空间中,您可以通过 SIOCGKEVVENDOR ioctl 获取此句柄,将指针传递给 kev_vendor_code 结构,在vendor_string 字段中具有相同的包 id。

您不应该执行任何操作来“取消注册”此句柄(但您应该在 driver::stop() 中使用此句柄取消注册过滤器)