Comment envoyer paquets Ethernet brut avec C #? [fermé]
-
09-10-2019 - |
Question
Est-il possible d'envoyer des paquets Ethernet brut à un autre hôte via C #? Dans Windows 7 si elle fait la différence.
La solution
Sur la base de suggestion Saint_pl:
Je trouve probablement une meilleure solution - similaire à SharpPcap. Il est Pcap.Net - wrapper .NET pour WinPcap. Maintenant, je peux modifier mes paquets tout ce que je veux.
J'ai quelques ressources pour vous que peut-être utile. Je ne cherche pas que les solutions dans Windows 7, mais peut-être il contient de bonnes informations pour commencer.
Manipulation de paquets Ethernet Raw ou miroir sur CodeProject
Ce but de cet article est d'expliquer comment envoyer un paquet Ethernet brut en C # sur une plate-forme Microsoft. Un paquet Ethernet brut est la couche complète deux châssis de réseau qui est envoyé sur le fil physique. Envoi d'un cadre comme celui-ci vous permet de manipuler les adresses MAC source et cible et la couche 3 champs de protocole.
En outre, certaines informations sur les sockets raw (juste au cas où vous aussi intéressant):
client (et serveur) Sockets Communication un coup d'oeil sur le chapitre entier, mais ici des éléments clés :
- C # UDP Raw Socket Programme Exemple
- C # Raw Socket Programme Ping Exemple partie | partie B
- Tous les exemples
Ne pas envoyer des paquets, mais peut-être intéressant: Un réseau Sniffer en C # , SharpPcap - Un cadre de capture de paquets pour .NET
Autres conseils
IPHelper API a quelques trucs de bas niveau - mais probablement pas tout à fait aussi bas que vous voulez obtenir
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);