zoukankan      html  css  js  c++  java
  • 2019-2020-2 20165325 李东骏 毕业设计 第四周总结

    2019-2020-2 20165325 李东骏 毕业设计 第四周总结

    目录

    本周任务&每日完成情况

    任务进展&已经解决的问题

    待解决的问题&下周计划

    代码托管情况


    本周任务&每日完成情况

    返回目录

    周一 周二 周三 周四 周五 周六 周天
    解决单独的evtx读取问题
    完成数据库日志文件读取核心程序
    解决单独的evtx读取问题
    解决单独的evtx读取问题
    翻译论文
    解决单独的evtx读取问题
    总结
    撰写博客
    托管代码

    任务进展&已经解决的问题

    返回目录

    解决单独的evtx读取问题

    能否读取指定的evtx文件是能否完成操作系统日志读取的关键。之前已经介绍过,由于是跨机读取,我的设计思路是向日志服务器共享本业务服务器的日志文件,日志服务器读取这个共享的日志文件,将数据写入设置在日志服务器的数据中心中,最后在Web前端向审计人员展示。

    因此,本模块核心程序的应该封装为:输入待读取的日志文件的路径&文件名,输出日志文件的信息(诸如eventId、RecordNumber、EventType、EventTime、EventCategory等等)。

    经过实践,发现java很难解决这个问题。因为java基本上没有留下这方面的接口,综合参考网上的资料,发现java调用Advapi32Util只能完成读取本机日志文件的功能,其输入为日志文件的种类:Application或Security或System;

    Advapi32Util.EventLogIterator iter = new Advapi32Util.EventLogIterator("Application");      //或Security或System
    

    调用方法如上,其执行效果是读取本机的日志文件,不能指定文件路径读取(比如说指定C:Users24771Desktop est4.evtx);可能有人尝试用这样读取:

    Advapi32Util.EventLogIterator iter = new Advapi32Util.EventLogIterator("C:\Users\24771\Desktop\test4.evtx");
    

    但是这是!不!行!的!不!行!的!不!行!的!

    程序确确实实会读取出来东西,但是你仔细对照日志文件内容你会发现文件内容对应不上;仔细观察你会发现:程序读取的是Application的日志内容!

    各位小伙伴各位看官,我可能水平有限。如果Advapi32Util能解决这个问题,请一定一定给我留言!谢谢!!!!

    --------------------------分割线--------------------------

    在多次失败之后,我请教了某赵姓大佬。我了解到可以使用Python解决这个问题,代码:

    import mmap
    import contextlib
    import re
    
    from Evtx.Evtx import FileHeader
    from Evtx.Views import evtx_file_xml_view
    
    def MyFun():
        longlat_list = []
        with open('route.txt', 'r', encoding='utf-8-sig') as f:
            for eachline in f:
                if eachline != '' and eachline != '
    ':
                    longlat = eachline.split('	')[0].split()[0]
                    longlat_list.append(longlat)
            f.close()
        EvtxPath = str(longlat_list[0]) #日志文件的路径
    
        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)
                    with open(str(longlat_list[1]), 'a', encoding='utf-8') as f:
                        f.write(str(xml))
                        f.write('
    ')
    
                print ("")
    
    if __name__ == '__main__':
        MyFun()
    

    程序编译为一个exe,他读取和自己同路径的route.txt文件,该文件内含evtx文件的输入路径和程序最终的输出txt路径,这个exe文件将指定的日志文件内容写入txt,以xml的格式。

    下面是其中一条日志的输出效果:

    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="Microsoft-Windows-LoadPerf" Guid="{122ee297-bb47-41ae-b265-1ca8d1886d40}"></Provider>
    <EventID Qualifiers="">1001</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8000000000000000</Keywords>
    <TimeCreated SystemTime="2020-02-23 09:40:28.540165"></TimeCreated>
    <EventRecordID>267</EventRecordID>
    <Correlation ActivityID="" RelatedActivityID=""></Correlation>
    <Execution ProcessID="1400" ThreadID="1676"></Execution>
    <Channel>Application</Channel>
    <Computer>WIN-9GT205KDAUT</Computer>
    <Security UserID="S-1-5-18"></Security>
    </System>
    <UserData><EventXML xmlns:auto-ns2="http://schemas.microsoft.com/win/2004/08/events" xmlns="LoadPerf"><param1>WmiApRpl</param1>
    <param2>WmiApRpl</param2>
    <binaryDataSize>12</binaryDataSize>
    <binaryData>fhUAAH8VAAA0BwAA</binaryData>
    </EventXML>
    </UserData>
    </Event>
    

    最后用java修改route.txt文件并且启动exe即可得到上述数据,下一步需要做的就是提取、处理其中有用的信息。

    完成数据库日志文件读取核心程序

    所谓这个模块的核心程序,就是能把数据库服务器的GeneralLog、ErrorLog、SlowQueryLog采集&处理&读取到日志服务器的数据库中;

    因为每次刷新日志都是从头读取同一个日志文件,为了避免写入重复,我设置了计算了一条日志的SM3算法Hash作为主键;详情如图:

    翻译论文

    已翻译论文:


    待解决的问题&下周计划

    返回目录

    待解决的问题

    weblogic环境崩了,一夜回到解放前。

    evtx文件读取已经可以做到了,还没处理数据。

    下周主要任务

    • evtx文件读取并且处理数据
    • 调试weblogic环境

    代码托管情况

    返回目录

    代码文档提交过程&代码量截图

    码云链接

    https://gitee.com/maxeyscodes/bishe_logcheck

  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/maxeysblog/p/12543438.html
Copyright © 2011-2022 走看看