关于nmap 导出结果为xml的处理办法
在一家公司做项目,同事把nmap结果导出为xml,因为要对同一端口,如21进行弱口令探测,需要整理成excel表格,ip:port形式xml格式如下,感觉很乱
<host starttime="1492997851" endtime="1492998179"><status state="up" reason="echo-reply" reason_ttl="61"/>
<address addr="192.168.0.133" addrtype="ipv4"/>
<hostnames>
</hostnames>
<ports><extraports state="filtered" count="65522">
<extrareasons reason="no-responses" count="65522"/>
</extraports>
<port protocol="tcp" portid="22"><state state="closed" reason="reset" reason_ttl="61"/><service name="ssh" method="table" conf="3"/></port>
<port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="http" product="VMware ESXi Server httpd" hostname="E1-VM001.ufh.com" method="probed" conf="10"><cpe>cpe:/o:vmware:esxi</cpe></service></port>
<port protocol="tcp" portid="427"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="svrloc" method="table" conf="3"/></port>
<port protocol="tcp" portid="443"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="http" product="VMware ESXi Server httpd" tunnel="ssl" method="probed" conf="10"><cpe>cpe:/o:vmware:esxi</cpe></service></port>
<port protocol="tcp" portid="902"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="vmware-auth" product="VMware Authentication Daemon" version="1.10" extrainfo="Uses VNC, SOAP" tunnel="ssl" method="probed" conf="10"/></port>
<port protocol="tcp" portid="2233"><state state="closed" reason="reset" reason_ttl="61"/><service name="infocrypt" method="table" conf="3"/></port>
<port protocol="tcp" portid="5988"><state state="closed" reason="reset" reason_ttl="61"/><service name="wbem-http" method="table" conf="3"/></port>
<port protocol="tcp" portid="5989"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="wbem" product="SBLIM Small Footprint CIM Broker" tunnel="ssl" method="probed" conf="10"><cpe>cpe:/a:standards_based_linux_instrumentation_project:sfcb</cpe></service></port>
<port protocol="tcp" portid="8000"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="http-alt" method="table" conf="3"/></port>
<port protocol="tcp" portid="8080"><state state="closed" reason="reset" reason_ttl="61"/><service name="http-proxy" method="table" conf="3"/></port>
<port protocol="tcp" portid="8100"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="tcpwrapped" method="probed" conf="8"/></port>
<port protocol="tcp" portid="8182"><state state="open" reason="syn-ack" reason_ttl="61"/><service name="vmware-fdm" tunnel="ssl" method="table" conf="3"/></port>
<port protocol="tcp" portid="8300"><state state="closed" reason="reset" reason_ttl="61"/><service name="tmi" method="table" conf="3"/></port>
</ports>
<times srtt="1866" rttvar="800" to="100000"/>使用php语言,按行读取文件
<?php
$file_path = "scan/ip2-result.xml";
$file = fopen($file_path, "r");
//输出文本中所有的行,直到文件结束为止。
global $ip;
while(! feof($file))
{
$line= fgets($file);//fgets()函数从文件指针中读取一行'
//echo $line;
preg_match("/address addr=\"(.+)\" addrtype=\"ipv4\"/", $line,$ips);//匹配IP
preg_match("/<port protocol=\"tcp\" portid=\"(.+)\"><state state=\"open\".+<service name=\"(\S+)\" /", $line,$port);//匹配端口
if ($ips) {
$ip = $ips;
}
if ($port) {
echo $ip.":".$port.":".$port;
echo '<br>';
}
}
fclose($file);
?>输出结果如图:
页:
[1]