用C#/ C ++创建包过滤器?

时间:2012-03-04 14:11:00

标签: c++ c#-4.0 windows-server-2008-r2 packet-capture windows-firewall

在过去,我编写了C ++插件,它绕开了Winsock中的recvfrom()函数,并从主应用程序中删除/操纵了传入流量。

我现在希望编写一个独立的应用程序,该应用程序侦听所有接口,读取传入的UDP数据包,如果数据包结构与用于定位我们的已知漏洞利用匹配,则删除它们。

最好的方法是什么?这将用于Windows Server 2008计算机,这些计算机具有分配给NIC的大量静态IPv4地址。我正在考虑绕开Winsock,但由于这不是一个功能丰富的应用程序,所以实现这一点的最简单的方法是很棒的。

注意我开始使用Pcap.Net实现这个,但意识到我不能以这种方式丢弃数据包,所以我不确定如何处理这个。

2 个答案:

答案 0 :(得分:3)

它可能不是C#中最简单的任务,因为过滤网络可能会将您绑定到使用OS内核运行的低级代码。

Windows Server 2008中还有some APIs用于设置自定义数据包筛选器。

虽然可能在p / invoke中可以包装,但我建议使用C ++和本机代码。

您可能感兴趣的其他阅读材料是here on codeproject

答案 1 :(得分:0)

您想使用EasyHook。如果你说它只是一个你需要担心的主要应用程序,你可以创建一个挂钩send()和receive()的简单用户模式钩子。您可以看看oSpy是如何做到的(尽管oSpy的项目非常庞大)。 EasyHook使挂钩很容易。