This purpose of this article is to explain how to send a raw Ethernet packet using C# on a Microsoft platform. A raw Ethernet packet is the complete Layer 2 network frame that is sent to the physical wire. Sending a frame like this allows you to manipulate the target and source MAC addresses and the Layer 3 protocol fields.
Also some info on raw sockets (just in case you interesting too):
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);
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);
发布评论
评论(3)
根据 Saint_pl 的建议:
我有一些资源可能对您有帮助。我不会在 Windows 7 中尝试该解决方案,但也许它包含一些好的开始信息。
原始以太网数据包操作 或 CodeProject 上的镜像
还有一些有关原始套接字的信息(以防万一您也感兴趣):
客户端(和服务器)套接字通信 看一下整个章节,但这里是关键部分:
不发送数据包,但可能很有趣:C# 中的网络嗅探器、SharpPcap - .NET 数据包捕获框架
Based on suggestion by Saint_pl:
I have some resources for you that maybe helpful. I don't try that solutions in Windows 7 but maybe it contains some good info to start.
Raw Ethernet Packet Manipulation or mirror on CodeProject
Also some info on raw sockets (just in case you interesting too):
Client (and Server) Sockets Communication take a look on whole chapter but here key parts:
Not sending packets but maybe interesting: A Network Sniffer in C#, SharpPcap - A Packet Capture Framework for .NET
iphelper API 有一些低级的东西 - 但可能没有你想要的那么低
iphelper API has some low level stuff - but probably not quite as low as you want to get