Existe-t-il un moyen d'envoyer un paquet Ethernet brut à un autre hôte via C#? Dans Windows 7, si cela fait une différence.Comment envoyer un paquet Ethernet brut avec C#?
Répondre
Sur la base de suggestion Saint_pl:
J'ai trouvé une solution sans doute mieux - semblable à SharpPcap. C'est Pcap.Net - Enveloppeur .NET pour WinPcap. Maintenant, je peux modifier mes paquets tout ce que je veux.
J'ai des ressources pour vous que peut-être utile. Je n'essaie pas ces solutions dans Windows 7 mais peut-être qu'il contient quelques bonnes informations pour commencer.
Raw Ethernet Packet Manipulation ou mirror on 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 trame réseau complète de couche 2 qui est envoyée au fil physique. Envoyer un cadre comme celui-ci vous permet de manipuler les adresses MAC cible et source et les champs de protocole de couche 3.
également quelques informations sur les sockets raw (au cas où vous intéressant aussi):
Client (and Server) Sockets Communication un coup d'oeil sur le chapitre entier, mais ici des éléments clés:
- C# Raw UDP Socket Program Example
- C# Raw Socket Exemple de programme ping part A | part B
- All examples
Ne pas envoyer des paquets, mais peut-être intéressant: A Network Sniffer in C#, SharpPcap - A Packet Capture Framework for .NET
Je pense que l'envoi de paquets Ethernet bruts de CodeProject va m'aider. Et btw je suppose que c'est un seul et unique moyen que j'ai été trouvé pour envoyer un paquet Ethernet avec, par exemple, changé l'adresse MAC via C#. – Saint
La manipulation d'Ethernet brut est assez bas niveau. Pour compléter votre tâche à un bon niveau, vous avez certainement besoin de connaissances sur les spécifications d'interface de pilote de réseau et sur la compréhension des pilotes de périphériques (et de leur API). Ne le saute pas. C# seul ne vous donne pas la pleine puissance dans cette tâche. –
J'ai trouvé probablement une meilleure solution - similaire à SharpPcap. C'est http://pcapdotnet.codeplex.com/ - Enveloppe .NET pour WinPcap. Maintenant, je peux modifier mes paquets tout ce que je veux. Merci :) – Saint
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);
Ceci est un paquet TCP, pas un paquet ethernet ... Vous êtes 2 couches trop haut sur la pile;) –
Ah je vois. La compréhension échoue. – bufferz
Cela ne fonctionnerait pas non plus sur Windows 7. [Seules les versions Server de Windows permettent l'utilisation de sockets TCP brutes] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548%28v=vs. 85% 29.aspx # LIMITATIONS_ON_RAW_SOCKETS) en raison d'un abus de logiciels malveillants dans le passé. –
IPHelper API a quelques trucs de bas niveau - mais probablement pas tout à fait aussi bas que vous voulez obtenir
- 1. PHP Comment envoyer un paquet HTTP brut
- 2. Comment envoyer un datagramme avec une remorque Ethernet?
- 3. Envoyer un paquet UDP en C#
- 4. Comment envoyer un paquet ARP à partir d'un programme C?
- 5. Comment envoyer un paquet IP en Python?
- 6. Comment convertir en temps réel le paquet sans fil (802.11) en paquet Ethernet (802.3) dans Windows?
- 7. Code C pour générer et envoyer un paquet
- 8. Comment envoyer du XML brut en Python?
- 9. Comment lire un flux brut PCM pur avec C#?
- 10. Envoie un paquet SYN en C#?
- 11. comment envoyer un message en plusieurs parties (pour envoyer des images) comme un paquet de savon?
- 12. Comment usurper une adresse MAC ethernet de l'interface Ethernet câblée avec MacBookPro et Leopard 10.5.6?
- 13. Comment modifier l'adresse MAC de destination dans un paquet?
- 14. comment diffuser le paquet ARP en C#
- 15. linux raw socket ethernet se lier à un protocole spécifique
- 16. C# webbrowser rafraîchissement brut
- 17. Frais généraux avec PPP et Ethernet
- 18. Comment faire un paquet supprimer un autre (plus ancien) paquet?
- 19. Envoyer un e-mail HTML via C# avec SmtpClient
- 20. Comment envoyer des données brutes sur un réseau?
- 21. Envoyer des données hexadécimales brutes dans un paquet udp jython
- 22. Pointeur brut en C++
- 23. Types Ethernet
- 24. Sybase IQ: Comment créer un DBSPACE avec un périphérique brut?
- 25. Envoyer et recive paquet dans le réseau local avec plusieurs adresses MAC en C#
- 26. Comment envoyer un email gmail avec asp.net - C#?
- 27. Comment accéder à un secteur brut de disque sous XP avec un programme c?
- 28. Comment choisir InfiniBand ou Ethernet par programme?
- 29. paquet de requête DHCP en C#
- 30. Implémenter Raw Ethernet dans Winsock
Qu'attendez-vous pour arriver à l'autre bout? Raw aussi? Faire votre propre protocole? Quel est le problème avec ceux que nous utilisons tous, votre matériel sait comment acheminer et votre administrateur LAN sait comment prendre en charge? –
Je veux juste envoyer un paquet ethernet avec certains champs modifiés comme l'adresse MAC – Saint
SharpPcap et Pcap.net sont la voie à suivre. Vous avez besoin d'un framework wrapper WinPcap car Windows n'autorise pas l'accès aux en-têtes de protocole de niveau inférieur pour des raisons de sécurité. WinPcap fournit son propre pilote réseau qui vous permet de contourner cette restriction. –