Nmap chỉ có thể hiển thị các máy chủ với các cổng cụ thể mở?


18

Có thể nmapliệt kê tất cả các máy chủ lưu trữ trên mạng cục bộ có cả SSH và HTTP mở không? Để làm như vậy, tôi có thể chạy một cái gì đó như:

nmap 192.168.1.1-254 -p22,80 --open

Tuy nhiên, danh sách các máy chủ này có BẤT K of cổng danh sách nào được mở, trong khi tôi muốn các máy chủ mở TẤT CẢ các cổng. Ngoài ra, đầu ra khá dài dòng:

# 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

Những gì tôi đang tìm kiếm là đầu ra đơn giản như:

192.168.1.16

vì máy chủ ở trên là máy chủ duy nhất có TẤT CẢ các cổng được mở.

Tôi chắc chắn có thể xử lý hậu kỳ đầu ra, nhưng tôi không muốn dựa vào định dạng đầu ra của nmap, tôi muốn có nmap làm điều đó, nếu có một cách.


Nếu bạn chỉ muốn kiểm tra một cổng, 'nmap -p 22 | grep -B3 mở 'là một cách dễ dàng.
Luciano Andress Martini

Câu trả lời:


10

Không có cách nào để làm điều đó trong Nmap, nhưng nhận xét của bạn về việc không muốn "dựa vào định dạng đầu ra của nmap" cho phép tôi chỉ ra rằng Nmap có hai định dạng đầu ra ổn định để phân tích cú pháp có thể đọc được bằng máy. Cái cũ hơn là Grepable output ( -oG) , hoạt động tốt để xử lý với perl, awk và grep, nhưng thiếu một số đầu ra nâng cao hơn (như đầu ra tập lệnh NSE, lý do cổng, theo dõi, v.v.). Định dạng đầy đủ hơn là đầu ra XML ( -oX) , nhưng nó có thể quá mức cho mục đích của bạn.

Bạn có thể lưu các kết quả đầu ra này vào các tệp bằng -oG, -oXhoặc -oA(cả hai định dạng cộng với đầu ra văn bản "bình thường") hoặc bạn có thể gửi thẳng một tệp tới thiết bị xuất chuẩn:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'


1
Thật hoàn hảo, đúng như những gì tôi đang tìm kiếm (the -oG -)
Brian

2

Cũng xem xét awkmột trong những lót này:

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

Nó sẽ in cho bạn tất cả các máy chủ lưu trữ với tất cả các cổng được chỉ định như thế này:

 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

Bạn phải thêm -p sau khi thử nghiệm này. '-' trên dòng lệnh thuộc về ngay sau -oG
Wayne

1

Hãy thử lệnh sau:

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

Điều này sẽ quét các cổng của bạn trong phạm vi của bạn và đặt đầu ra ở định dạng có thể truy cập được để tìm các cổng mở, sau đó in các địa chỉ IP phù hợp với bất kỳ tiêu chí nào.


Chào mừng bạn đến với U & L! Lưu ý rằng câu trả lời được chấp nhận từ ~ 3 năm trước có phiên bản đơn giản hơn trong đó sử dụng awk để grep in.
Jeff Schaller

1
Tôi cho rằng của tôi là tốt hơn vì bạn không phải thêm dữ liệu cho nhiều cổng hơn ngoài tùy chọn cổng. Anh ấy yêu cầu bạn cập nhật awk của bạn với mỗi cổng, điều này là không cần thiết.
Marshall Hallenbeck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.