Windows网络数据包修改

jay*_*lee 4 c c++ networking packet

我正在寻找编写一个小程序,该程序将拦截网络数据包(在本地计算机上)并在它们出入网络之前对其进行修改。我还需要能够修改标题,而不仅仅是数据。

我已经研究过几种可能性,但不确定哪种是最佳选择。那里有开源的数据包过滤器,但是过滤似乎只能允许或拒绝数据包,而没有其他功能。

另一个解决方案是编写NDIS中间驱动程序,但是编写驱动程序超出了我的范围。甚至WinDDK中简单的直通示例也有数千行。我也不希望经常重新安装驱动程序并重新启动以测试我的代码。

理想情况下,我希望该程序自成一体,而不依赖于第三方驱动程序/软件/其他程序的安装。

因此,如果您能向我指出正确的方向,请以我的方式抛出一些有用的链接,无论如何,我将不胜感激。

Dmi*_*try 5

取决于要过滤/修改的数据包类型。

如果您正在进行应用程序级过滤,并且想要使用HTTP或类似数据包,则最好的选择可能是LSP。但是请注意,遵循此路径具有某些缺点。首先,MS似乎正试图摆脱这种技术,而IIRC Windows 7徽标要求的一部分是“您的产品中没有LSP”,他们似乎正在推广Windows过滤平台。其次,对于第3方LSP兼容性方面遇到的麻烦,您会感到非常惊讶。第三,非常虚假的LSP仍在2 KLOC左右:)

如果您要进行IP级数据包过滤,则需要购买驱动程序。

Windows筛选平台为您提供两种情况下所需的功能。但是,它仅在Windows Vista和更高版本的产品上可用,因此那里没有XP。要考虑的另一件事是,WFP仅能够在用户域中允许/拒绝数据包,并且,如果您需要对其进行修改,则需要进入内核模式。(至少情况看起来是这样,也许他们现在已经有所改善了)。