CN112463824A - 神通数据库select查询结果集的解析方法 - Google Patents
神通数据库select查询结果集的解析方法 Download PDFInfo
- Publication number
- CN112463824A CN112463824A CN201910839709.3A CN201910839709A CN112463824A CN 112463824 A CN112463824 A CN 112463824A CN 201910839709 A CN201910839709 A CN 201910839709A CN 112463824 A CN112463824 A CN 112463824A
- Authority
- CN
- China
- Prior art keywords
- field
- content
- bytes
- header
- byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种神通数据库select查询结果集的解析方法,包括:根据数据包的端口号,获取神通数据库的响应报文;根据响应内容第一字节的值,获取select语句查询的响应包;对不同类型的响应包,分别执行相应的表头部分解析流程;解析查询内容;将解析得到的表头部分与查询内容进行组合,得到完整的select查询结果集。以实现有效的数据库安全审计。
Description
技术领域
本发明属于网络安全与数据库技术领域,尤其是涉及实现神通数据库seclect查询结果集解析的方法。
背景技术
随着网络与信息技术的发展,很多生产经营过程中,会涉及到大量的数据,这些数据通常是被保存在各种数据库中,从而如何保证数据库安全,成为面对的重大课题。数据库审计就是一种最重要也是最有效的方式,是通过记载客户端访问数据库时的各类操作指令以及相应的操作结果,实现审计。通过分析记录各种操作指令的内容、操作用户、指令发送时间、指令的影响内容等信息,判断数据库的安全是否受到威胁;同时也可以分析生成审计日志,对审计日志进行分析发现哪些操作指令会影响数据库安全,从而做出相应的预防及阻断。
实现数据库的审计,首先面对的问题便是可以获取并解析得到客户端与数据库之间的交互数据内容,解析数据包通常是根据不同的数据库规定进行的,对于常见的应用比较广泛的商业数据库,其规则基本属于公开的技术,可以容易的获得和改进,而对于应用较少或较新的数据库,这种解析规则的实现细节没有公开也难以获得。
神通数据库是一种国产数据库产品,已逐渐应用在各种业务中,但是目前尚缺乏查询结果集的解析方法,从而无法进行安全审计。
发明内容
为了解决上述问题,提出一种解析方法,获取数据包后通过端口号过滤得到神通数据库的响应报文,分析数据库的报文规定,得出解析方法实现对select查询结果集的解析,以便实现进一步的数据库审计。具体的技术方案如下所述.
神通数据库select查询结果集的解析方法,包括:
S1.根据数据包的端口号,获取神通数据库的响应报文;
S2.根据响应内容第一字节的值,获取select语句查询的响应包;
S3.对不同类型的响应包,分别执行相应的表头部分解析流程;
S4.解析查询内容;
S5.将解析得到的表头部分与查询内容进行组合,得到完整的select查询结果集。
其中:
S3中,以n作为内容偏移字节数,在S2基础上偏移并获取第n+1至n+6字节的内容,判断其作为字符串的内容为“blank”或“JDBC_”,并分别执行各自的表头部分解析流程。
第一种,若字符串内容为“blank”:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移2字节,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节,从形式为“字段名-空字节-字段名-空字节-表名-空字节-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
所述表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由12个字节作为间隔;最后一个表头字段结构后,间隔11个字节,即为表的查询内容;
对所述间隔的12个字节与11个字节内容均不做处理。
第二种,若字符串内容为“JDBC_”:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节后,从形式为“字段长度-字段名-字段长度-字段名-表名长度-表名-数据库名长度-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由11个字节作为间隔;最后一个表头字段结构后,间隔10个字节,即为表的查询内容;
对所述间隔的11个字节与10个字节内容均不做处理。
上述两种表头部分解析流程的查询内容解析流程是一样的,包括:
S41.根据行开始符,分隔得到各行;
S42.根据行内的字段结构“字段长度+字段内容”,依次解析得到行内各字段的内容;所述字段长度包括表示字段长度与字段内容的字节数之和,其中表示字段长度的4个字节的值按整型数据进行解析;
S43.根据步骤S42,得到各行的所有字段内容;
S44.以行为单位、按解析顺序,对字段内容进行规整。
作为优选的,创建结果集表,将表头部分解析得到的各个字段名依次填入表头;根据表头的字段名,将查询内容部分解析得到的各行的字段内容依次填入表内相应位置,得到完整的select查询结果集。
以上的技术方案,通过抓包获取客户端与数据库的网络数据,经过对select查询结果的应用层报文的分析,得到神通数据库的报文内部规定,提出一种解析方法,从而能从报文中解析得到完整的结果集,以实现有效的安全审计。
附图说明
图1为神通数据库查询结果集的解析方法,总体流程示意图;
图2为神通数据库查询结果集的解析方法,实施例一的表头部分解析流程图;
图3为神通数据库查询结果集的解析方法,实施例二的表头部分解析流程图。
具体实施方式
协议是指在通讯和计算机网络中为了进行数据交换而建立的规则、标准或约定的集合,也即在通讯和计算机网络中所传输的数据包均按协议规定的格式进行拼接。例如协议中可以包括定义待解析数据包的结构体信息,结构体信息定义了数据包中每一位数据属于哪个协议字段,如数据包的第1至10位为包头部分,其中第1至4位为标识字段、第5至10位为属性信息字段,数据包的第11至50位为用户数据,其中用户数据的某些位又属于某个字段等等。
对于大部分场景下,所传输的数据包采用公开的通用协议,可以根据已知协议对数据包进行解析。但是在另一些场景中,所传输的数据包可能使用未知协议,例如自定义协议,在现有技术中则无法对采用未知协议的数据包进行解析。在数据库审计产品中,就会碰到采用某些数据库的情况,无法得知该类型数据库的相关协议,因此无法对与该数据库传输的数据包进行解析,数据库安全审计实际上就形同虚设。神通数据库(实际应用中,也称Oscar数据库)就是一种典型的国产数据库,现有技术暂时无法实现对其查询结果集进行有效解析。
基于以上技术背景,本发明提出了神通数据库的查询结果集的解析方法。
如图1所示,神通数据库select查询结果集的解析方法,包括:
S1.根据数据包的端口号,获取神通数据库的响应报文;
S2.根据响应内容第一字节的值,获取select语句查询的响应包;
S3.对不同类型的响应包,分别执行相应的表头部分解析流程;
S4.解析查询内容;
S5.将解析得到的表头部分与查询内容进行组合,得到完整的select查询结果集。
下面以实施例进行详细说明。
实施例一
神通数据库select查询结果集的解析方法实施例一,包括:
S1.根据数据包的端口号,获取神通数据库的响应报文;
例如,神通数据库的端口号默认为“2003”,对于被抓取的网络数据,从其报文的传输层可以取得端口号,而根据端口号可以过滤掉其他报文,从而得到神通数据库的响应报文。
S2.根据响应内容第一字节的值,获取select语句查询的响应包;
select语句查询结果的报文,其响应内容的第一个字节的值为0x50,因此根据该值可以筛选出select语句查询的响应包。
S3.以n作为内容偏移字节数,在S2基础上偏移并获取第n+1至n+6字节的内容,将该内容作为字符串“blank”,对该响应包的表头部分的解析过程包括:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移2字节,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节,从形式为“字段名-空字节-字段名-空字节-表名-空字节-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
所述表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由12个字节作为间隔;最后一个表头字段结构后,间隔11个字节,即为表的查询内容;
对所述间隔的12个字节与11个字节内容均不做处理。
S4.解析查询内容;
S41.根据行开始符,分隔得到各行;
S42.根据行内的字段结构“字段长度+字段内容”,依次解析得到行内各字段的内容;所述字段长度包括表示字段长度与字段内容的字节数之和,其中表示字段长度的4个字节的值按整型数据进行解析;
S43.根据步骤S42,得到各行的所有字段内容;
S44.以行为单位、按解析顺序,对字段内容进行规整。
作为一种优选实施方式,创建一个结果集表,将表头部分解析得到的各个字段名依次填入表头;根据表头的字段名,将查询内容部分解析得到的各行的字段内容依次填入表内相应位置,得到完整的select查询结果集。
实施例二
神通数据库select查询结果集的解析方法实施例二,包括:
S1.根据数据包的端口号,获取神通数据库的响应报文;
例如,神通数据库的端口号默认为“2003”,对于被抓取的网络数据,从其报文的传输层可以取得端口号,而根据端口号可以过滤掉其他报文,从而得到神通数据库的响应报文。
S2.根据响应内容第一字节的值,获取select语句查询的响应包;
select语句查询结果的报文,其响应内容的第一个字节的值为0x50,因此根据该值可以筛选出select语句查询的响应包。
S3. 以n作为内容偏移字节数,在S2基础上偏移并获取第n+1至n+6字节的内容,将该内容作为字符串“JDBC_”。JDBC(JavaDatabase Connectivity)表示Java查询引擎连接,由一组用Java编程语言编写的类和接口组成,JDBC为Java程序访问关系型查询引擎提供了编程接口,为查询引擎开发人员提供了一个标准的API,使他们能够用JavaAPI 来编写查询引擎应用程序,而不必为访问不同查询引擎编写不同的程序。
对该响应包的表头部分的解析过程包括:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移2字节,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节,从形式为“字段名-空字节-字段名-空字节-表名-空字节-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
所述表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由12个字节作为间隔;最后一个表头字段结构后,间隔11个字节,即为表的查询内容;
对所述间隔的12个字节与11个字节内容均不做处理。
S4.解析查询内容;
S41.根据行开始符,分隔得到各行;
S42.根据行内的字段结构“字段长度+字段内容”,依次解析得到行内各字段的内容;所述字段长度包括表示字段长度与字段内容的字节数之和,其中表示字段长度的4个字节的值按整型数据进行解析;
S43.根据步骤S42,得到各行的所有字段内容;
S44.以行为单位、按解析顺序,对字段内容进行规整。
作为一种优选实施方式,创建一个结果集表,将表头部分解析得到的各个字段名依次填入表头;根据表头的字段名,将查询内容部分解析得到的各行的字段内容依次填入表内相应位置,得到完整的select查询结果集。
实施例三
例如,数据库中存在以下一个数据表(表1),其表名为“test”,数据库名为“system”,对其select查询结果集的解析流程进行详细说明。
表1
现在发起一次select查询,包括查询“id=2”的内容,对数据库的响应包的解析流程包括:
首先,神通数据库的响应报文,端口号默认为“2003”,根据该端口号筛选出待分析的响应报文。
其次,对于select查询的响应,根据响应报文内容的第一个字节的值“0x50”,即可筛选出select语句的查询结果。
接下来,将n作为响应包内容偏移字节数,获取第n+1到第n+6个字节内容,将其作为一个字符串,进行判断,若字符串内容为“blank”,其表头部分的解析流程为:
在字符串之后20个字节内查找值为0x54 的字节,找到之后,再向后偏移2个字节,下一个字节的值即为查询结果的字段个数,在本实施例中,其字段个数为3个;
再偏移1个字节,后面的内容依次为“字段名,空字节,字段名,空字节,表名,空字节,数据库名”,在本实施例中为以下的表头字段结构:
id空id空test空system、name空name空test空system、age空age空test空system;其中每个表头字段结构之间间隔12个字节,最后一个表头字段结构之后,间隔11个字节为查询内容。
查询内容的解析过程:查询内容为二维格式数据,第一维为行,第二维为列;每一行以字节值0x44开始,然后间隔一个字节,行内多个字段采用LV格式进行传输,L为字段长度,V为字段内容。其中,L按四字节整形数据解析,解析后的值为Llength+LValue。其中Llength为L部分长度,LValue为V部分长度;根据字段个数和每个字段组成格式,即可解析得到每一行的内容;再根据行开始符“0x44”,即可获取到完整查询内容。
具体到本实施例中,只查询1行,以0x44确定查询内容开始,间隔一个字节后,根据各字段内容的组成方式“LV”,因此按照该格式可依次解析得到各个字段内容,即各字段内容分别是“2”、“li”、“22”。
作为一个优选的实施方式,创建一个创建结果集表(如表2),将表头部分解析得到的各个字段名依次填入表头,即将;根据表头的字段名,将查询内容部分解析得到的各行的字段内容依次填入表内相应位置,得到完整的select查询结果集。同时,将此次查询对应的表名“test”、数据库名“system”进行保存,以便被审计。
表2
所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.神通数据库select查询结果集的解析方法,其特征在于,包括:
S1.根据数据包的端口号,获取神通数据库的响应报文;
S2.根据响应内容第一字节的值,获取select语句查询的响应包;
S3.对不同类型的响应包,分别执行相应的表头部分解析流程;
S4.解析查询内容;
S5.将解析得到的表头部分与查询内容进行组合,得到完整的select查询结果集。
2.根据权利要求1所述的查询结果集解析方法,其特征在于,以n作为内容偏移字节数,在S2基础上偏移并获取第n+1至n+6字节的内容,判断其作为字符串的内容为“blank”或“JDBC_”,并分别执行不同的表头部分解析流程。
3.根据权利要求2所述的查询结果集解析方法,其特征在于,若字符串内容为“blank”:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移2字节,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节,从形式为“字段名-空字节-字段名-空字节-表名-空字节-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
所述表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由12个字节作为间隔;最后一个表头字段结构后,间隔11个字节,即为表的查询内容;
对所述间隔的12个字节与11个字节内容均不做处理。
4.根据权利要求2所述的查询结果集解析方法,其特征在于,若字符串内容为“JDBC_”:
从n+7开始的20个字节中查找出值为0x54的字节作为表头标识字节,向后偏移,获取第3字节的值,将该值还原为查询结果的字段个数;
继续偏移1字节后,从形式为“字段长度-字段名-字段长度-字段名-表名长度-表名-数据库名长度-数据库名”的表头字段结构中依次还原出各个字段名、表名与数据库名;
表头字段结构的数量与表头部分字段的个数一致;各个表头字段结构之间由11个字节作为间隔;最后一个表头字段结构后,间隔10个字节,即为表的查询内容;
对所述间隔的11个字节与10个字节内容均不做处理。
5.根据权利要求3或4所述的查询结果集解析方法,其特征在于,所述查询内容的解析过程包括:
S41.根据行开始符,分隔得到各行;
S42.根据行内的字段结构“字段长度+字段内容”,依次解析得到行内各字段的内容;所述字段长度包括表示字段长度与字段内容的字节数之和,其中表示字段长度的4个字节的值按整型数据进行解析;
S43.根据步骤S42,得到各行的所有字段内容;
S44.以行为单位、按解析顺序,对字段内容进行规整。
6.根据权利要求5所述的查询结果集解析方法,其特征在于,创建结果集表,将表头部分解析得到的各个字段名依次填入表头;根据表头的字段名,将查询内容部分解析得到的各行的字段内容依次填入表内相应位置,得到完整的select查询结果集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839709.3A CN112463824A (zh) | 2019-09-06 | 2019-09-06 | 神通数据库select查询结果集的解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839709.3A CN112463824A (zh) | 2019-09-06 | 2019-09-06 | 神通数据库select查询结果集的解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112463824A true CN112463824A (zh) | 2021-03-09 |
Family
ID=74806792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910839709.3A Pending CN112463824A (zh) | 2019-09-06 | 2019-09-06 | 神通数据库select查询结果集的解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463824A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114157501A (zh) * | 2021-12-08 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 一种基于天睿数据库的参数解析方法及装置 |
-
2019
- 2019-09-06 CN CN201910839709.3A patent/CN112463824A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114157501A (zh) * | 2021-12-08 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 一种基于天睿数据库的参数解析方法及装置 |
CN114157501B (zh) * | 2021-12-08 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种基于天睿数据库的参数解析方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391881B (zh) | 一种基于分词算法的日志解析方法及系统 | |
CN103297435B (zh) | 一种基于web日志的异常访问行为检测方法与系统 | |
JP5496896B2 (ja) | ログデータ内の関連するイベントを検索する方法 | |
CN106982150B (zh) | 一种基于Hadoop的移动互联网用户行为分析方法 | |
US7953082B2 (en) | Method and system for packet classification with reduced memory space and enhanced access speed | |
CN103281213A (zh) | 一种网络流量内容提取和分析检索方法 | |
US20060280178A1 (en) | Script-based parser | |
CN106528674B (zh) | 基于Hbase行健的高性能查询方法和装置 | |
CN109670081A (zh) | 业务请求处理的方法及装置 | |
CN110891030B (zh) | 一种基于机器学习的http流量特征识别与提取方法 | |
CN102427428A (zh) | 基于多域最长匹配的流识别方法及设备 | |
CN109614518A (zh) | 一种网络流量数据存储、还原方法及系统 | |
CN111444096A (zh) | 一种接口测试用例生成方法及装置 | |
CN109144514B (zh) | Json格式数据解析存储方法及装置 | |
US20210185059A1 (en) | Label guided unsupervised learning based network-level application signature generation | |
CN103188267A (zh) | 一种基于dfa的协议解析方法 | |
CN112463824A (zh) | 神通数据库select查询结果集的解析方法 | |
US20080062989A1 (en) | Smart match search method for captured data frames | |
CN110020243A (zh) | 物联网数据的查询方法、装置、物联网服务器和存储介质 | |
CN111198806B (zh) | 基于服务开放平台的服务调用数据统计分析方法及系统 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN110413861B (zh) | 基于网络爬虫的链接提取方法、装置、设备及存储介质 | |
EP1710718B1 (en) | Systems and methods for performing streaming checks on data format for UDTs | |
CN107491538A (zh) | 一种db2数据库的存储过程命令及参数值提取方法 | |
CN112069305A (zh) | 数据筛选方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210309 |
|
WD01 | Invention patent application deemed withdrawn after publication |