31

有没有办法通过 C# 将原始数据包以太网发送到其他主机?在 Windows 7 中,如果它有所作为。

4

3 回答 3

20

根据 Saint_pl 的建议:

我找到了可能更好的解决方案——类似于 SharpPcap。它是Pcap.Net - WinPcap 的 .NET 包装器。现在我可以随心所欲地修改我的数据包。


我有一些资源可能对你有帮助。我没有在 Windows 7 中尝试该解决方案,但它可能包含一些很好的信息。

CodeProject 上的原始以太网数据包操作或镜像

本文的目的是解释如何在 Microsoft 平台上使用 C# 发送原始以太网数据包。原始以太网数据包是发送到物理线路的完整第 2 层网络帧。发送这样的帧允许您操纵目标和源 MAC 地址以及第 3 层协议字段。

还有一些关于原始套接字的信息(以防你也感兴趣):

客户端(和服务器)套接字通信 查看整章,但这里的关键部分:

不发送数据包,但可能很有趣:A Network Sniffer in C#SharpPcap - A Packet Capture Framework for .NET

于 2010-10-18T23:18:04.727 回答
0

iphelper API 有一些低级的东西——但可能没有你想得到的那么低

于 2010-10-18T22:57:43.077 回答
-2
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);
于 2010-10-18T22:51:06.913 回答