windwos 系统安全日志监视系统

思路:

该脚本使用 python 的 evtx 库,对 windwos 的系统日志进行读取和比对,当发现系统日志中的信息被删除则出现弹框进行提示

源代码分享

#-*-coding:utf-8-*-
import mmap
import contextlib
import Tkinter  #弹窗库
import tkMessageBox #弹窗信息库
from Evtx.Evtx import FileHeader
from Evtx.Views import evtx_file_xml_view
import ctypes 
whnd = ctypes.windll.kernel32.GetConsoleWindow()
if whnd != 0:
	ctypes.windll.user32.ShowWindow(whnd,0)
	ctypes.windll.kernel32.CloseHandle(whnd)
output = open("1.txt","r")
number = output.read()
output.close()
output = open("1.txt","w")
count = 1
EvtxPath = "security.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 "Please wating..."
        for xml, record in evtx_file_xml_view(fh):
            count = count+1 
output.write(str(count))
output.close()
if int(count) >= int(number):
    print "No change"
else:
    def show():
        tkMessageBox.showinfo(title='日志更改提醒', message='日志更改')
    show()
exit()

使用 vbs 脚本在调用 py,并隐藏窗口运行

set ws = WScript.CreateObject("WScript.Shell")
ws.Run "python evtx2.py",0

后续工作

使用 windows 系统计划任务管理器设置定时任务,每隔一段时间运行一次脚本,发现系统日志中的信息被删除则发出报警