¿Cómo enviar paquetes de Ethernet en bruto con C #? [cerrado]
-
09-10-2019 - |
Pregunta
¿Hay una manera de enviar crudo paquete Ethernet a otro host a través de C #? En Windows 7, si se hace la diferencia.
Solución
En base a sugerencia de Saint_pl:
He encontrado probablemente mejor solución - similar a SharpPcap. Es Pcap.Net - NET envoltorio para WinPcap. Ahora puedo modificar mis paquetes de lo que quiera.
Me tiene algunos recursos para usted que tal vez útil. No intento que las soluciones en Windows 7, pero quizá Contiene buena información para empezar.
de paquetes Ethernet Raw Manipulación o espejo en CodeProject
Este propósito de este artículo es explicar cómo enviar un paquete Ethernet cruda usando C # en una plataforma Microsoft. Un paquete Ethernet en bruto es el marco de red de capa 2 completa que se envía al cable físico. Envío de una trama como esto le permite manipular las de origen y destino direcciones MAC y los campos de protocolo de Capa 3.
También algo de información sobre los conectores directos (en caso de que interesante también):
cliente (y servidor) terminales de comunicación echar un vistazo en el capítulo entero, pero las piezas clave aquí :
- C # Raw UDP Socket Ejemplo de programa
- C # Raw Socket Ping Ejemplo de programa parte A | B parte
- Todos los ejemplos
No enviar paquetes, pero tal vez interesante: Una red Sniffer en C # , SharpPcap - Marco captura un paquete para .NET
Otros consejos
IPHelper API tiene algunas cosas de bajo nivel - pero probablemente no es tan bajo como usted quiere conseguir
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);