如何解决 Windows 7 下的“原始套接字限制”?

Yan*_*Luo 3 sockets windows tcp raw-sockets

我正在 Windows 7 下开发 TCP 协议模糊测试软件。我想使用原始套接字发送自构建的 TCP 数据包。但似乎出于某些安全原因,微软禁止这样做。( http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx )

我知道 WinPcap 也可以发送自定义数据包。但我不想从以太网级别构建数据包。以太网和 IPv4 的参数如此复杂,让我抓狂。我只关心上面的 TCP 部分。是否有任何解决方案可以解决此问题?我能想到的就是将我的 Win7 更改为 Windows 2008 R2,但这是一个很大的项目。我希望有更好的方法吗?

Jer*_*iah 5

在 Windows XP Service Pack 1 之后,发送原始套接字的功能已被禁用,但您仍然可以读取它们。

您可以修改 WDK 中 Microsoft 提供的源代码示例以再次启用原始发送。有关更多信息,请查看链接。

PCAUSA - 如何从 Win32 应用程序访问 NIC 驱动程序

或者,您可以使用 WinPcap 将数据包注入网络。

WinPcap

  • 如果您想在没有 pcap 的情况下启用原始发送,编写自定义驱动程序(或使用其他人的)是我所知道的唯一方法。如果您正在编写模糊器,我也不会忘记较低的层(因为在那里发现了一些有趣的漏洞)。无论如何,您必须决定是否值得花时间购买自定义驱动程序。正如您所提到的,Windows 将不支持发送任何 tcp 数据,因此如果您想在没有 pcap 的情况下发送数据,则必须编写代码来处理较低层。http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx (2认同)