Windows的事件日志都存放在 事件日志是在windows上记录重要事件发生的特殊文件,当用户登录系统或者程序报错时,就会被记录。对 安装python_Evtx直接使用如下命令安装即可。 pip install python-evtx 如果没有安装pip,下载 get-pip.py python_Evtx 解析日志文件python_Evtx能够Evtx格式的日志文件解析成可读的XML文件 import mmap import contextlib from Evtx.Evtx import FileHeader from Evtx.Views import evtx_file_xml_view def MyFun(): EvtxPath = "D:Application.evtx" #日志文件的路径 with open(EvtxPath,'r') as f: with contextlib.closing(mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ)) as buf: fh = FileHeader(buf,0) # 构建一个xml文件,根元素是Events print "" print "" # 遍历事件 for xml, record in evtx_file_xml_view(fh): print xml print "" if __name__ == '__main__': MyFun() 输出的事件如下(只取了其中一个),有很多节点: 4625 0 4 0 0 0x0080000000000000 1 Application KEN-PC 86400 SuppressDuplicateDuration SoftwareMicrosoftEventSystemEventLog 我们需要着重关注的是EventID、EventData、TimeCreated。 这段脚本运行完毕后会将该文件所有的事件日志信息输出,但我们并不需要如此对所有的事件分析,只分析我们感兴趣的部分。下面就是我改进后的代码: import mmap import contextlib from Evtx.Evtx import FileHeader from Evtx.Views import evtx_file_xml_view from xml.dom import minidom def MyFun(): EvtxPath = "D:Application.evtx" with open(EvtxPath,'r') as f: with contextlib.closing(mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ)) as buf: fh = FileHeader(buf,0) print "" print "" for xml, record in evtx_file_xml_view(fh): #只输出事件ID为16384的内容 InterestEvent(xml,16384) print "" # 过滤掉不需要的事件,输出感兴趣的事件 def InterestEvent(xml,EventID): xmldoc = minidom.parseString(xml) # 获取EventID节点的事件ID eventID = xmldoc.getElementsByTagName('EventID')[0] if EventID == eventID: print xml if __name__ == '__main__': MyFun() 常见的一些事件ID
您可能也喜欢:
|
|