मैं UDP पैकेट कैसे बना सकता हूं?


15

जब मैं निम्नलिखित Netcat कमांड निष्पादित करता हूं और Wireshark के साथ पैकेट देखता हूं , तो यह कहता है कि UDP पैकेट विकृत है।

$ echo "this is a test" | nc -u 127.0.0.1 53

इसी तरह, $ echo "this is a test" > /dev/udp/127.0.0.1/53Wireshark में "विकृत पैकेट" त्रुटियों जैसे आदेशों का उपयोग करना ।

यहां छवि विवरण दर्ज करें

इको कमांड को त्रुटियों के बिना Netcat सर्वर पर भेजा / वितरित किया जाता है। लेकिन यह मुझे आश्चर्यचकित कर गया: क्या यह संभव है कि गूंज या कुछ अन्य देशी यूनिक्स टूल (ओं) के साथ एक उचित यूडीपी पैकेट का निर्माण किया जाए?

मैं डेबियन और macOS का उपयोग कर रहा हूं।


10
आपके स्क्रीनशॉट के अनुसार यह udp- पैकेट ही नहीं है जो विकृत है बल्कि इसकी सामग्री है, क्योंकि पोर्ट 53 का उपयोग DNS के लिए किया जाता है और आपके पैकेट में एक मान्य DNS अनुरोध नहीं है।
tkausl

@tkausl आप बिल्कुल सही कह रहे हैं। 53 के अलावा बंदरगाहों का उपयोग करते समय कोई "विकृत" त्रुटियां नहीं हैं। इस बात को इंगित करने के लिए धन्यवाद।
user322500

1
यदि आप मानक प्रोटोकॉल का उपयोग नहीं कर रहे हैं, तो आप 49152 से 65535 की सीमा में बंदरगाहों का उपयोग करने वाले हैं। चूंकि डिफ़ॉल्ट रूप से लिनक्स 32768 से 60999 तक की सीमा का उपयोग करता है, क्योंकि मैं उन गैर-मानक प्रोटोकॉल के लिए या तो नहीं चुनने की सलाह देता हूं। हालाँकि 61000 से 65535 गैर-मानक प्रोटोकॉल के लिए उचित खेल हैं। मैं आमतौर पर echo $[61002+RANDOM%4532]उस रेंज में एक यादृच्छिक पोर्ट नंबर लेने के लिए उपयोग करता हूं ।
21

1
रूट के रूप में लॉग इन न करें। आपको अपनी अधिकांश गतिविधि गैर-रूट उपयोगकर्ता के रूप में करनी चाहिए। यदि आप सामान को रूट के रूप में करते हैं, तो आप यहां पूछेंगे कि आपकी मशीन को कैसे ठीक किया जाए, और हम मदद नहीं कर पाएंगे (फिर से स्थापित करने की सिफारिश करने के अलावा)।
ctrl-alt-delor

1
@tkausl अपनी टिप्पणी के जवाब के रूप में पोस्ट न करने के लिए आप क्या खो चुके हैं ....
जॉर्ज वासिलिओ

जवाबों:


41

IP और UDP के दृष्टिकोण से आपका पैकेट पूरी तरह से मान्य है। यदि आप Wireshark के निचले फलक में ईथरनेट / IP / UDP के लिए प्रोटोकॉल विवरण का विस्तार करते हैं, तो आप देखेंगे कि पैकेट सफलतापूर्वक पार्स हो गया है।

हालाँकि, जैसा कि यह पोर्ट 53 के लिए नियत है, Wireshark इसे DNS पैकेट के रूप में पार्स करने का प्रयास करता है, जो यह नहीं कर सकता (क्योंकि स्ट्रिंग "यह एक परीक्षण है" RFC 1035 कल्पना के अनुसार एक वैध DNS अनुरोध नहीं है )।

