【问题标题】:Is it possible to capture localhost packets (127.0.0.1 as destination) in NDIS layer?是否可以在 NDIS 层捕获 localhost 数据包(127.0.0.1 作为目标)?
【发布时间】:2013-08-12 11:01:15
【问题描述】:

我正在为 WinPcap 和 Nmap 开发 Win7 和 Win8 的 NDIS 6 过滤器驱动程序。如您所知,Nmap 是一个网络扫描仪。 Nmap 的一个要求是捕获 localhost 数据包,例如“ping 127.0.0.1”,以便 Nmap 也可以测试本地机器本身。但是,似乎 localhost 数据包只会在 TCP/IP 堆栈中返回,而永远不会到达 NDIS 层。有没有办法解决这个问题?就像添加一个环回适配器或什么?谢谢。

【问题讨论】:

    标签: c windows driver ndis


    【解决方案1】:

    您需要 WFP 调用来捕获第 3 层环回数据包。 TCPIP 有一条永远不会到达 NDIS 中的第 2 层的环回快速路径。

    【讨论】:

    • 据了解,WFP 标注无法处理像 ARP 这样的纯第 2 层数据包,因为它不是 TCP/IP。并且过滤器驱动程序对于捕获像 ARP 这样的纯第 2 层数据包是必需的。这是一个问题。是否可以将 NDIS 过滤器驱动程序和 WFP 标注集成到一个驱动程序中(如 npf.sys)? NDIS 筛选器驱动程序捕获非环回数据包,而 WFP 标注捕获环回数据包。
    • WFP 标注和 NDIS LWF 都可以位于同一个驱动程序二进制文件中。他们不会在 WFP 和 NDIS 边缘之间共享太多。它实际上是两个单独的驱动程序打包在一起。如果您想同时查看第 2 层和第 3 层的内容,这可能是必要的。 (请注意,WFP 确实提供了一些第 2 层选项,但仅限于 Windows 8+,因此不太可能满足您的跨平台需求)。
    【解决方案2】:

    您可以使用原始套接字在 Windows 中捕获 localhost (127.0.0.1) 流量。有一个很棒的工具叫做 RawCap,它可以嗅探 localhost 并将捕获的数据包保存为 PCAP 格式。 http://www.netresec.com/?page=RawCap

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 2016-02-11
      • 2020-09-16
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      相关资源
      最近更新 更多