本申请涉及日志查询,尤其涉及一种基于字节流的evtx格式系统日志查询方法及系统。
背景技术:
1、evtx文件是微软从windows nt 6.0开始采用的一套全新的日志文件格式,基于这些日志可以了解到目标主机的运行动态,日志具体包含系统日志、应用程序日志及安全日志,由windows事件查看器创建,包含windows记录的事件列表,并以专有的xml格式保存。
2、由于evtx是微软定制的一套日志文件存储格式,软件研发人员若想读取本地的evtx格式文件只能在windows平台上调用微软提供的api才能读取到操作系统的运行日志,且微软提供的api只能读取当前主机生成的evtx格式文件,无法读取从其他主机拷贝过来的evtx格式文件,且由于是windows定制,linux平台尚无有效api来进行evtx的文件解析。另外,利用第三方工具可实现对系统运行日志的初步分析,但对软件研发人员来说无法直接操作日志文件本身,若想自己定制一套系统运行日志分析软件,则需要在第三方工具的基础上进行二次开发。
3、因此,亟需一种基于字节流的evtx格式系统日志查询方法及系统,以解决操作日志文件时,windows平台上调用微软提供的api只支持当前系统自己生成的日志文件,不支持额外文件及跨linux平台,另外,使用第三方工具操作日志文件时,需要在第三方工具的基础上进行二次开发,进而过程较为繁琐的问题。
技术实现思路
1、针对现有技术的上述不足,本申请提供一种基于字节流的evtx格式系统日志查询方法及系统,以解决操作日志文件时,windows平台上调用微软提供的api只支持当前系统自己生成的日志文件,不支持额外文件及跨linux平台,另外,使用第三方工具操作日志文件时,需要在第三方工具的基础上进行二次开发,进而过程较为繁琐的问题。
2、第一方面,本申请提供了一种基于字节流的evtx格式系统日志查询方法,方法包括:通过预设对外暴露的api获取解析数据;其中,解析数据包括非自动生成的额外文件和跨平台文件;获取解析数据对应的平台类型,使预设对外暴露的api注册系统类型对应的运行时库;其中,平台类型至少分为:windows平台、linux平台,运行时库分为dll运行时库和so运行时库,且运行时库至少包括执行程序、日志详细回调;通过执行程序,打开解析数据,顺序读取解析数据对应的字节流,进而依次确定读取出的字节流是否存在evtx文件的标识头;确定存在evtx文件的标识头的字节流匹配成功,调用evtx文件存储格式解析程序,从匹配成功的字节流中解析获得若干日志文件;通过回调函数,将若干日志文件返回用户端。
3、进一步地,通过预设对外暴露的api获取解析数据,具体包括:通过对外暴露的api,获取非自动生成的额外文件来源的完整路径或跨平台文件来源的磁盘号。
4、进一步地,打开解析数据,顺序读取解析数据对应的字节流,具体包括:当解析数据为非自动生成的额外文件时,按照非自动生成的额外文件的写入顺序读取字节流;当解析数据为跨平台文件时,打开跨平台文件对应的磁盘号,按照存储顺序读取字节流。
5、进一步地,运行时库还包括状态信息回调;在通过执行程序,打开解析数据之前,方法还包括:当遇到错误及无法解析的情况,进而无法打开解析数据时,通过已经预先注册的状态信息回调,向用户上报无法打开解析数据的信息。
6、进一步地,so运行时库还包括进度回调;在顺序读取解析数据对应的字节流时,方法还包括:通过已经预先注册的进度回调,向用户实时上报当前读取解析数据的进度。
7、进一步地,so运行时库包括文件回写回调,在调用evtx文件存储格式解析程序,从匹配成功的字节流中解析获得若干日志文件后,方法还包括:将若干日志文件回写到预设目录,并触发已经预先注册的文件回写回调,将当前回写若干日志文件的绝对路径及写入状态上报给用户。
8、进一步地,方法还包括:将运行结果以异步的形式报告给用户,告知用户当前运行结果;其中,运行结果分为解析成功或解析失败。
9、第二方面,本申请提供了一种基于字节流的evtx格式系统日志查询系统,系统包括:数据确定模块,用于通过预设对外暴露的api获取解析数据;其中,解析数据包括非自动生成的额外文件和跨平台文件;对外暴露的头文件模块,用于获取解析数据对应的平台类型,使预设对外暴露的api注册系统类型对应的运行时库;其中,平台类型至少分为:windows平台、linux平台,运行时库分为dll运行时库和so运行时库,且运行时库至少包括执行程序、日志详细回调;运行时库,且运行时库包括:dll运行时库和so运行时库,用于通过执行程序,打开解析数据,顺序读取解析数据对应的字节流,进而依次确定读取出的字节流是否存在evtx文件的标识头;确定存在evtx文件的标识头的字节流匹配成功,调用evtx文件存储格式解析程序,从匹配成功的字节流中解析获得若干日志文件;通过回调函数,将若干日志文件返回用户端。
10、进一步地,so运行时库还包括进度回调单元;用于通过已经预先注册的进度回调,向用户实时上报当前读取解析数据的进度。
11、进一步地,so运行时库包括文件回写回调单元,用于将若干日志文件回写到预设目录,并触发已经预先注册的文件回写回调,将当前回写若干日志文件的绝对路径及写入状态上报给用户。
12、本领域技术人员能够理解的是,本申请至少具有如下有益效果:
13、本申请提出了一种基于字节流的evtx格式系统日志查询方法及系统,通过预设对外暴露的api获取解析数据,实现了读取非自动生成的额外文件来源和跨平台文件来源的解析数据;通过获取解析数据对应的平台类型,使预设对外暴露的api注册系统类型对应的运行时库,这里运行时库分为dll运行时库(支持windows平台文件解析)和so运行时库(支持linux平台文件解析),利用运行时库内设的执行程序、日志详细回调,实现了通过运行对应的运行时库,打开解析数据(额外文件或跨平台文件),顺序读取解析数据对应的字节流,在evtx文件的标识头匹配成功后,从匹配成功的字节流中解析获得若干日志文件,实现了有效的获取额外文件或跨平台文件对应的日志文件。解决了操作日志文件时,windows平台上调用微软提供的api只支持当前系统自己生成的日志文件,不支持额外文件及跨linux平台的问题。另外,本申请不涉及第三方工具的使用,避免了使用第三方工具操作日志文件时,需要在第三方工具的基础上进行二次开发,进而过程较为繁琐的问题。
1.一种基于字节流的evtx格式系统日志查询方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,通过预设对外暴露的api获取解析数据,具体包括:
3.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,打开解析数据,顺序读取解析数据对应的字节流,具体包括:
4.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,运行时库还包括状态信息回调;
5.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,so运行时库还包括进度回调;
6.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,so运行时库包括文件回写回调,
7.根据权利要求1所述的基于字节流的evtx格式系统日志查询方法,其特征在于,所述方法还包括:
8.一种基于字节流的evtx格式系统日志查询系统,其特征在于,所述系统包括:
9.根据权利要求8所述的基于字节流的evtx格式系统日志查询系统,其特征在于,so运行时库还包括进度回调单元;
10.根据权利要求8所述的基于字节流的evtx格式系统日志查询系统,其特征在于,so运行时库包括文件回写回调单元,
