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

  • 相关阅读:
    几个概率题
    几个智力题。。
    [算法]各种二分查找
    深入 JavaScript 时间对象 Date
    Leaflet 调用百度瓦片地图服务
    JavaScript中进制和字符编码问题
    DOM事件流
    flex 弹性布局
    javascript 闭包内部机制
    HTML DOM setAttribute()、与createAttribute()
  • 原文地址:https://www.cnblogs.com/maxeysblog/p/12543438.html
Copyright © 2011-2022 走看看