使用python解析nmap xml报告

2024-09-29 17:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从以下XML文件中提取一些元素(精简nmap输出):

<?xml version="1.0"?>
<nmaprun>
<host starttime="1381245200" endtime="1381245316">
    <address addr="192.168.1.5" addrtype="ipv4"/>
    <hostnames>
      <hostname name="host1.example.com" type="PTR"/>
    </hostnames>
    <os>
        <osmatch>
        <osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="100">
          <cpe>cpe:/o:linux:linux_kernel:2.6</cpe>
        </osclass>
      </osmatch>
    </os>
  </host>
</nmaprun>

代码如下:

^{pr2}$

其思想是提取IP、主机名和操作系统。输出结果显示

UNKNOWN  address
UNKNOWN  hostnames/hostname
Linux

因此,最里面的路径(osfamily)起作用,而其他路径(hostname)则失败。打什么电话联系他们?在


Tags: 路径hostosaddresslinuxtypehostnameunknown
1条回答
网友
1楼 · 发布于 2024-09-29 17:21:24

我认为问题在于i.find(h['path'])的布尔比较。它检查该元素是否有子元素,并且它只发生在<osclass>中。您必须检查它是否为空,与None进行比较,例如:

...
e = i.find(h['path'])
if e is not None: print(e.get(h['el']))
...

它产生:

^{pr2}$

相关问题 更多 >

    热门问题