我正在做一个项目,我必须制作自定义数据包。也就是说,我必须控制每个数据包头。我正在尝试使用套接字来做到这一点。基本上,我需要做的是:

SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);

ethernet_type 是自定义的、非标准的,例如 0xAAAA。我正在使用 htons()。另外,我最好不要使用 winPcap。

现在,我收到错误 10043,协议不受支持。

该错误消息似乎建议我可以将协议配置到我的系统中,但我不知道该怎么做。

它说:

不支持协议。所请求的协议尚未配置到系统中,或者不存在其实现。例如,套接字调用请求 SOCK_DGRAM 套接字,但指定流协议。

这里有一些不同的问题,所以如果有人有任何意见,我将非常感激。

有帮助吗?

解决方案

根据 这些 文章, ,Microsoft 在不可删除的修补程序中从 Windows 中删除了原始套接字支持。因此,除非您想切换到另一个操作系统,否则您可能会运气不好。

其他提示

我认为,增加新的协议的套接字调用会是这样相当困难。你必须确保插座支持这一呼吁。我认为你将不得不重新编译socket函数,我不认为这是很容易可以在Windows下。

制作定制的数据包不要求创建新的协议

我认为指定RAW套接的正确的方法是这样的

SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

如果你真的想用原始的以太网发挥像你的变量名提示,那么无论你使用WinPcap的驱动程序或写的自己的驱动程序

我不认为还有另外一个“易”解决方案,以原始的以太网。 WinPcap的是相当容易的,所以你可能要看看

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top