0

有没有办法在使用 C++ 或任何语言的操作系统内核接收数据之前通过网卡控制来自特定地址的来自互联网的数据?

换句话说,有没有办法使用 C++ 访问 OSI 七层模型来控制通过七层的任何层的数据,或者它们只是在逻辑上实现。

如果它们没有在逻辑上实现并且您可以访问我想访问通过从特定地址接收的物理层的包并在它们移动到下一层之前执行一些操作。

也有任何OSI的模拟软件吗?

4

3 回答 3

4

设备驱动程序介于硬件和内核之间,因此这是您唯一的选择。这取决于操作系统,但可以为所有主要的 C++ 编写设备驱动程序。不过,请准备好遇到纯 C 接口。

于 2009-12-22T00:39:34.420 回答
2

您是否在问不受信任的应用程序是否可以控制操作系统看到的来自网络的内容?

答案应该是显而易见的。

大多数操作系统都提供了访问来自网络的原始数据的接口,您应该使用这些接口,而不是试图将自己夹在网卡和操作系统之间。

此外,C++!= C#。差远了。

于 2009-12-22T00:38:17.223 回答
2

您可以想象创建一个分层服务提供者,该服务提供者可以通过将自身插入到 winsock 堆栈中来拦截数据,但这不会使通过内核和 Windows 中的 NDIS 层的数据短路。您唯一真正的解决方案是设备驱动程序。此外,有些网卡在硬件中实现了自己的 TCP/IP 堆栈,您可以直接与它们通信,但这些网卡并不常见。这些方法中的任何一种都不是微不足道的,并且您正在查看很多内核模式 C。如果您对此不满意,则不应尝试此方法。

您也可以考虑使用 winpcap,因为这将为您提供许多您需要的功能。 http://www.winpcap.org/devel.htm

于 2009-12-22T00:44:09.960 回答