栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【script】python 解析 Windows日志(python-evtx)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【script】python 解析 Windows日志(python-evtx)

Windows日志 模块安装
pip install python-evtx
Windows日志 解析源码 源码
import mmap
import contextlib
from Evtx.Evtx import FileHeader
from Evtx.Views import evtx_file_xml_view
from xml.dom import minidom

def log_get(evtxpath):
    with open(evtxpath, 'r') as f:
        with contextlib.closing(mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)) as buf:
            content_dict = {}
            fh = FileHeader(buf, 0)
            # 遍历每条日志信息
            for xml, record in evtx_file_xml_view(fh):
                content_dict = {}
                domtree = minidom.parseString(xml)
                # 获取事件标准信息(System)
                content_dict['Channel'] = domtree.getElementsByTagName('Channel')[0].childNodes[0].data
                content_dict['SystemTime'] = domtree.getElementsByTagName('TimeCreated')[0].getAttribute('SystemTime')[:-7]
                content_dict['EventID'] = domtree.getElementsByTagName('EventID')[0].childNodes[0].data
                content_dict['Level'] = domtree.getElementsByTagName('Level')[0].childNodes[0].data
                content_dict['UserID'] = domtree.getElementsByTagName('Security')[0].getAttribute('UserID')
                content_dict['ProcessID'] = domtree.getElementsByTagName('Execution')[0].getAttribute('ProcessID')
                content_dict['Computer'] = domtree.getElementsByTagName('Computer')[0].childNodes[0].data
                # 获取事件详情信息(EventData)
                for data in domtree.getElementsByTagName('Data'):
                    if len(data.childNodes):
                        content_dict['EventData_' + data.getAttribute('Name')] = data.childNodes[0].data
                # 获取用户数据信息(UserData)
                userdata_dict = {'ServerName', 'UserName', 'Param1'}
                for userdata in userdata_dict:
                    if len(domtree.getElementsByTagName(userdata)):
                        content_dict['UserData_' + userdata] = domtree.getElementsByTagName(userdata)[0].childNodes[0].data
                content_list.append(content_dict)
        f.close()

log_get('./evt/Security.evtx')
解析

代码中的每个部分与事件查看器中xml形式的内容都是一一对应的,如下图所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号