处理 nessus xml 文件的更多问题。
我有一些来自 nessus 的 xml 数据,这些数据将主机名等信息存储在 xml 标记中,可以使用此 xsl 标记提取这些信息:
<xsl:value-of select="../ReportItem[(@pluginID=12053)]/description"/>
那么唯一的问题是这个标签除了主机名之外还存储了一堆垃圾。例如,标签中通常包含以下信息:
概要:可以获取远程主机的网络名称。说明:远程主机侦听 UDP 端口 137 或 TCP 端口 445 并回复 NetBIOS nbtscan 或 SMB 请求。请注意,此插件收集要在其他插件中使用的信息,但它本身不会生成报告。解决方案:n/a 风险因素:无 插件输出:已收集以下 6 个 NetBIOS 名称:VOODOO1 = 计算机名称 VOODOO = 工作组/域名 VOODOO1 = 文件服务器服务 VOODOO = 浏览器服务选举 VOODOO = 主浏览器 MSBROWSE = 主浏览器远程主机在其适配器上具有以下 MAC 地址:10:50:56:ab:10:02
我感兴趣的唯一部分是“VOODOO1 = 计算机名称”部分。实际上,更准确地说,'=' 符号之前的内容。我想知道是否可以在标签的“选择”中使用正则表达式函数,例如:
<xsl:value-of select="regexp(../ReportItem[(@pluginID=12053)]/description,'\w =')"/>
这将提取与正则表达式匹配的唯一标记内容并显示它。现在我有标签显示的全部内容,这很烦人。我尝试使用各种变体
<xsl:analyze-string select="$elValue" regex="\w = ">
没有运气的标签。我不断收到错误消息说'不能是<td>
我尝试过的任何其他 xslt 元素的子标签,即 for-each 等。
提前致谢。
根据目前的反馈,这里是 nessus 生成的一些 xml
<ReportItem port="137" svc_name="netbios-ns?" protocol="udp" severity="1" pluginID="10150" pluginName="Windows NetBIOS / SMB Remote Host Information Disclosure" pluginFamily="Windows">
<description>Synopsis :
It is possible to obtain the network name of the remote host.
Description :
The remote host listens on UDP port 137 or TCP port 445 and replies to NetBIOS nbtscan or SMB requests.
Note that this plugin gathers information to be used in other plugins but does not itself generate a report.
Solution :
n/a
Risk factor :
None
Plugin output :
The following 6 NetBIOS names have been gathered :
VOODOO1 = Computer name VOODOO = Workgroup / Domain name VOODOO1 = File Server Service VOODOO = Browser Service Elections VOODOO = Master Browser
__MSBROWSE__ = Master Browser
The remote host has the following MAC address on its adapter :
01:a0:52:bf:0a:02
</description>
</ReportItem>`
<xsl:value-of select="regexp(../ReportItem[(@pluginID=12053)]/description,'\w =')"/>
这条线真的不行。我做了它,看看是否有人知道是否有类似的东西。它只会产生一个错误,因为我编造了它。