如何使用C#发送原始以太网数据包? [关闭
-
09-10-2019 - |
题
有没有办法通过C#将原始数据包以太网发送到其他主机?在Windows 7中,如果有所不同。
解决方案
根据SAINT_PL的建议:
我发现可能更好的解决方案 - 类似于SharppCap。它是 pcap.net - .NET包装器WinPCAP。现在,我可以随心所欲地修改数据包。
我为您提供一些可能会有所帮助的资源。我不尝试Windows 7中的解决方案,但也许它包含一些很好的信息。
本文的此目的是说明如何在Microsoft平台上使用C#发送原始以太网数据包。原始以太网数据包是发送到物理线的完整第2层网络框架。发送这样的帧使您可以操纵目标和源MAC地址以及第3层协议字段。
还有一些关于原始插座的信息(以防万一您也很有趣):
客户端(和服务器)插座通信 看看整章,但这里的关键部分:
- C#RAW UDP套接字程序示例
- C#原始插座PING程序示例 A部分 | b
- 所有例子
不发送数据包,但可能很有趣: C#中的网络嗅探器, SharppCap- .NET的数据包捕获框架
其他提示
iPhelper API有一些低水平的东西 - 但可能不像您想要的那样低
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("10.25.184.11"), 4456);
server.Connect(ip);
byte[] sendData = new byte[] { 0, 8, 32, 64 };
server.Send(sendData);
//done. now let's listen for data
byte[] receiveData = new byte[1024];
int receivedDataLength = server.Receive(receiveData);
//if the response is a string message
string stringData = Encoding.ASCII.GetString(receiveData, 0, receivedDataLength);
Console.WriteLine(stringData);
不隶属于 StackOverflow