Конвертировать сохраненные файлы evtx в текст

Я хочу экспортировать большое количество сохраненных файлов журнала безопасности (.evtx) в текстовый или CSV-формат. Я обнаружил, что wevtutil может конвертировать.evt в.evtx только при работе с сохраненными файлами журнала:

wevtutil epl c:\logs\seclog.evtx c:\logs\seclog.txt /lf:true

Файл создается как seclog.txt, но в формате.evtx.

Можно ли конвертировать в текст или есть другой способ конвертировать файлы в текст так быстро? Я пробовал с Powershell, но это занимает слишком много времени.

Редактировать: Я посмотрел в Log Parser, и он также кажется быстрым, но он не экспортирует поле описания правильно:

The description for Event ID xxx in Source "Microsoft-Windows-xxxx" cannot be found. The local computer may not have the...

4 ответа

Решение

В конце я пошел с Log Parser для преобразования в CSV и затем [System.IO.File]::ReadLines($filename) для поиска по тексту. 800-мегабайтный файл.evtx можно преобразовать примерно за 2 минуты 30 секунд, а затем чтение файла займет около 2 минут. Возможно, это может быть более быстрый экспорт в XML или в базу данных, но это поможет мне с количеством времени, которое мне пришлось потратить.

$logparser = "c:\program files (x86)\Log Parser 2.2\logparser.exe"
$query = "SELECT * INTO c:\logs\logs.csv FROM c:\logs\logs.evtx"

& $logparser -i:evt -o:csv $query

Насколько я помню, LogParser не смог извлечь всю информацию о событиях (я имею в виду и System, и EventData, которые вы можете видеть в представлении xml для каждого события в EventViewer). Поэтому я пошел с PowerShell. Мой скрипт работает хорошо, но очень медленно: ему нужно около 80 секунд, чтобы преобразовать файл размером 10 Мб.evtx...

$a = Get-Item *.evtx
$output_file = [System.IO.StreamWriter] $("all.csv")
foreach($file in $a){
    $events = get-winevent -path $file.FullName

    foreach ($Event in $events) { 
        $xml = [xml]($Event.ToXml())

        foreach ($s in $xml.Event.System.ChildNodes) {
            $output_file.Write($s.Name + ":" + $s.InnerText + ",")
        }
        foreach ($d in $xml.Event.EventData.Data) {
            $text = $d.InnerText
            $text = if ($text) { $text.replace("`n","") } else { $text }
            $output_file.Write($d.Name + ":" + $text + ",")
        }
        $output_file.WriteLine()
    }
}

$output_file.Flush()
$output_file.Close()

Мне нужно было массово преобразовать кучу файлов .evtx в .txt. В конечном итоге я получил Log Parser для преобразования в .csv (который затем я могу переименовать в .txt), но самый простой способ (и использует только собственные инструменты Windows) был использовать .

wevtutil /qe File.evtx /lf: trueоткроет и отобразит файл .evtx в cmd. Все, что вам нужно сделать, это заставить его выводить результат в формате .txt!

wevtutil /qe File.evtx /lf: true > File.txt

Я создал пакетный скрипт, который будет рекурсивно проверять папку на наличие всех ваших датированных файлов событий и конвертировать каждый файл .evtx в файл .txt внутри этой папки:

      set spath=\\SERVER\Share\Audits
set eventLogDir="dir /B /s %spath% | findstr  \.evtx$"
FOR /F %%d in ('%eventLogDir%') do wevtutil qe %%d /lf:true > %%d.txt

Изменить. Я понял, что вывод запроса изwevtutilчитать не очень приятно. Используя вместо этого Log Parser с моим сценарием, я смог получить более приятный результат и сохранить его с помощью .txt.

      set spath=\\SERVER\Share\Audits
set eventLogDir="dir /B /s %spath% | findstr  \.evtx$"
FOR /F %%d in ('%eventLogDir%') do "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "Select * into %%d.txt from %%d" -i:evt -o:csv

Если вы ищете способ конвертировать файлы EVTX «укажи и щелкни», вы можете попробовать Gigasheet. Это веб-приложение, которое анализирует EVTX, и вы можете экспортировать данные в формат CSV. Вы можете загружать до 99 файлов одновременно, а файлы размером до 10 ГБ можно загружать бесплатно.

Полная информация здесь:https://www.gigasheet.co/post/online-evtx-parser-and-viewer

Наш анализ в Gigasheet основан на парсере Rust EVTX от @omerbenamram. Судя по тестам на Github, производительность должна быть отличной для большинства приложений: https://github.com/omerbenamram/evtx .

Полное раскрытие: я соучредитель Gigasheet.

Другие вопросы по тегам