有沒有辦法通過C#發送原始數據包以太網到其他主機?在Windows 7中,如果它有所作爲。如何用C#發送原始以太網數據包?
回答
低:
我發現可能是更好的解決方案 - 類似SharpPcap。它是Pcap.Net - WinPcap的.NET包裝。現在我可以隨意修改我的數據包。
我有一些資源,你也許有幫助。我不嘗試在Windows 7中的解決方案,但也許它包含一些很好的信息開始。
Raw Ethernet Packet Manipulation或mirror on CodeProject
本文的這個目的是介紹如何使用C#在微軟平臺上發送原始以太網數據包。原始以太網數據包是發送到物理線路的完整第2層網絡幀。像這樣發送一個幀允許您操作目標和源MAC地址以及第3層協議字段。
而且對原始套接字的一些信息(以防萬一你有趣太):
Client (and Server) Sockets Communication取整章,但這裏的關鍵部位一看:
- C# Raw UDP Socket Program Example
- C#原始套接字Ping程序示例part A | part B
- All examples
不發送數據包,但也許有趣:A Network Sniffer in C#,SharpPcap - A Packet Capture Framework for .NET
我認爲原始以太網數據包從CodeProject發送將幫助我。順便說一句,我想這是唯一的方式,我發現通過C#發送以太網數據包,例如更改的MAC地址。 – Saint 2010-10-19 10:21:09
原始的以太網操作是非常低的水平。爲了以良好的水平完成您的任務,您當然需要一些關於網絡驅動程序接口規範和理解設備驅動程序(及其API)的知識。不要跳過它。單靠C#在這個任務中並沒有給你足夠的權力。 – 2010-10-19 15:06:54
我發現可能更好的解決方案 - 類似於SharpPcap。它是http://pcapdotnet.codeplex.com/ - WinPcap的.NET包裝。現在我可以隨意修改我的數據包。 Thanx :) – Saint 2010-10-23 14:54:42
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);
這是一個TCP數據包,而不是以太網數據包......你是2層太高的堆棧;) – 2010-10-18 23:04:53
啊我明白了。理解失敗。 – bufferz 2010-10-19 01:32:17
此外,這不適用於Windows 7. [只有服務器版本的Windows允許使用原始TCP套接字](http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548%28v=vs。 85%29.aspx#LIMITATIONS_ON_RAW_SOCKETS)由於惡意軟件濫用在過去。 – 2013-07-12 23:39:51
iphelper API有一些低層次的東西 - 但可能並不像你想Saint_pl基礎上建議,獲取
- 1. 使用pcapdotnet發送原始以太網數據包
- 2. 如何發送原始數據包
- 3. 接收原始以太網數據包c
- 4. 從內核模塊發送一個原始以太網數據包
- 5. 我如何發送python中的原始以太網幀
- 6. PHP發送原始數據包
- 7. 在類型字段中發送帶有數據字段長度的原始以太網數據包
- 8. 如何發送原始數據到API
- 9. SBApplication:如何發送原始數據
- 10. 如何在Ruby中將以太網數據包發送到網絡中?
- 11. 如何使用以太網預告片發送數據報?
- 12. 如何使用sendto通過原始以太網套接字發送數據而不使用sockaddr_ll?
- 13. 執行發送和接收原始以太網幀的C程序的問題
- 14. 在定義的以太網接口上發送數據包
- 15. 通過以太網發送UDP數據包到fpga spartan 3e
- 16. PHP如何發送原始HTTP數據包
- 17. 如何將wireshark數據包重新發送到原始文件?
- 18. 用原始數據發送Angular2表格
- 19. 如何使用python發送原始發佈數據?
- 20. 發送原始發佈數據
- 21. 在Unity3D中使用網絡對象發送原始數據
- 22. 如何在C#中發送數據包?
- 23. 在Winsock中實現原始以太網
- 24. 原始以太網的Java庫
- 25. 是否可以從Android向Arduino以太網盾發送UDP/TCP數據包?
- 26. 使用Go語言發送帶有以太網報頭的Raw數據包
- 27. 如何使用socket.io發送原始數據
- 28. 如何使用Java將原始數據發送到打印機
- 29. 如何使用boost :: asio發送原始二進制數據
- 30. 如何使用cURL發送原始POST數據? (PHP)
你有什麼期望在另一端發生的呢?原始呢?制定你自己的協議?我們都用什麼錯,你的硬件知道如何路由,你的局域網管理員知道如何支持? – 2010-10-19 00:38:28
我只是想發送以太網數據包與一些更改字段像MAC地址 – Saint 2010-10-19 09:57:47
SharpPcap和Pcap.net是要走的路。您需要一個WinPcap包裝器框架,因爲出於安全原因,Windows不允許訪問較低級別的協議標頭。 WinPcap提供了自己的網絡驅動程序,允許您繞過該限制。 – 2010-11-10 08:44:16