关于etl-parser
etl-parser是一款基于纯Python开发的事件追踪日志文件读取和解析工具。该工具基于纯Python 3 ETL Windows日志文件解析库实现其功能,而ETL则是ETW以及内核日志工具的默认格式。
ETL是Windows系统程序员大量使用的一种日志工具/格式,比如说:
C:\Windows\System32\WDI\LogFiles\BootPerfDiagLogger.etl C:\Windows\System32\WDI\LogFiles\ShutdownPerfDiagLogger.etl NetTrace.etl(netsh) C:\Windows\System32\WDI\<GUID>\<GUID>\snapshot.etl 其他...
很多新型的API都基于ETW实现,比如说Tracelogging或WPP等,而这些API都是微软开发者会经常使用的。
etl-parser不需要任何系统依赖,支持在Windows和Linux系统上运行。
etl-parser可以通过引入下列日志格式解析器来帮助广大研究人员解决各种问题:
ETW manifest base provider TraceLogging MOF for kernel log
广大研究人员可以直接使用下列命令将该项目源码克隆至本地
git clone https://github.com/airbus-cert/etl-parser.git
然后切换至项目目录中,并运行setup.py脚本进行工具安装:
git clone https://github.com/airbus-cert/etl-parser.git
cd etl-parser
pip install -e .
除此之外,我们也可以直接通过pip命令来安装etl-parser:
pip install etl-parser
etl-parser提供了两个功能脚本,第一个脚本为etl2xml,该脚本可以将所有已知的ETL事件转换为XML格式的数据:
etl2xml -i example.etl -o example.xml
第二个脚本为etl2pcap,该脚本负责将那些通过netsh创建的网络数据包转换为pcap文件格式:
netsh start trace capture=yes
netsh stop trace
etl2pcap -i NetTrace.etl -o NetTrace.pcap
当然了,你也可以将etl-parser以代码库的形式使用:
from etl.etl import IEtlFileObserver, build_from_stream
from etl.system import SystemTraceRecord
from etl.perf import PerfInfo
from etl.event import Event
from etl.trace import Trace
from etl.wintrace import WinTrace
class EtlFileLogger(IEtlFileObserver):
def on_system_trace(self, event: SystemTraceRecord):
"""Mof kernel message with Process Id and Thread Id"""
mof = event.get_mof() # Invoke MOF parser
def on_perfinfo_trace(self, event: PerfInfo):
"""Mof kernel message with timestamp"""
mof = event.get_mof() # Invoke MOF parser
def on_trace_record(self, event: Trace):
"""unknown"""
def on_event_record(self, event: Event):
"""ETW event this is what you search"""
# Choose the "parse_" function which corresponds to your event
message = event.parse_tracelogging() # Invoke TraceLogging parser
message = event.parse_etw() # Invoke Manifest based parser
def on_win_trace(self, event: WinTrace):
"""unknown"""
etw = event.parse_etw()
with open("example.etl", "rb") as etl_file:
etl_reader = build_from_stream(etl_file.read())
etl_reader.parse(EtlFileLogger())
本项目的开发与发布遵循Apache v2.0开源许可证协议。
https://github.com/airbus-cert/etl-parser
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有