2011-04-13 10 views
6

से ऊपर सब कुछ मैं फ्रेम के ईथरनेट भागों को संशोधित नहीं करना चाहता, लेकिन मुझे आईपी पैकेट और फ्रेम के डेटा हिस्से को संशोधित करने की आवश्यकता है।सी # में रॉ आईपी पैकेट भेजें, ईथरनेट परत

मैं कच्चे फ्रेम भेजने का प्रयास करता हूं और यह अभी भी आईपी जानकारी में डालता है। मुझे मूल रूप से अंतराल को परिभाषित किए बिना एक फ्रेम भेजने की आवश्यकता है, जो कि मैं भेज रहा हूं।

यहाँ मैं क्या मिला है:

Socket s = new Socket(AddressFamily.Unspecified, SocketType.Raw, ProtocolType.Raw); 
EndPoint ep = new IPEndPoint(IPAddress.Parse("205.188.100.58"),80); 
s.SendTo(GetBytes(""),ep); //im sending nothing, so i expect the frame to just have ethernet stuff 
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, false); 

मेरा प्रश्न: का उपयोग SendTo फ्रेम के आईपी भाग कहते हैं, मैं नहीं करना चाहती के रूप में मैं स्रोत आईपी धोखा करना चाहते हैं। "भेजें" का उपयोग करना दुर्घटनाग्रस्त हो जाएगा क्योंकि यह कहता है कि मुझे एक एंडपॉइंट निर्दिष्ट करने की आवश्यकता है। कोई सुझाव कि क्या करना चाहिये? मैं बस एक पैकेट भेजना चाहता हूं और आईपी सेक्शन और डेटा सेक्शन को खुद परिभाषित करना चाहता हूं।

नोट: नहीं, मैं एक डॉस हमला नहीं कर रहा हूं, मुझे वैध उपयोग के लिए इसकी आवश्यकता है!

मैं कैसे आईपी भाग, इसकी सिर्फ वास्तव में एक उत्पन्न आईपी भाग के बिना डेटा भेजने की बात को परिभाषित करने में पता है।

+0

संभावित डुप्लिकेट [सी # के साथ कच्चे ईथरनेट पैकेट कैसे भेजें?] (Http://stackoverflow.com/questions/3964013/how-send-raw-ethernet-packet-with-c) – mafu

+0

यह प्रश्न बहुत बेहतर हो गया पाठ, लेकिन उत्तर वहां पर हैं - यह विलय किया जाना चाहिए। – mafu

उत्तर

8

आपका प्रश्न बहुत अच्छी तरह से जवाब यहां है: How send raw ethernet packet with C#?

एक पुस्तकालय की Pcap.Net प्रकार का उपयोग करना, आप आसानी से आप चाहते हैं किसी भी तरह से व्यक्तिगत डाटा पैकेट (के रूप में यह अंतर्निहित WinPcap कार्यान्वयन जो बहुत शक्तिशाली है का उपयोग करता है) को संशोधित कर सकते हैं।

आप आईपी परत को पूरी तरह से छोड़ सकते हैं और मैक पते को इस प्रकार भेज सकते हैं: http://www.codeproject.com/KB/IP/sendrawpacket.aspx जहां मैंने ईथरनेट पर माइक्रो-कंट्रोलर (एटमेल एटमेगा) के साथ संवाद करने के लिए एक समान दृष्टिकोण का उपयोग किया जो लगभग रीयलटाइम संचार प्रदान करता है।

+0

मैंने पहले देखा था, मैं वास्तव में उम्मीद कर रहा था कि मैं इसे सीधे System.Net.Socket में कर सकता हूं। Blah ओह अच्छी तरह से – brandon

+0

System.Net.Socket Winsock के चारों ओर एक रैपर है ताकि आप सीधे पी/Invoke और Winsock का उपयोग कर सकते हैं लेकिन Pcap.Net का उपयोग करना बेहतर होगा। –

+0

या बस उसे एहसास हुआ। अच्छा खोज स्पष्टीकरण के लिए धन्यवाद – brandon

1

"पुस्तकालय के Pcap.Net प्रकार का उपयोग करके, आप किसी भी तरह से व्यक्तिगत डेटा पैकेट को आसानी से संशोधित कर सकते हैं (क्योंकि यह अंडरलेइंग WinPcap कार्यान्वयन का उपयोग करता है जो बहुत शक्तिशाली है)।"

गलत! WinPcap फ़िल्टरिंग/पैकेट ड्रॉप/पैकेट बनाने नहीं कर सकते हैं। दूसरे शब्दों तक, इसकी केवल आपके एक async फैशन में पैकेट की निगरानी करने देता ...

कच्चे पैकेट/अनेक मोड/चालक फिल्टर/पैकेट मार्ग एक और बात है।

संबंधित मुद्दे