2017-08-01 87 views
0

我想使用NMAP檢測運行Telnet和SSH的所有主機,即使它們沒有使用默認端口。然後,我想將NMAP的輸出發送到一個文件,該文件定義NCRACK使用的非標準服務。
我運行NMAP與-sV開關來檢測版本,並​​獲得與此類似:爲ncrack解析nmap輸出使用

Nmap scan report for 192.168.1.1 
Host is up (0.0019s latency). 
Not shown: 996 closed ports 
PORT STATE SERVICE VERSION 
22/tcp open ssh  Dropbear sshd 2015.67 (protocol 2.0) 
23/tcp open telnet? 

Nmap scan report for 192.168.1.133 
Host is up (0.0048s latency). 
Not shown: 998 closed ports 
PORT  STATE SERVICE VERSION 
2323/tcp open telnet Linux telnetd 
4444/tcp open ssh  (protocol 2.0) 

我需要處理此輸出,創建一個這樣的文件:

ssh://192.168.1.1:22 
ssh://192.168.1.133:4444 
telnet://192.168.1.1:23 
telnet://192.168.1.133:2323 

我明白使用NMAP XML輸出和xmllint會有所幫助,但在此之後我卡住了。

在此先感謝您的幫助。

+0

你需要堅持bash嗎?因爲字面上任何更全面的編程語言都應該更好地處理這個問題。我發現用於處理來自shell的XML的唯一工具是[xmlsh](http://www.xmlsh.org/Commands),不確定這是否更容易成爲您的依賴項。 – millimoose

+0

但是,我不認爲SO上的人會最終爲你寫腳本。從你的問題來看,你還不清楚你甚至看過XML輸出,看看你需要哪些部分。 – millimoose

+0

@millimoose我已經看過XML輸出,但交互式輸出對於提出問題的目的似乎更具可讀性。 – Gezzaroy

回答

0
nmap -sv | awk '/Nmap scan/ { ip=$5 } /ssh/ { split($1,arg,"/");print "ssh://"ip":"arg[1] } /telnet/ { split($1,arg,"/");print "telnet://"ip":"arg[1] }' 

檢查「Nmap scan」的模式匹配,然後將IP地址存儲在變量ip中。然後檢查ssh或telnet的模式匹配,將第一個空格分隔的數據片段拆分爲數組arg。打印arg的第一個元素以及ip地址和單詞telnet或ssh。

輸出:

ssh://192.168.1.1:22 
telnet://192.168.1.1:23 
telnet://192.168.1.133:2323 
ssh://192.168.1.133:4444 
+0

這工作完美。謝謝。 – Gezzaroy

0

你正在做太多的工作:Ncrack can already parse Nmap's XML format直接,根據-sV檢測服務的名義處理每個打開的端口。

nmap -oX scan.xml -sV 192.168.1.0/24 
ncrack -iX scan.xml 
+0

謝謝,這個工程也很棒,而且簡單很多,所以應該是正確的答案。但是我問拉曼這個問題的方式應該得到公認的答案。 – Gezzaroy