6

我不想修改帧的以太网部分,但我需要修改 IP 数据包和帧的数据部分。

我尝试发送一个原始帧,它仍然放入 IP 信息。我基本上需要发送一个帧而不定义端点,除了我发送的位。

这是我得到的:

Socket s = new Socket(AddressFamily.Unspecified, SocketType.Raw, ProtocolType.Raw);
EndPoint ep = new IPEndPoint(IPAddress.Parse("205.188.100.58"),80);
s.SendTo(GetBytes(""),ep); //im sending nothing, so i expect the frame to just have ethernet stuff
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, false);

我的问题: 使用 SendTo 添加帧的 IP 部分,我不希望这样,因为我想欺骗源 IP。使用“发送”会崩溃,因为它说我需要指定一个端点。关于做什么的任何建议?我只想发送一个数据包并自己定义IP部分和数据部分。

注意:不,我不是在进行 DOS 攻击,我需要这个来合法使用!

我知道如何定义 IP 部分,它只是在没有生成 IP 部分的情况下实际发送数据。

4

2 回答 2

9

您的问题在这里得到了很好的回答:How send raw ethernet packet with C#?

使用Pcap.Net类库,您可以轻松地以任何您想要的方式修改单个数据包(因为它使用了非常强大的底层 WinPcap 实现)。

您也可以完全跳过 IP 层并发送到 MAC 地址,如下所示: http: //www.codeproject.com/KB/IP/sendrawpacket.aspx我使用类似的方法与微控制器(Atmel ATmega)进行通信通过以太网提供几乎实时的通信。

于 2011-04-13T16:15:36.347 回答
1

“使用 Pcap.Net 类库,您可以轻松地以任何您想要的方式修改单个数据包(因为它使用了非常强大的底层 WinPcap 实现)。”

错误的!WinPcap 无法进行过滤/丢包/创建数据包。换句话说,它只是让您以异步方式监控数据包......

原始数据包/混杂模式/驱动过滤器/数据包路由是另一个话题。

于 2017-06-16T16:05:31.390 回答