बैश के `/ देव / udp` का उपयोग करते हुए, मुझे कैसे पता चलेगा कि पोर्ट खुला था?


14

मेरे पास पहुंच नहीं है netcatया nmapइसलिए मैं बंदरगाहों का परीक्षण करने के लिए bashऔर /dev/udp/विशेष फ़ाइलों का उपयोग करने की कोशिश कर रहा हूं ।

मैं कुछ ऐसा कर सकता था:

echo "" > /dev/udp/example.com/8000

लेकिन $?हमेशा 0यूडीपी का उपयोग करते समय। मैं यह मान रहा हूं कि क्योंकि echo ""कमांड का रिटर्न वैल्यू सही है?

मैं मूल रूप से यह दोहराने की कोशिश कर रहा हूं कि मैं क्या करने में सक्षम हूं nmapऔर netcat:

nmap -sU -p 8000 example.com | grep open >/dev/null && echo 'open'
nc -z -u example.com 8000 && echo 'open'

मैं इसके साथ कैसे करूंगा /dev/udp?


1
यूडीपी डिलीवरी की गारंटी नहीं देता है, इसलिए यदि बैश को लगता है कि यह संदेश भेजने में सफल हो गया है, तो संदेश रास्ते में नष्ट हो सकता है। आपने एक असफल भेजने का परीक्षण कैसे किया (असफल कनेक्शन नहीं: UDP कनेक्शन नहीं है)?
गिल्स एसओ-

जवाबों:


13

Tcp के लिए, बस जाँच $?। यदि कनेक्शन विफल हुआ, तो $?यह नहीं होगा 0:

$ >/dev/tcp/google.com/81
bash: connect: Network is unreachable
bash: /dev/tcp/google.com/81: Network is unreachable
$ echo $?
1

यह bashमहसूस करने में समय लगेगा कि कनेक्शन विफल हो गया। आप ट्रिगर करने के लिए टाइमआउट का उपयोग कर सकते हैं bash:

$ timeout 1 bash -c '>/dev/tcp/google.com/80' &&
  echo Port open ||
  echo Port close
Port open

Udp पोर्ट का परीक्षण करना अधिक जटिल है।

सख्ती से, कोई खुला राज्य नहीं है (बेशक, udp स्टेटलेस प्रोटोकॉल है) udp के साथ। Udp के साथ केवल दो राज्य हैं, सुनने या नहीं । यदि राज्य नहीं है , तो आपको आईसीएमपी गंतव्य अप्राप्य मिलेगा ।

दुर्भाग्य से, फ़ायरवॉल या राउटर अक्सर उन ICMP पैकेट को गिरा देते हैं, इसलिए आपको यकीन नहीं होगा कि udp पोर्ट किस स्थिति में है।


UDP पर ध्यान केंद्रित करने के लिए मेरे प्रश्न को फिर से लिखा। निंजा के लिए मेरी माफी संपादित करें। मुझे लगा कि यह समान होगा इसलिए भेद नहीं किया गया। इसे क्लीयर करने के लिए शुक्रिया।
बेलमिन फर्नांडीज

10

सामान्य तौर पर, आप नहीं कर सकते।

टीसीपी के विपरीत, यूडीपी कनेक्शन रहित है। आप यह पता नहीं लगा सकते हैं कि टीसीपी के साथ ऐसा कुछ भी करने के लिए कुछ भी नहीं करने से केवल एक पोर्ट खुला है। बल्कि, आपको पोर्ट में डेटा भेजने और यह देखने की आवश्यकता है कि क्या होता है, और वास्तविक दुनिया में लागू किए गए यूडीपी के विवरण परिणामों की व्याख्या करना मुश्किल बनाते हैं। यहां तक ​​कि परिष्कृत पैकेट-स्तर के उपकरण भी nmapनिश्चित के लिए नहीं बता सकते हैं यदि किसी दिए गए यूडीपी पोर्ट को सुनने का कार्यक्रम है। nmapयूडीपी बंदरगाहों को तीन समूहों में वर्गीकृत करता है:

  1. निश्चित रूप से खुला। पोर्ट पर एक पैकेट भेजने से गंतव्य मशीन से डेटा प्रतिक्रिया प्राप्त होती है।
  2. निश्चित रूप से बंद। पोर्ट पर एक पैकेट भेजने से गंतव्य मशीन से एक "ICMP गंतव्य पहुंच योग्य" संदेश प्राप्त हुआ।
  3. या तो खुला या छाना हुआ। पोर्ट पर एक पैकेट भेजने से कोई प्रतिक्रिया नहीं हुई। शायद वहाँ एक फ़ायरवॉल है जो पैकेट को गिरा रहा है; हो सकता है कि कोई कार्यक्रम सुनने वाला हो और nmapअभी यह पता नहीं लगा हो कि प्रतिक्रिया कैसे प्राप्त करें; शायद उपयोगकर्ता सिर्फ बदकिस्मत हो गया और सभी पैकेट पारगमन में खो गए।

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