4

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

我已经研究了几种可能性,但不确定哪一种最好。那里有开源数据包过滤器,但过滤似乎只能允许或拒绝数据包,其他的不多。

另一种解决方案是编写 NDIS 中间驱动程序,但编写驱动程序超出了我的范围。即使是 WinDDK 中简单的 pass-thru 示例也是数千行。我也不期待必须不断重新安装驱动程序并重新启动以测试我的代码。

理想情况下,我希望该程序是独立的,而不是依赖于安装第 3 方驱动程序/软件/其他任何东西。

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

4

4 回答 4

5

取决于您要过滤/修改哪种数据包。

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

如果您要进行 IP 级别的数据包过滤,则需要使用驱动程序。

Windows 筛选平台为您提供任何一种情况下所需的功能。但是,它仅适用于 Windows Vista 和更高版本的产品,因此没有 XP。另一件需要考虑的事情是,WFP 只能在用户区允许/拒绝数据包,如果您需要修改它们,则需要进入内核模式。(至少当时的情况是这样,也许他们现在已经改进了一些东西)。

于 2010-01-03T13:49:16.130 回答
2

恕我直言,如果你想修改数据包,你需要一些东西来与硬件对话,某种驱动程序。如果您不想使用自己的,您应该获得一个 3rd 方驱动程序进行互操作。

对于过滤,有如下库:winpcap 或 libpcap。

也看看这里:http ://www.ntkernel.com/w&p.php?id=7

另一个链接:http ://bittwist.sourceforge.net/

希望这可以帮助!

于 2010-01-03T11:22:47.870 回答
2

winpcap 只能过滤具有预编译条件的数据包。您需要的是编写 LSP 级别的网络驱动程序。每次重新安装时都不需要重新启动,但它确实可以在数据包进入网络之前对其进行修改。更多信息在这里:http: //blogs.msdn.com/wndp/archive/2006/02/09/529031.aspx或在这里:http: //www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx

于 2010-01-03T11:26:36.147 回答
2

我不是专家,但我希望在我的局域网上做类似的事情。我想拦截来自一个固定 IP 的数据包并在它们进入我的路由器然后再进入互联网之前对其进行修改。我还想在允许它们通过我的主机之前捕获和修改返回的数据包。我设想的方法是这样的......

  1. ARP 毒害主机和路由器,所以我的嗅探机让所有数据包都通过它。
  2. 分析我将来要修改的数据包,并寻找这些数据包的独特特征,以便我可以捕获它们。
  3. 编写一个宏/脚本,实时查找所述特征,然后在发送之前动态修改它。

我知道适用于 Windows 的 Cain&Abel 能够(哈哈)导致 ARP 中毒,但我不确定它是否可以提供数据包内容的原始转储。Wireshark 能够转储所有但不确定它是否可以 ARP 中毒,以便获得我想要的东西,如果没有,那么我可以轻松地将我想要拦截的主机通过以太网连接到我的嗅探机,然后通过共享互联网嗅探器,以便所有数据包无论如何都会通过嗅探器。

So step 1 can be accomplished, I don't know if said programs have the ability to filter based on specifics yet but I'm guessing they do.

That's as far as I am with it. Hope this is of help to someone and maybe someone else can take this further?

于 2010-09-30T20:09:54.840 回答