Многоуровневый поставщик услуг в С#
Я хочу написать LSP в С# для захвата и перенаправления UDP-пакетов.
У меня мало опыта работы с LSP, но я слышал, что они могут делать такие вещи, пожалуйста, поправьте меня, если я ошибаюсь, но возможно ли это?
Мне бы понравился какой-то примерный код, но я возьму любую информацию или совет, которые кто-либо может дать по этой теме.:)
Ответы
Ответ 1
Вы можете просмотреть пример кода (С#) для LSP в https://github.com/SOLON7/HTTPSniffer.
Он используется для 32 ОС Windows, но вы можете легко его переносить на 64 (установите LspCatalog64Only во время установки)
И вы должны помнить, что вам нужно генерировать новый GUID для вашего провайдера в случае коллизий с другими поставщиками LSP.
Ответ 2
посмотрите komodia, есть статья + пример о LSP, к сожалению, на С++.
Но преобразовать его не представляется невозможным.
Ответ 3
Вам нужно создать LSP для этого, а затем получить доступ к нему через P/Invoke. Взгляните на спецификацию WS SPI:
ftp://ftp.microsoft.com/bussys/Winsock/Winsock2/WSSPI22.DOC
Ответ 4
Вы определенно хотите написать свой собственный?
WinPCap отлично справляется с захватом пакетов. SharpPcap делает столь же отличную работу, что позволяет использовать WinPCap с С#. Оба являются бесплатными и, я думаю, с открытым исходным кодом.
(Я не уверен, что WinPCap использует LSP под капотом, но конечным результатом является то, что вы можете проверять пакеты, так что это может быть только то, что вы хотите)