用C#发送原始IP数据包,所有内容都在以太网层之上

用C#发送原始IP数据包,所有内容都在以太网层之上,c#,ip,packet,spoofing,C#,Ip,Packet,Spoofing,我不想修改帧的以太网部分,但我需要修改帧的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

我不想修改帧的以太网部分,但我需要修改帧的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。使用“Send”会崩溃,因为它说我需要指定一个端点。有什么建议吗?我只想发送一个数据包,自己定义IP部分和数据部分

注意:不,我不是在进行DOS攻击,我需要合法使用它


我知道如何定义IP部分,这只是实际发送数据而不生成IP部分的问题。

您的问题在这里得到了很好的回答:

使用某种库,您可以轻松地以任何方式修改单个数据包(因为它使用了功能非常强大的底层WinPcap实现)

您还可以完全跳过IP层并发送到MAC地址,如中所示:我使用类似的方法通过以太网与微控制器(Atmel ATmega)通信,该以太网提供几乎实时的通信。

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

错!WinPcap无法进行筛选/数据包丢弃/创建数据包。换句话说,它只允许您以异步方式监视数据包


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

我之前看到过,我真的希望我可以直接在System.Net.Socket中完成。Blah-oh-wellSystem.Net.Socket是Winsock的包装器,所以你可以直接p/调用和使用Winsock,但是使用Pcap.Net会更好。你刚刚意识到了这一点。很好的发现。谢谢你的澄清这个问题的可能重复得到了一个更好的文本,但答案在那里-这应该合并。