为传入连接编写过滤器

时间:2010-01-08 08:55:39

标签: c++ windows tcp boost-asio

我在Win7下使用C ++ / boost :: asio。

我试图在给定的TCP / IP端口上“嗅探”交通。因此,我想听那个端口,接收消息,分析它们,但也要让它们进一步流动,好像我从未拦截过它们。我希望它们沉入通常在该端口上侦听和连接的程序中。想象一下透明代理,但不适用于HTTP。

我宁愿找到一个基于代码的解决方案,但除此之外,也许你会推荐一个工具?

2 个答案:

答案 0 :(得分:1)

您要做的事情基本上是防火墙程序。

在Windows上有几种方法可以做到这一点,你可以挂钩winsock。更好(或不是hacky)是使用TDI过滤器(你看一下this)或制作一个NDIS filter

Microsoft还推出了新的API,WPFLSP。我认为你最好使用它,因为TDI过滤器和NDIS包装器涉及复杂且耗时的驱动程序编程。

答案 1 :(得分:1)

如果这是针对您正在开发的产品,您可能需要查看可以嵌入到您自己的程序中的WinPcap库http://www.winpcap.org/

如果你只是需要自己分析,使用其中一个使用WinPcap的工具,我在WireShark上取得了很大的成功;但请查看WinPcap网站以获取其他工具

您不能使用boost::asio(或任何其他基于套接字的库),因为它会消耗所有流量。