क्या नैम्प प्रदर्शन केवल विशिष्ट पोर्ट खोलने वाले मेजबानों को होस्ट कर सकता है?


18

nmapस्थानीय नेटवर्क पर सभी मेजबानों को सूचीबद्ध कर सकते हैं जिनमें SSH और HTTP दोनों खुले हैं? ऐसा करने के लिए, मैं कुछ इस तरह से चला सकता हूं:

nmap 192.168.1.1-254 -p22,80 --open

हालाँकि, यह सूची होस्ट करता है जिसमें कोई भी सूची पोर्ट खुला है, जबकि मैं उन सभी होस्टों को चाहूंगा जिनके पास सभी पोर्ट खुले हों। इसके अलावा, आउटपुट काफी क्रियात्मक है:

# nmap 192.168.1.1-254 -p22,80 --open

Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST
Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1)
Host is up (0.0016s latency).
Not shown: 1 closed port
PORT   STATE SERVICE
80/tcp open  http

Nmap scan report for new-host-2.home (192.168.1.16)
Host is up (0.013s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 254 IP addresses (7 hosts up) scanned in 3.78 seconds

मैं जिस चीज की तलाश कर रहा हूं वह आउटपुट की तरह है:

192.168.1.16

उपरोक्त होस्ट के रूप में सभी बंदरगाहों को खोलने वाला एकमात्र है।

मैं निश्चित रूप से आउटपुट को पोस्ट-प्रोसेस कर सकता हूं, लेकिन मैं नैम्प के आउटपुट फॉर्मेट पर भरोसा नहीं करना चाहता, अगर कोई रास्ता है तो मैं इसे नैम्प करूंगा।


यदि आप केवल एक पोर्ट का परीक्षण करना चाहते हैं, 'nmap -p 22 | grep -B3 ओपन 'एक आसान तरीका है।
लुसियानो अंड्रेस मार्टिनी

जवाबों:


10

नैंप के भीतर ऐसा करने का कोई तरीका नहीं है, लेकिन "नैंप के आउटपुट प्रारूप पर भरोसा करने के लिए" न चाहते हुए भी आपकी टिप्पणी मुझे बताती है कि मशीन के पढ़ने योग्य पार्सिंग के लिए नैंप के दो स्थिर आउटपुट स्वरूप हैं। पुराना एक ग्रेपबल आउटपुट ( -oG) है , जो पर्ल, ऑक और ग्रीप के साथ प्रसंस्करण के लिए अच्छी तरह से काम करता है, लेकिन कुछ और अधिक उन्नत आउटपुट (जैसे एनएसई स्क्रिप्ट आउटपुट, पोर्ट कारण, ट्रेसरआउट, आदि) को याद कर रहा है। अधिक पूर्ण प्रारूप XML आउटपुट ( -oX) है , लेकिन यह आपके उद्देश्यों के लिए ओवरकिल हो सकता है।

आप या तो साथ फ़ाइलों के लिए इन outputs को बचाने -oG, -oXया -oA(दोनों स्वरूपों प्लस "सामान्य" पाठ उत्पादन), या आप stdout में सीधे या तो एक भेज सकते हैं:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'


1
यह एकदम सही है, बस मैं क्या देख रहा था ( -oG -)
ब्रायन

2

इस awkएक-लाइनर पर भी विचार करें :

nmap -Pn -oG -p22,80,443,445 - 100.100.100.100 | awk '/open/{ s = ""; for (i = 5; i <= NF-4; i++) s = s substr($i,1,length($i)-4) "\n"; print $2 " " $3 "\n" s}'

यह आपको इस तरह के सभी निर्दिष्ट खुले बंदरगाहों के साथ सभी मेजबानों को मुद्रित करेगा:

 100.100.100.100 (some-domain.com)
 22/open/tcp//ssh
 80/open/tcp//http
 443/open/tcp//microsoft-ds
 445/open/tcp//https-alt

इसे परीक्षण करने के बाद आपने -p जोड़ा होगा। कमांड लाइन पर '-' सही -oG के बाद आता है
वेन

1

निम्नलिखित कमांड आज़माएं:

nmap --open -p 22,80 192.168.1.1-254 -oG - | grep "/open" | awk '{ print $2 }'

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


U & L में आपका स्वागत है! ध्यान दें कि ~ 3 साल पहले से स्वीकृत उत्तर का एक सरल संस्करण है जहां यह awk से grep और प्रिंट का उपयोग करता है ।
जेफ स्कालर

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