关于nmap 导出结果为xml的处理办法-女黑客 - Powered by Discuz! Archiver

nvhack 发表于 2017-4-27 10:51:04

关于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]
查看完整版本: 关于nmap 导出结果为xml的处理办法