Как получить значение дескриптора фильтра сокета (sflt_filter.sf_handle) с сайта Apple для регистрации фильтрации пакетов

Я пытаюсь получить ключ дескриптора для сокета-фильтра для регистрации фильтрации пакетов. Я уже зарегистрировал его для пакетов TCP, теперь я хочу зарегистрировать его для пакетов UDP. Этот ключ дескриптора должен быть уникальным среди других приложений.

sflt_filter.sf_handle = 0xAACAF333;

Я получил его раньше, около 2 лет назад, по ссылке ( http://developer.apple.com/datatype/), но теперь он перенаправлен на другую ссылку.

Я прочитал ссылку, в которой говорится, что коды создателей игнорируются в 10.6 и выше. Но для реализации kext для фильтрации пакетов нам нужно, чтобы этот код был уникальным.

Кто-нибудь знает, как получить уникальный ключ? ИЛИ Не требуется получить уникальный ключ? ИЛИ их другой способ использовать ручку сейчас?

Заранее спасибо.

1 ответ

Я знаю, что вопрос очень устарел, но я столкнулся с той же проблемой, и только для следующего, который тоже будет:

теперь вы можете зарегистрироваться и получить уникальный дескриптор для фильтра, вызывающего функцию kev_vendor_code_find из sys/kern_event.h, передавая идентификатор пакета и указатель на переменную uint32.

После этого в пользовательском пространстве вы можете получить этот дескриптор с помощью SIOCGKEVVENDOR ioctl, передав указатель на структуру kev_vendor_code с тем же идентификатором пакета в поле vendor_string.

Вы не должны делать никаких вещей, чтобы "отменить регистрацию" этого дескриптора (но вы должны отменить регистрацию фильтра с этим дескриптором в driver::stop())

Другие вопросы по тегам