Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pywintrace — Python ctypes-обёртка для Event Tracing for Windows (ETW), обеспечивающая управление сеансами, захват событий и пользовательские обратные вызовы для мониторинга безопасности и криминалистического анализа. | Kitploit
Инструменты/GitHubGitHub/fireeye/pywintrace
Оборонительные ИнструментыЦифровая криминалистикаРазведка угрозРеагирование на ИнцидентыАнализ Журналов
GitHubfireeye/pywintrace

pywintrace

Python ctypes-обёртка для Event Tracing for Windows (ETW), обеспечивающая управление сеансами, захват событий и пользовательские обратные вызовы для мониторинга безопасности и криминалистического анализа.

Репозиторий
303613 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ETW (Event Tracing for Windows)

ETW — это механизм трассировки, позволяющий пользователю записывать события в файл или буфер. Обзор ETW можно найти здесь. Базовая архитектура включает поставщика (Provider), контроллер (Controller) и потребителя (Consumer). Контроллер определяет и управляет сеансом захвата. Это включает в себя то, какие поставщики входят в сеанс, а также запуск и остановку сеанса. Поставщик, задаваемый с помощью GUID (глобально уникального идентификатора), записывает события в серию буферов. Потребитель получает сообщения либо из буфера, либо из файла и обрабатывает их в хронологическом порядке.

Этот модуль представляет собой полностью Python-обёртку на основе ctypes вокруг Win32 API, необходимых для управления сеансами ETW и обработки данных сообщений. Модуль очень гибкий и позволяет задавать фильтры до или после захвата.

Использование

Чтобы использовать этот модуль, импортируйте etw и создайте экземпляр класса ETW, передав список экземпляров ProviderInfo для поставщика(ов), данные которых вы хотите захватывать. Для обработки данных, возвращаемых из ETW, вам потребуется указать функцию обратного вызова.

root@kitploit:~

import etw


def some_func():
    # define capture provider info
    providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]

    # create instance of ETW and start capture
    with etw.ETW(providers=providers, event_callback=etw.on_event_callback):
        # run capture
        etw.run('etw')

Ниже приведён пример использования модуля для выполнения захвата с помощью пользовательской функции обратного вызова.

root@kitploit:~

import time
import etw


def some_func():
    # define capture provider info
    providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]
    # create instance of ETW class
    job = etw.ETW(providers=providers, event_callback=lambda x: print(x))
    # start capture
    job.start()

    # wait some time
    time.sleep(5)

    # stop capture
    job.stop()

Наследование классов — ещё один удобный способ определения классов захвата ETW.

root@kitploit:~

import time
import etw


class MyETW(etw.ETW):

    def __init__(self, event_callback):
        # define capture provider info
        providers = [etw.ProviderInfo('Some Provider', etw.GUID("{11111111-1111-1111-1111-111111111111}"))]
        super().__init__(providers=providers, event_callback=event_callback)

    def start(self):
        # do pre-capture setup
        self.do_capture_setup()
        super().start()

    def stop(self):
        super().stop()
        # do post-capture teardown
        self.do_capture_teardown()

    def do_capture_setup(self):
        # do whatever setup for capture here
        pass

    def do_capture_teardown(self):
        # do whatever for capture teardown here
        pass


def my_capture():
    # instantiate class
    capture = MyETW(lambda x: print(x))
    # start capture
    capture.start()
    # wait some time to capture data
    time.sleep(5)
    # stop capture
    capture.stop()

Дополнительные примеры см. в разделе examples.

Скачать инструмент