यदि आप उस लिंक पर दिए गए विनिर्देश का पालन करते हैं, तो आप DNS अनुरोध के रूप में पार्स किए जाने पर मान्य पैकेट का निर्माण कर पाएंगे। यदि आप पैकेट को किसी अन्य पोर्ट पर भेजते हैं, तो आप ध्यान देंगे कि Wireshark अब DNS अनुरोध के रूप में पार्स नहीं करेगा और इसलिए यह चेतावनी नहीं दिखाएगा।


15

आप उन्हें पुनर्निर्देशन के साथ बैश विशेष उपनामों में भेज सकते हैं।

बैश मैनपेज से:

/ dev / tcp / host / port यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो संबंधित टीसीपी सॉकेट खोलने का प्रयास करें।

/ dev / udp / host / port यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो संबंधित UDP सॉकेट को खोलने का प्रयास करें।

यह 8080 पोर्ट करने के लिए 192.168.2.11 को UDP पैकेट भेजेगा:

echo "This is a test" > /dev/udp/192.168.2.11/8080

इस उत्तर के लिए धन्यवाद। मैंने अपना प्रश्न अपडेट कर दिया है। अपने तरीके का उपयोग करने से दुर्भाग्य से "विकृत पैकेट" त्रुटि संदेश भी उत्पन्न होता है।
user322500

-1

यहाँ कई प्रश्न हैं; एक "विकृत पैकेट" का दावा चेकसम ऑफ़लोडिंग के कारण हो सकता है और यदि ऐसा है तो यह एक गलत त्रुटि है क्योंकि यह पैकेट कैप्चर को पूर्ण दृश्य नहीं होने पर दर्शाता है - कुछ काम इसके बजाय नेटवर्क हार्डवेयर पर किए गए थे। वायरशर्क को इस पर प्रलेखन होना चाहिए।

अन्यथा, विभिन्न उपकरण (जैसे socat, ncया netcat, या इस तरह के रूप गोले में बेहद मिलती-जुलती सुविधाओं के माध्यम से ksh93या bash) मानक इनपुट से बाइट्स लेते हैं और उन्हें एक यूडीपी पैकेट हो जाता है क्या में डंप कर सकते हैं। क्या यह "उचित" है प्रोटोकॉल पर निर्भर करता है; कोई भी इस तरह से एक डीएनएस या डीएचसीपी पैकेट का निर्माण और भेज सकता है, हालांकि अधिक बार लोग एक पुस्तकालय या समर्पित सॉफ़्टवेयर का उपयोग करते हैं जो (उम्मीद है) प्रश्न में प्रोटोकॉल को सही ढंग से लागू करता है, क्योंकि आमतौर पर कुछ बिट्स सेट करने की तुलना में बहुत अधिक शामिल होता है एक पैकेट का शरीर और उस तार को बाहर भेजना, विशेष रूप से प्रतिक्रियाओं को संभालना, टाइमआउट या त्रुटि के बाद पुन: प्रयास करना, पैकेट हेडर फ़ील्ड, आदि। प्रोटोकॉल आमतौर पर आरएफसी में बहुत अच्छी तरह से प्रलेखित होते हैं, या "टीसीपी / आईपी इलस्ट्रेट" पुस्तक श्रृंखला देखें स्टीवंस द्वारा और भी अधिक प्रलेखन के लिए।

विशिष्ट उपकरण जैसे कि nmapपैकेट निर्माण के साथ बहुत कस्टम चीजें करते हैं। अन्यथा मैन्युअल पैकेट निर्माण के लिए एक प्रोग्रामिंग भाषा का आमतौर पर उपयोग किया जाता है, हालांकि फिर से अधिकांश सॉफ्टवेयर मौजूदा पुस्तकालयों या सिस्टम सेवाओं का उपयोग DNS या डीएचसीपी या अन्य यूडीपी पैकेटों को भेजने के लिए करेंगे, क्योंकि वे काम से बहुत कम हैं और मैन्युअल रूप से कच्ची क्राफ्टिंग की तुलना में कम त्रुटि वाले हैं। खरोंच से पैकेट।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.