2011-08-11 61 views
0

好的,我想讓Nmap掃描某個端口打開的計算機的IP範圍(在這種情況下是端口80),並將其找到的所有IP輸出到文本文件中,存儲在這種格式:Nmap掃描範圍輸出文件問題

192.168.0.1 
192.168.0.185 
192.168.0.192 
192.168.0.195 

所以要輸出的文件,我嘗試使用這個命令:

nmap -sT -p 80 -ttl 40 192.168.0.0-255 -oG - | grep "80/open" > output.txt 

其中「output.txt的」是包含結果的輸出文件。所以output.txt中的行看起來 這樣的:

Host: 192.168.0.1() Ports: 80/open/tcp//http/// 

所以我基本上就只想輸出端口80開啓,而不是其他的IP地址。 我希望它不輸出「Host:」或「()」和「Ports:80/open/tcp // http ///」行。那麼無論如何,我可以讓Nmap不把這些東西放到輸出文件中?或者只讓 輸出IP地址?我試圖看看地圖頁面,這沒什麼幫助。而且我看了整個互聯網,這也不是很有用。那麼有人知道我該怎麼做?謝謝

回答

0

nmap產生正是你想要的確會很好。但作爲一個更廣泛的解決方案:

$ nmap ... | grep ... | tr '/' ' ' | awk '{ print $2,$5; } 
192.168.0.1 80 

或許:

nmap ... | grep ... | tr '/' ' ' | cut -d' ' -f2,8 
1

AWK是你的朋友!

$ nmap -sT -p 80 192.168.0.0/24 -oG - | awk '/ 80\/open/{print $2}' > output.txt 

這會發現打開端口80(前80注意空格,如果您打算掃描比一個端口更多!),並打印場2,在空格分割線。另一種方式來做到這一點是:

$ nmap -sT -p 80 --open 192.168.0.0/24 -oG - | awk '$4=="Ports:"{print $2}' > output.txt 

這一個使用--open參數的Nmap只產生輸出與開放端口的主機。在打印IP地址之前,awk命令會檢查這是「端口」行,而不是「狀態」行(可能僅在使用-v時顯示,但我不肯定)。

請注意,如果您決定提取一些不同的信息,通常會將掃描結果保存到文件中以避免需要重複掃描通常符合您的最佳利益。如果您選擇這樣做,我會建議使用XML輸出(-oX),因爲有很多分析工具已經爲其構建瞭解析器。

0

我發現一個名爲scanreport.sh的腳本非常有用。儘管沒有必要,但你可以按照建議使用awk,但認爲它可能是有趣的。

它提供了通過服務或端口(突出顯示)很好地輸出nmap結果的功能。它使用NMAP(-oG)的grep,能夠輸出後快速整齊的從grep -v ^# nmapoutput.txt > report.txt

例如在谷歌

nmap -sS 192.168.1.22 -oG /directory/of/choice/results.txt 

grep -v ^# results.txt > report.txt 

./scanreport.sh -f report.txt 

Host: 192.168.1.22() 
22 open tcp ssh OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0) 
80 open tcp http Apache httpd 2.2.14 ((Ubuntu)) 

./scanreport.sh -f report.txt -p 80 

Host: 192.168.1.22() 
80 open tcp http Apache httpd 2.2.14 ((Ubuntu)) 

./scanreport.sh -f report.txt -s ssh 

Host: 192.168.1.22() 
22 open tcp ssh OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0) 

大量的東西這件事,但是這裏一個參考的鏈接。

./scanreport.sh