解析ncrack使用的nmap输出

时间:2017-08-01 10:01:44

标签: xml bash nmap

我想使用NMAP检测所有运行Telnet和SSH的主机,即使它们没有使用默认端口。然后我想将NMAP的输出发送到一个文件,该文件定义了NCRACK要使用的非标准服务 我使用-sV开关运行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会有所帮助,但之后我就卡住了。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您正在做太多工作:Ncrack can already parse Nmap's XML format直接处理,根据-sV检测到的服务名称处理每个开放端口。

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