Nmap ekranı yalnızca belirli bağlantı noktaları açık olan ana makineleri görüntüleyebilir mi?


18

Can nmapHTTP açık hem SSH ve yerel ağdaki tüm ana listelemek? Bunu yapmak için şöyle bir şey çalıştırabilirim:

nmap 192.168.1.1-254 -p22,80 --open

Ancak, bu liste bağlantı noktaları HERHANGİ BİR açık olan ana bilgisayarlar listeler, oysa ben bağlantı noktaları TÜM açık olan ana bilgisayarlar istiyorum. Ayrıca, çıktı oldukça ayrıntılıdır:

# 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

Ne aradığım çıktı gibi:

192.168.1.16

Yukarıdaki ana bilgisayar TÜM bağlantı noktaları açık olan tek ana bilgisayardır.

Kesinlikle çıktı sonrası işlem yapabilir, ancak nmap çıktı biçimine güvenmek istemiyorum, bir yolu varsa, nmap bunu yapmak istiyorum.


Yalnızca bir bağlantı noktasını test etmek isterseniz, 'nmap -p 22 | grep -B3 open 'kolay bir yoldur.
Luciano Andress Martini

Yanıtlar:


10

Nmap içinde bunu yapmanın bir yolu yoktur, ancak "nmap çıktı biçimine güvenmek istememe" hakkındaki yorumunuz, Nmap'ın makine tarafından okunabilir ayrıştırma için iki kararlı çıktı biçimine sahip olduğunu belirtmeme izin verir. Daha büyük olanı perl, awk ve grep ile işlemek için iyi çalışan Grepable output ( -oG) , ancak daha gelişmiş çıktılardan bazılarını (NSE komut dosyası çıktısı, port nedenleri, traceroute vb.) Eksik. Daha eksiksiz biçim XML çıktısıdır ( -oX) , ancak amaçlarınız için aşırı kullanılabilir.

Şunları yapabilirsiniz biriyle dosyalara bu çıkışların tasarrufu -oG, -oXya -oA(her iki biçimi artı "normal" metin çıktısı) veya Stdout'a düz ikisinden birini gönderebilirsiniz:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'


1
Ben (arıyordu sadece ne, mükemmel -oG -)
Brian

2

Ayrıca bu awktek astarı da düşünün :

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}'

Aşağıdaki gibi tüm açık bağlantı noktalarına sahip tüm ana bilgisayarları yazdırır:

 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

Bunu test ettikten sonra -p eklemiş olmalısınız. Komut satırındaki '-', -oG
Wayne'in

1

Aşağıdaki komutu deneyin:

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

Bu, aralığınızdaki bağlantı noktalarını tarar ve çıktıyı açık bağlantı noktaları arayan açılabilir formatta yönlendirir, ardından bu ölçütlerden herhangi birine uyan IP adreslerini yazdırır.


U & L'ye hoş geldiniz! ~ 3 yıl önceki kabul edilen cevabın , grep ve print için awk kullandığı daha basit bir sürümü olduğunu unutmayın .
Jeff Schaller

1
Bağlantı noktası seçeneğinin ötesinde daha fazla bağlantı noktası için fazladan veri eklemenize gerek olmadığından, benimkinin daha iyi olduğunu iddia ediyorum. Onun, gereksiz yere ayrıntılı olan her port ile de awk'nizi güncellemenizi gerektirir.
Marshall Hallenbeck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.