Come inviare un pacchetto Ethernet crudo con C #? [chiuso]
-
09-10-2019 - |
Domanda
C'è un modo per inviare grezzo pacchetto Ethernet ad altri host tramite C #? In Windows 7 se fa differenza.
Soluzione
Sulla base di suggerimento di Saint_pl:
Ho trovato probabilmente migliore soluzione - simile a SharpPcap. E ' Pcap.Net - NET wrapper per WinPcap. Ora posso modificare i miei pacchetti quello che voglio.
Ho alcune risorse per te, che forse utile. Io non cerco che le soluzioni in Windows 7, ma forse contiene alcune informazioni buono per iniziare.
Raw Ethernet Packet manipolazione o specchio su CodeProject
Questo scopo di questo articolo è quello di spiegare come inviare un pacchetto Ethernet RAW utilizzando C # su piattaforma Microsoft. Un pacchetto Ethernet crudo è il frame di rete Layer 2 che viene inviato al filo fisico. L'invio di un telaio come questo permette di manipolare le origine e di destinazione indirizzi MAC e campi protocollo di livello 3.
Anche alcune informazioni sui socket prime (solo in caso di troppo interessante):
client (e Server) Sockets comunicazione dare un'occhiata su intero capitolo, ma qui parti fondamentali :
- C # Raw socket UDP Esempio di programma
- C # Raw Socket da ping Esempio di programma parte A | parte B
- Tutti gli esempi
Non pacchetti di invio, ma forse interessante: Una rete Sniffer in C # , SharpPcap - Un pacchetto Framework Capture for .NET
Altri suggerimenti
IPHelper API ha alcune cose di basso livello - ma probabilmente non del tutto a partire da si desidera ottenere
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);