查询 .evtx 转换为 .xml

问题描述

在使用 evtx_dump.py 将 .evtx 文件转换为 .xml 之后,我试图学习如何使用 XQuery 或任何帮助我使用 BaseX 数据挖掘文档的方法查询它。

此时无论我尝试什么,我都只能使用 //Events

查询整个文档

当我定义诸如 //Events/Event/System/[EventID = '4688'] 这样的路径时,我得到 0 个结果。

一个查询只是跟踪与特定值匹配的所有特定 EventID。

作为 BaseX 和 XQuery 的新手,我发现文档很难应用于这个用例。

我寻找工具来帮助我构建 XQuery 无济于事。

BaseX 启用了我能找到的所有索引功能

兄弟,

乔里斯

解决方法

当 XQuery 无法返回您期望的数据时,通常是由于存在 XML 名称空间造成的。

Microsoft XML 事件日志在事件节点上使用 XML 命名空间,并由其子节点继承。这是您可以在文件中看到的 xmlns='http://schemas.microsoft.com/win/2004/08/events/event'。例如

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Events><Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
   <System><Provider Name='SideBySide'/><EventID Qualifiers='49409'>59</EventID><Version>0</Version>
    ...

您的 XQuery 必须为此进行调整。要么说任何命名空间都可以(使用 *:

//*:System/[*:EventID = '4688'] 

或者通过明确指定预期的命名空间。

declare namespace ns="http://schemas.microsoft.com/win/2004/08/events/event";
/Events/ns:Event/ns:System[ns:EventID= '4688' ]

看到这个类似的问题xquery-not-working-with-namespaces