代码之家  ›  专栏  ›  技术社区  ›  jay.lee

Windows网络包修改

  •  4
  • jay.lee  · 技术社区  · 16 年前

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

    另一个解决方案是编写NDIS中间驱动程序,但编写驱动程序是一个我无法理解的问题。甚至WindK中的简单直通示例也有数千行。我也不期待不断地重新安装驱动程序和重新启动来测试我的代码。

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

    4 回复  |  直到 16 年前
        1
  •  5
  •   Dmitry    16 年前

    取决于要筛选/修改的数据包类型。

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

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

        2
  •  2
  •   Tony The Lion    16 年前

    嗯,如果你想修改数据包,你需要一些东西来和硬件对话,一个类似的驱动程序。如果你不想使用你自己的,你应该找一个第三方驱动程序来进行交互操作。

    http://www.ntkernel.com/w&p.php?id=7

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

    希望这有帮助!

        3
  •  2
  •   alemjerus    16 年前

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

        4
  •  2
  •   Mark Grayson    15 年前

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

    1. ARP毒害主机和路由器,所以我的嗅探机让所有数据包都通过它。
    2. 编写一个宏/脚本,实时查找所述特征,然后在发送之前动态修改。

    我认识凯恩;Abel for Windows能够(哈哈)ARP毒药,但我不确定它是否能提供原始数据包内容转储。Wireshark能够转储所有内容,但不确定它是否能够ARP毒药,以便获得我想要的内容。如果不能,则我可以通过以太网轻松地将我想要拦截的主机连接到我的嗅探器机器,然后通过嗅探器共享互联网,以便所有数据包都将通过嗅探器机器。

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