Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pywintrace — Python ctypes 封装,用于 Windows 事件跟踪(ETW),支持会话控制、事件捕获和自定义回调,适用于安全监控与取证分析。 | Kitploit
工具/GitHubGitHub/fireeye/pywintrace
防御工具数字取证威胁情报事件响应日志分析
GitHubfireeye/pywintrace

pywintrace

Python ctypes 封装,用于 Windows 事件跟踪(ETW),支持会话控制、事件捕获和自定义回调,适用于安全监控与取证分析。

查看仓库
303613年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ETW(Windows 事件跟踪)

ETW 是一种跟踪机制,允许用户将事件记录到文件或缓冲区中。有关 ETW 的概述可参见此处。其基本架构包括提供程序(Provider)、控制器(Controller)和消费者(Consumer)。控制器定义并控制捕获会话,包括会话中包含哪些提供程序,以及启动和停止会话。提供程序使用 GUID(全局唯一标识符)指定,将事件记录到一系列缓冲区中。消费者从缓冲区或文件中接收消息,并按时间顺序处理它们。

该模块是一个完全基于 Python 的 ctypes 封装,围绕控制 ETW 会话和处理消息数据所需的 Win32 API 构建。该模块非常灵活,可以设置捕获前或捕获后的过滤器。

用法

要使用此模块,请导入 etw,并通过传入一个或多个 ProviderInfo 实例的列表来创建 ETW 类的实例,这些实例对应您希望从中捕获数据的提供程序。要处理从 ETW 返回的数据,您需要指定一个回调函数。

root@kitploit:~

import etw


def some_func():
    # 定义捕获提供程序信息
    providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]

    # 创建 ETW 实例并开始捕获
    with etw.ETW(providers=providers, event_callback=etw.on_event_callback):
        # 运行捕获
        etw.run('etw')

下面是一个使用该模块通过自定义回调执行捕获的示例。

root@kitploit:~

import time
import etw


def some_func():
    # 定义捕获提供程序信息
    providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]
    # 创建 ETW 类实例
    job = etw.ETW(providers=providers, event_callback=lambda x: print(x))
    # 开始捕获
    job.start()

    # 等待一段时间
    time.sleep(5)

    # 停止捕获
    job.stop()

子类化是定义 ETW 捕获类的另一种便捷方式。

root@kitploit:~

import time
import etw


class MyETW(etw.ETW):

    def __init__(self, event_callback):
        # 定义捕获提供程序信息
        providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]
        super().__init__(providers=providers, event_callback=event_callback)

    def start(self):
        # 执行捕获前设置
        self.do_capture_setup()
        super().start()

    def stop(self):
        super().stop()
        # 执行捕获后清理
        self.do_capture_teardown()

    def do_capture_setup(self):
        # 在此处执行捕获所需的任何设置
        pass

    def do_capture_teardown(self):
        # 在此处执行捕获所需的任何清理
        pass


def my_capture():
    # 实例化类
    capture = MyETW(lambda x: print(x))
    # 开始捕获
    capture.start()
    # 等待一段时间以捕获数据
    time.sleep(5)
    # 停止捕获
    capture.stop()

更多示例请参见示例。

下载工具