【问题标题】:Windows network packet modificationwindows网络包修改
【发布时间】:2010-12-31 23:11:58
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ c networking packet


    【解决方案1】:

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

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

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

    所以步骤 1 可以完成,我不知道上述程序是否有能力根据具体情况进行过滤,但我猜他们有。

    就我而言。希望这对某人有所帮助,也许其他人可以更进一步?

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • LSP 不是驱动程序,它是一个不起眼的用户级 DLL。
        【解决方案4】:

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

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

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

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

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 2016-04-28
          • 2012-09-10
          • 1970-01-01
          • 2020-05-03
          • 1970-01-01
          • 2011-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多