在过去,我编写了 C++ 插件,绕过 Winsock 中的 recvfrom() 函数并丢弃/操纵来自主应用程序的传入流量。
我现在希望编写一个独立的应用程序来监听所有接口(interface),读取传入的 UDP 数据包,并在数据包结构与用于攻击我们的已知漏洞利用的结构相匹配时丢弃它们。
执行此操作的最佳方法是什么?这将在 Windows Server 2008 计算机上使用,这些计算机具有分配给 NIC 的大量静态 IPv4 地址。我正在考虑绕过 Winsock,但由于这不是一个功能丰富的应用程序,所以无论哪种最简单的实现方法都很好。
注意 我开始使用 Pcap.Net 实现这个,但意识到我不能那样丢弃数据包,所以我不太确定如何处理这个问题。
最佳答案
这在 C# 中可能不是最简单的任务,因为过滤网络可能会将您绑定(bind)到使用 OS 内核运行的低级代码。
还有some APIs在 Windows Server 2008 中设置您的自定义数据包过滤器。
虽然可能可以在 p/invoke 中包装,但我建议使用 C++ 和 native 代码。
您可能感兴趣的额外阅读在 here on codeproject 上.
关于c++ - 在 C#/C++ 中创建数据包过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555540/