CN107491538A - 一种db2数据库的存储过程命令及参数值提取方法 - Google Patents

一种db2数据库的存储过程命令及参数值提取方法 Download PDF

Info

Publication number
CN107491538A
CN107491538A CN201710731586.2A CN201710731586A CN107491538A CN 107491538 A CN107491538 A CN 107491538A CN 201710731586 A CN201710731586 A CN 201710731586A CN 107491538 A CN107491538 A CN 107491538A
Authority
CN
China
Prior art keywords
storing process
data
order
database
parameter value
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.)
Granted
Application number
CN201710731586.2A
Other languages
English (en)
Other versions
CN107491538B (zh
Inventor
陆怀军
范渊
吴永越
郑学新
刘韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu DBAPPSecurity Co Ltd
Original Assignee
Chengdu DBAPPSecurity Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu DBAPPSecurity Co Ltd filed Critical Chengdu DBAPPSecurity Co Ltd
Priority to CN201710731586.2A priority Critical patent/CN107491538B/zh
Publication of CN107491538A publication Critical patent/CN107491538A/zh
Application granted granted Critical
Publication of CN107491538B publication Critical patent/CN107491538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2443Stored procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种DB2数据库的存储过程命令及参数值提取方法,包括:S1)DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包;S2)提取数据包的特征值,判断数据包是否为存储过程名称数据包或者存储过程参数数据包;S3)从所述存储过程名称数据包中解析、提取存储过程命令并和存储过程参数数据包交给存储过程解析模块;S4)从存储过程参数数据包中提取参数;S5)将提取的存储过程命令和存储过程命令参数值组合成完整命令。本发明通过捕获存储过程数据包、解析存储过程命令及参数值,还原出完整的数据库操作命令,即实现用户对数据库本身的操作的审计,而不单单限于对数据库内部数据操作的审计,提高了数据库运维审计的安全性。

Description

一种DB2数据库的存储过程命令及参数值提取方法
技术领域
本发明涉及信息安全技术领域,尤其涉及数据审计技术领域,具体的说,是一种DB2数据库的存储过程命令及参数值提取方法。
背景技术
IBM公司研发的DB2数据库是一款优秀的数据库产品,长期以来在金融、电信等行业中被大量使用,能够高效地对数据实行管理。通常一个单位有大批量的数据库服务器,需要多人协同管理,如何保障数据及数据库的安全,就需要一套有效的运维审计系统,它通过对业务系统中所有人员的业务操作进行解析、记录、分析,从而能够有效对当前网络活动进行实时监控和事后审查。目前对DB2数据库的审计主要集中在对数据的审计,如向表中添加数据、删除数据、更新数据等,这一类属于普通的SQL语句,它能够审计所有对数据库内部数据的操作,一般都可以直接从协议数据包中提取,不同的数据库产品其审计方式也基本相同,只要能从传输的数据中定位到SQL语句位置就可以很容易审计。但是它只会用于数据库内部数据操作,即它只局限在一个小的区域内,这对于一般的数据操作审计是足够的。数据库的安全不仅包含内部数据安全,也包含数据库本身的安全。如创建数据库、删除数据库、以及对数据库的不同设置等,如果忽略了数据库本身的安全是非常危险的。
发明内容
本发明的目的在于提供一种DB2数据库的存储过程命令及参数值提取方法,用于解决现有技术中运维审计系统无法审计数据库本身安全的问题。
为了达到上述目的,本发明通过下述技术方案实现:
一种DB2数据库的存储过程命令及参数值提取方法,包括:
S1)DB2协议审计系统中的DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包;
S2)所述DB2数据库协议模块检查、解析所述数据包,提取数据包的特征值,判断数据包是否为存储过程名称数据包或者存储过程参数数据包;
S3)所述DB2数据库协议模块从所述存储过程名称数据包中解析、提取存储过程命令,将存储过程命令和所述存储过程参数数据包交给存储过程解析模块;
S4)所述存储过程解析模块从存储过程参数数据包中提取存储过程命令参数;
S5)所述存储过程解析模块将提取的存储过程命令和存储过程命令参数值组合成完整命令。
工作原理:
DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包,解析,查看是否包含存储过程,存储过程为DB2数据库的一种操作命令,将包含存储过程的数据包截获,因为在DB2数据库中,存储过程命令和存储过程参数值是分开传输的,不在同一个数据包中,因此数据包捕获模块根据截获的数据包中的DRDA通信协议,判断截获的数据包为存储过程名称数据包即包含存储过程命令的数据包,还是存储过程参数数据包即包含存储过程命令的参数值的数据包,并将存储过程名称数据包和存储过程参数数据包交给存储过程解析模块,进行存储过程命令提取和存储过程参数值提取,并解析出存储过程参数值的数据结构和数据,DB2数据库协议模块将提取的参数值填入与提取的存储过程命令的对应的参数中,组合成完整命令。这样,构造了一条完整的数据库操作命令,即还原了用户的原始操作,能够对用户的操作过程进行审计,即实现用户对数据库本身的操作的审计,而不单单限于对数据库内部数据操作的审计。
进一步地,所述S2)具体包括:DB2数据库协议模块检查获取到的数据包的通信协议头部CODPNT的值,如果CODPNT的值为EXCSQLSTT,则判定所述数据包为存储过程名称数据包,并提取存储过程名称;如果CODPNT的值为SQLDTA,则判定所述数据包为存储过程参数数据包,并将存储过程名称及SQLDTA数据包交给存储过程解析模块。
工作原理:
DB2数据库采用的通信协议为DRDA通信协议,根据DRDA通信协议头部CODPNT的值,DB2协议模块可以判断该数据包是否包含存储过程命令及存储过程命令的参数。
进一步地,所述S2)中的存储过程解析模块包括:
数据结构解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据结构;
数据解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据;
命令-参数值匹配模块:用于将提取的存储过程命令和存储过程命令参数值组合成完整命令。
工作原理:
存储过程解析模块包括用于解析、提取和保存存储过程参数值数据结构的数据结构解析模块、用于解析、提取存储过程参数值数据内容的数据解析模块和将提取的存储过程命令中的参数列表与对应的参数值组合成完成操作命令的命令-参数值匹配模块。因此存储过程解析模块,实现了对用户操作的还原,审计用户对数据库本身的操作,如用户对数据库的创建、删除等操作,均可以通过对存储过程命令及参数值的提取及还原来审计,实现了数据库本身的安全审计。
进一步地,所述S3)具体包括:
S3.1)从存储过程名称数据包EXCSQLSTT中提取变量prcnam对应的值,所述变量prcnam对应的值即存储过程命令对应的代号;
S3.2)从存储过程参数数据包SQLDTA中提取FDODSC数据块,并解析FDODSC数据块的数据结构,然后进入下一步;
S3.3)找到所述SQLDTA中的FDODTA数据块,提取FDODTA数据块的数据。
工作原理:
在DB2中,存储过程命令与命令中的参数值是分开的,不会在同一个数据包中。命令通常包含在名称为EXCSQLSTT的数据包中,而数据通常包含在名称为SQLDTA的数据包中。从EXCSQLSTT的数据包提取变量prcnam的值,变量prcnam对应的值是存储过程命令的代号,如可以设定变量prcnam=1,代表一个存储过程命令,变量prcnam=2,代表另外一个存储过程命令,这些是预先设置好的,因此从提取的变量prcnam的值,可以判定当前的存储过程命令。存储过程数据的描述采用一种统一的格式,叫做FD:OCA(Formatted Data Object ContentArchitecture,格式化数据对象内容架构)。FD:OCA包含四部分内容,分别是:FDOEXT、FDODSC、FDODTA、FDOOFF,其中FDOEXT和FDOOFF是可选的,FDODSC和FDODTA是必须的。FDODSC是数据的描述部分,描述一个对象的数据结构;FDODTA是数据部分,数据内容按照FDODSC的描述进行组织。FDOEXT用来表示FDODTA中每个数组SDA的内容,如数组的数据类型和数组长度;FDOOFF表示每个数组SDA在FDODTA中的偏移位置。从SQLDTA数据包提取FDODSC数据块和FDODTA数据块,解析和提取FDODSC数据块中的数据结构,解析和提取FDODTA数据块中的数据内容。
进一步地,所述S3.2)包括:
S3.2.1)解析所述FDODSC数据块的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……, M(N+1)) ;
S3.2.2)判断第N+1层的I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.2.2.1),否则进入S3.2.2.2);
S3.2.2.1)解析第I(N+1)元素的结构体,得到第N+2层的M(N+2)个元素;
N=N+1;
I(N+1)=1;
返回S3.2.2);
S3.2.2.2)将第I(N+1)元素保存至数据结构解析模块,进入下一步S3.2.2.3);
S3.2.2.3)I(N+1)= I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.2.2);
否则进入下一步S3.2.3);
S3.2.3)N=N-1;
若N≥1,I(N+1)= I(N+1)+1,返回S3.2.2);
否则,数据结构解析结束。
工作原理:
首先解析FDODSC数据块的第一层的结构体,在DRDA协议中,最常见的结构体有四种,分别为MDD、SDA、GDA和RLO。MDD用来描述最底层的数据类型,如整型、字符串等;SDA用来描述一个数组,该数组中所有值都具有相同的类型,它可以引用MDD;GDA用来描述一个组合,通常用来表示一个属性的内容,它可以引用MDD和SDA;RLO与GDA类似,但只能用RLO描述最上层的数据结构。这里的数据结构类似一个倒置的树形结构,解析时会首先构造出它的最顶层,从顶部开始一层一层下去直至最底层。第一层结构体为RLO,查找第一层RLO包含的第二层元素,如果第二层元素中包含MDD,那么MDD就是元素,不包含结构体,经第二层的元素MDD存储数据结构解析模块,如果第二层中包含的元素有RLO、GDA和SDA,则需要依次解析第二层元素中的结构体,首先解析第二层RLO中包含的第三层元素是否包含结构体,若包含,则继续解析,直到第三层元素中的结构体均被解析为非结构体的元素,将元素存储至数据结构解析模块,再用同样的方法依次解析第二层GDA、第二层SDA,直到第二层GDA和第二层SDA均被解析为非结构体的元素,并保存至数据结构解析模块。具体方法步骤:
A)解析所述数据块的第一层结构体,找到第一层结构体包含的第二层元素,并存储至数据结构解析模块中;
B)若所述第二层元素中包含结构体,则解析第二层元素的结构体,找到第三层元素,并存储至数据结构解析模块中;如果第三层元素包含结构体,则继续解析第三层元素的结构体,找到第四层元素,……,依次类推,直到所有结构体均被解析为元素;
C)回退至上一层的结构体,继续解析当前层级中其他包含结构体的元素直到当前层级所有结构体均被解析为元素;
D)重复步骤C),直到回退至第一层结构体,数据结构解析完成。
进一步地,所述S3.3)包括:
S3.3.1)检索所述SQLDTA中的FDODTA数据块中的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……, M(N+1)) ;
S3.3.2)判断第N+1层的第I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.3.2.1),否则进入S3.3.2.2);
S3.3.2.1)检索第I(N+1)元素的结构体中的M(N+2)个元素,
若第I(N+2)个元素为结构体,则
N=N+1;
I(N+1)=1;
返回S3.3.2);
否则,进入S3.3.2.2);
S3.3.2.2)从数据结构解析模块提取第I(N+1)个元素,进入下一步S3.3.2.3);
S3.3.2.3)I(N+1)= I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.3.2);
否则进入下一步S3.3.3);
S3.3.3)N=N-1;
若N≥1,I(N+1)= I(N+1)+1,返回S3.3.2);
否则,数据解析完成。
工作原理:
根据从FDODSC中解析出数据结构,提取FDODTA中的数据。FDODTA中的数据部分需要根据FDODSC中的数据结构进行提取和解析:按照深度优先搜索方式,检查数据结构中的每一个数据成员的描述,并解析数据部分。检索第一层结构体RLO,继续检索第一层结构体RLO包含的第二层元素,若第二层元素中存在非结构体,则从数据结构解析模块中提取非结构体的第二层元素,若第二层元素中存在结构体,则继续解析第二层结构体包含的第三层元素,如果第三层元素中包含结构体则继续解析直到第三层所有的结构体均被解析为非结构体的元素,从数据结构解析模块提取非结构体的元素,回退至第二层结构体,继续解析第二层结构体中的其他元素,直到第二层所有的结构体均被解析为非结构体的元素从数据结构解析模块提取非结构体的元素,回退至第一层结构体,数据解析完成。方法步骤为:
E)检索第一层结构体,搜索所述第一层结构体的第二层元素,若所述第二层元素不包含结构体,则从所述数据结构解析模块中提取所述第二层元素,若所述第二层元素包含结构体,搜索第二层结构体的第三层元素;
F)若所述第三层元素不包含结构体,则从所述数据结构解析模块中提取所述第三层元素,若所述第三层元素包含结构体,则搜索第三层结构体的第四层元素,……,依次类推,直到搜索到的元素为非结构体,从数据结构解析模块提取所述元素;
G)回退至上一层的结构体,继续搜索当前层级中其他结构体的元素,直到当前层级的结构体包含的元素为非结构体,从数据结构解析模块提取所述元素;
H)重复步骤G),直到回退至第一层结构体,数据解析完成。
进一步地,所述S4)中具体包括:将所述S3.3)中提取的元素对应的填入所述S3.1)中提取的命令名称固定的参数列表中,组成完整命令。
工作原理:
在DB2中,数据的描述采用统一的结构,单独看数据部分是无法知道这部分数据有什么用,或者数据表示哪个参数的值。根据S3.1)提取到的命令名称,将这些数据按照固定的次序填入到命令的每个参数中,将参数与值一一对应起来,这样就得到了一条完整的存储过程命令。
本发明与现有技术相比,具有以下优点及有益效果:
本发明通过捕获存储过程数据包,解析存储过程命令及参数值,并还原出完整的数据库操作命令,有效地提取对数据库本身的一些重要配置操作,能够对用户的操作过程进行审计,即实现用户对数据库本身的操作的审计,而不单单限于对数据库内部数据操作的审计,提高了数据库运维审计的安全性。
附图说明
图1为本发明的流程图;
图2为本发明的系统原理框图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种DB2数据库的存储过程命令及参数值提取方法,包括:
S1)DB2协议审计系统中的DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包;
S2)所述DB2数据库协议模块检查、解析所述数据包,提取数据包的特征值,判断数据包是否为存储过程名称数据包或者存储过程参数数据包;
S3)所述DB2数据库协议模块从所述存储过程名称数据包中解析、提取存储过程命令,将存储过程命令和所述存储过程参数数据包交给存储过程解析模块;
S4)所述存储过程解析模块从存储过程参数数据包中提取存储过程命令参数;
S5)所述存储过程解析模块将提取的存储过程命令和存储过程命令参数值组合成完整命令。
工作原理:
DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包,解析,查看是否包含存储过程,存储过程为DB2数据库的一种操作命令,将包含存储过程的数据包截获,因为在DB2数据库中,存储过程命令和存储过程参数值是分开传输的,不在同一个数据包中,因此数据包捕获模块根据截获的数据包中的DRDA通信协议,判断截获的数据包为存储过程名称数据包即包含存储过程命令的数据包,还是存储过程参数数据包即包含存储过程命令的参数值的数据包,并将存储过程名称数据包和存储过程参数数据包交给存储过程解析模块,进行存储过程命令提取和存储过程参数值提取,并解析出存储过程参数值的数据结构和数据,DB2数据库协议模块将提取的参数值填入与提取的存储过程命令的对应的参数中,组合成完整命令。这样,构造了一条完整的数据库操作命令,即还原了用户的原始操作,能够对用户的操作过程进行审计,即实现用户对数据库本身的操作的审计,而不单单限于对数据库内部数据操作的审计。
实施例2:
在实施例1的基础上,结合附图1所示,所述S2)具体包括:DB2数据库协议模块检查获取到的数据包的通信协议头部CODPNT的值,如果CODPNT的值为EXCSQLSTT,则判定所述数据包为存储过程名称数据包,并提取存储过程名称;如果CODPNT的值为SQLDTA,则判定所述数据包为存储过程参数数据包,并将存储过程名称及SQLDTA数据包交给存储过程解析模块。
工作原理:
DB2数据库采用的通信协议为DRDA通信协议,根据DRDA通信协议头部CODPNT的值,DB2协议模块可以判断该数据包是否包含存储过程命令及存储过程命令的参数。
实施例3:
在实施例2的基础上,结合附图1和图2所示,所述S2)中的存储过程解析模块包括:
数据结构解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据结构;
数据解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据;
命令-参数值匹配模块:用于将提取的存储过程命令和存储过程命令参数值组合成完整命令。
工作原理:
存储过程解析模块包括用于解析、提取和保存存储过程参数值数据结构的数据结构解析模块、用于解析、提取存储过程参数值数据内容的数据解析模块和将提取的存储过程命令中的参数列表与对应的参数值组合成完成操作命令的命令-参数值匹配模块。因此存储过程解析模块,实现了对用户操作的还原,审计用户对数据库本身的操作,如用户对数据库的创建、删除等操作,均可以通过对存储过程命令及参数值的提取及还原来审计,实现了数据库本身的安全审计。
实施例4:
在实施例3的基础上,结合附图1和图2所示,所述S3)具体包括:
S3.1)从存储过程名称数据包EXCSQLSTT中提取变量prcnam对应的值,所述变量prcnam对应的值即存储过程命令对应的代号;
S3.2)从存储过程参数数据包SQLDTA中提取FDODSC数据块,并解析FDODSC数据块的数据结构,然后进入下一步;
S3.3)找到所述SQLDTA中的FDODTA数据块,提取FDODTA数据块的数据。
工作原理:
在DB2中,存储过程命令与命令中的参数值是分开的,不会在同一个数据包中。命令通常包含在名称为EXCSQLSTT的数据包中,而数据通常包含在名称为SQLDTA的数据包中。从EXCSQLSTT的数据包提取变量prcnam的值,变量prcnam对应的值是存储过程命令的代号,如可以设定变量prcnam=1,代表一个存储过程命令,变量prcnam=2,代表另外一个存储过程命令,这些是预先设置好的,因此从提取的变量prcnam的值,可以判定当前的存储过程命令。存储过程数据的描述采用一种统一的格式,叫做FD:OCA(Formatted Data Object ContentArchitecture,格式化数据对象内容架构)。FD:OCA包含四部分内容,分别是:FDOEXT、FDODSC、FDODTA、FDOOFF,其中FDOEXT和FDOOFF是可选的,FDODSC和FDODTA是必须的。FDODSC是数据的描述部分,描述一个对象的数据结构;FDODTA是数据部分,数据内容按照FDODSC的描述进行组织。FDOEXT用来表示FDODTA中每个数组SDA的内容,如数组的数据类型和数组长度;FDOOFF表示每个数组SDA在FDODTA中的偏移位置。从SQLDTA数据包提取FDODSC数据块和FDODTA数据块,解析和提取FDODSC数据块中的数据结构,解析和提取FDODTA数据块中的数据内容。
实施例5:
在实施例4的基础上,结合附图1和图2所示,所述S3.2)包括:
S3.2.1)解析所述FDODSC数据块的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……,M(N+1));
S3.2.2)判断第N+1层的I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.2.2.1),否则进入S3.2.2.2);
S3.2.2.1)解析第I(N+1)元素的结构体,得到第N+2层的M(N+2)个元素;
N=N+1;
I(N+1)=1;
返回S3.2.2);
S3.2.2.2)将第I(N+1)元素保存至数据结构解析模块,进入下一步S3.2.2.3);
S3.2.2.3)I(N+1)=I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.2.2);
否则进入下一步S3.2.3);
S3.2.3)N=N-1;
若N≥1,I(N+1)=I(N+1)+1,返回S3.2.2);
否则,数据结构解析结束。
进一步地,所述S3.3)包括:
S3.3.1)检索所述SQLDTA中的FDODTA数据块中的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……,M(N+1));
S3.3.2)判断第N+1层的第I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.3.2.1),否则进入S3.3.2.2);
S3.3.2.1)检索第I(N+1)元素的结构体中的M(N+2)个元素,
若第I(N+2)个元素为结构体,则
N=N+1;
I(N+1)=1;
返回S3.3.2);
否则,进入S3.3.2.2);
S3.3.2.2)从数据结构解析模块提取第I(N+1)个元素,进入下一步S3.3.2.3);
S3.3.2.3)I(N+1)=I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.3.2);
否则进入下一步S3.3.3);
S3.3.3)N=N-1;
若N≥1,I(N+1)=I(N+1)+1,返回S3.3.2);
否则,数据解析完成。
工作原理:
举例:数据结构为第一层RLO结构体,第一层RLO结构体包含的第二层元素为第二层GDA结构体,第二层GDA结构体包含的第三层元素有第一元素SDA、第二个元素MDD、第三个元素MDD和第四个元素GDA结构体,第三层GDA结构体中包含第四层元素有元素SDA、MDD、MDD,在解析数据结构时,采用深度优先搜索算法,从最外层RLO结构体开始搜索,步骤如下:
(A1)解析第一层RLO结构体,找到第一个元素GDA结构体;
(A2)解析第二层GDA结构体,找到第一个元素SDA,保存至数据结构解析模块;
(A3)解析第二层GDA结构体,找到第二个元素MDD,保存至数据结构解析模块;
(A4)解析第二层GDA结构体,找到第三个元素MDD,保存至数据结构解析模块;
(A5)解析第二层GDA结构体,找到第四个元素GDA结构体;
(A6)解析第三层GDA结构体,找到第四层的元素SDA、MDD、MDD,保存至数据结构解析模块;
(A7)搜索第三层GDA结构体完毕,回退到第二层GDA结构体;
(A8)搜索第二层GDA结构体完毕,回退到第一层RLO结构体;
(A9)搜索第一层RLO结构体完毕,所有解析完毕。构造出一个完整的结构体。
在提取数据时,根据步骤(A1)-(A9)得到的结构体进行提取:
(B1)检索第一层RLO结构体,由于它是一个抽象结构,搜索其元素;
(B2)检索第二层GDA结构体,由于它是一个抽象结构,搜索其元素;
(B3)检索第二层GDA结构体的第三层元素中的第一个元素SDA,从数据结构解析模块提取数据;
(B4)检索第二层GDA结构体的第三层元素中的第二个元素MDD,从数据结构解析模块提取数据;
(B5)检索第二层GDA结构体的第三层元素中的第三个元素MDD;从数据结构解析模块提取数据;
(B6)检索第二层GDA结构体的第三层元素中的第四个元素GDA,由于它是一个抽象结构,搜索其元素;
(B7)检索第三层GDA结构体的第四层元素中的第一个元素SDA,从数据结构解析模块提取数据;
(B8)检索第三层GDA结构体的第四层元素中的第二个元素MDD,从数据结构解析模块提取数据;
(B9)检索第三层GDA结构体的第四层元素中的第三个元素MDD,从数据结构解析模块提取数据;
(B10)第三层GDA检索完毕,回退到第二层GDA;
(B11)第二层GDA检索完毕,回退到第一层RLO;
(B12)第一层RLO检索完毕,所有数据提取完毕。
实施例6:
在实施例5的基础上,结合附图1和图2所示,所述S4)中具体包括:将所述S3.3)中提取的元素对应的填入所述S3.1)中提取的命令名称固定的参数列表中,组成完整命令。
工作原理:
在DB2中,数据的描述采用统一的结构,单独看数据部分是无法知道这部分数据有什么用,或者数据表示哪个参数的值。根据S3.1)提取到的命令名称,将这些数据按照固定的次序填入到命令的每个参数中,将参数与值一一对应起来,这样就得到了一条完整的存储过程命令。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

Claims (7)

1.一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,包括:
S1)DB2协议审计系统中的DB2数据库协议模块获取从客户端发往服务端的所有DB2协议数据包;
S2)所述DB2数据库协议模块检查、解析所述数据包,提取数据包的特征值,判断数据包是否为存储过程名称数据包或者存储过程参数数据包;
S3)所述DB2数据库协议模块从所述存储过程名称数据包中解析、提取存储过程命令,将存储过程命令和所述存储过程参数数据包交给存储过程解析模块;
S4)所述存储过程解析模块从存储过程参数数据包中提取存储过程命令参数;
S5)所述存储过程解析模块将提取的存储过程命令和存储过程命令参数值组合成完整命令。
2.根据权利要求1所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S2)具体包括:DB2数据库协议模块检查获取到的数据包的通信协议头部CODPNT的值,如果CODPNT的值为EXCSQLSTT,则判定所述数据包为存储过程名称数据包,并提取存储过程名称;如果CODPNT的值为SQLDTA,则判定所述数据包为存储过程参数数据包,并将存储过程名称及SQLDTA数据包交给存储过程解析模块。
3.根据权利要求2所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S2)中的存储过程解析模块包括:
数据结构解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据结构;
数据解析模块:用于解析、提取包含存储过程的数据包的存储过程命令参数值的数据;
命令-参数值匹配模块:用于将提取的存储过程命令和存储过程命令参数值组合成完整命令。
4.根据权利要求3所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S3)具体包括:
S3.1)从存储过程名称数据包EXCSQLSTT中提取变量prcnam对应的值,所述变量prcnam对应的值即存储过程命令对应的代号;
S3.2)从存储过程参数数据包SQLDTA中提取FDODSC数据块,并解析FDODSC数据块的数据结构,然后进入下一步;
S3.3)找到所述SQLDTA中的FDODTA数据块,提取FDODTA数据块的数据。
5.根据权利要求4所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S3.2)包括:
S3.2.1)解析所述FDODSC数据块的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……, M(N+1)) ;
S3.2.2)判断第N+1层的I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.2.2.1),否则进入S3.2.2.2);
S3.2.2.1)解析第I(N+1)元素的结构体,得到第N+2层的M(N+2)个元素;
N=N+1;
I(N+1)=1;
返回S3.2.2);
S3.2.2.2)将第I(N+1)元素保存至数据结构解析模块,进入下一步S3.2.2.3);
S3.2.2.3)I(N+1)= I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.2.2);
否则进入下一步S3.2.3);
S3.2.3)N=N-1;
若N≥1,I(N+1)= I(N+1)+1,返回S3.2.2);
否则,数据结构解析结束。
6.根据权利要求5所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S3.3)包括:
S3.3.1)检索所述SQLDTA中的FDODTA数据块中的第N层结构体,找到第N层结构体包含的M(N+1)个元素,分别为I(N+1)元素,I初值为1,N初值为1,(其中,M(N+1)表示第N+1层的元素个数为M,I(N+1)元素为第N+1层第I个元素,I=1,2,3,……, M(N+1)) ;
S3.3.2)判断第N+1层的第I(N+1)元素中是否包含结构体:若第I(N+1)元素包含结构体,则进入S3.3.2.1),否则进入S3.3.2.2);
S3.3.2.1)检索第I(N+1)元素的结构体中的M(N+2)个元素,
若第I(N+2)个元素为结构体,则
N=N+1;
I(N+1)=1;
返回S3.3.2);
否则,进入S3.3.2.2);
S3.3.2.2)从数据结构解析模块提取第I(N+1)个元素,进入下一步S3.3.2.3);
S3.3.2.3)I(N+1)= I(N+1)+1;
若I(N+1)≤M(N+1),返回S3.3.2);
否则进入下一步S3.3.3);
S3.3.3)N=N-1;
若N≥1,I(N+1)= I(N+1)+1,返回S3.3.2);
否则,数据解析完成。
7.根据权利要求6所述的一种DB2数据库的存储过程命令及参数值提取方法,其特征在于,所述S4)中具体包括:将所述S3.3)中提取的元素对应的填入所述S3.1)中提取的命令名称固定的参数列表中,组成完整命令。
CN201710731586.2A 2017-08-23 2017-08-23 一种db2数据库的存储过程命令及参数值提取方法 Active CN107491538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710731586.2A CN107491538B (zh) 2017-08-23 2017-08-23 一种db2数据库的存储过程命令及参数值提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710731586.2A CN107491538B (zh) 2017-08-23 2017-08-23 一种db2数据库的存储过程命令及参数值提取方法

Publications (2)

Publication Number Publication Date
CN107491538A true CN107491538A (zh) 2017-12-19
CN107491538B CN107491538B (zh) 2021-01-29

Family

ID=60646443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710731586.2A Active CN107491538B (zh) 2017-08-23 2017-08-23 一种db2数据库的存储过程命令及参数值提取方法

Country Status (1)

Country Link
CN (1) CN107491538B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287874A (zh) * 2017-12-19 2018-07-17 中国科学院声学研究所 一种db2数据库管理方法及装置
CN109299103A (zh) * 2018-10-23 2019-02-01 贵阳朗玛信息技术股份有限公司 一种数据库存储过程入参系统和方法
CN110688369A (zh) * 2019-09-30 2020-01-14 北京天融信网络安全技术有限公司 解析db2报文的方法、装置、存储介质及电子设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US20090158385A1 (en) * 2007-12-17 2009-06-18 Electronics And Telecommunications Research Institute Apparatus and method for automatically generating SELinux security policy based on selt
CN102521354A (zh) * 2011-12-13 2012-06-27 北京天融信科技有限公司 一种数据库协议审计测试方法及装置
CN102801714A (zh) * 2012-07-26 2012-11-28 杭州电子科技大学 旁路式解析和还原tns协议中sql命令的方法
CN102999547A (zh) * 2011-09-16 2013-03-27 莱克西私人有限公司 搜索查询的自动生成
US20140095719A1 (en) * 2012-10-03 2014-04-03 Harris Andrew Decker Creating, registering, and trading units representing internet protocol numbers
CN104615750A (zh) * 2015-02-12 2015-05-13 中国农业银行股份有限公司 一种主机系统下的内存数据库的实现方法
CN104965909A (zh) * 2015-07-03 2015-10-07 上海沃恩信息科技有限公司 一种动态web内容的请求处理方法
CN105183866A (zh) * 2015-09-15 2015-12-23 上海上讯信息技术股份有限公司 用于在数据库审计中解析协议参数的方法和设备
CN105190590A (zh) * 2013-02-28 2015-12-23 埃尔瓦有限公司 用于管理数据的方法和系统和/或用于设备的服务
CN105635046A (zh) * 2014-10-28 2016-06-01 北京启明星辰信息安全技术有限公司 一种数据库命令行过滤、阻断审计方法和装置
CN106933176A (zh) * 2017-04-24 2017-07-07 武汉大学 分布式水质监测设备在线统一管理与控制系统及方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US20090158385A1 (en) * 2007-12-17 2009-06-18 Electronics And Telecommunications Research Institute Apparatus and method for automatically generating SELinux security policy based on selt
CN102999547A (zh) * 2011-09-16 2013-03-27 莱克西私人有限公司 搜索查询的自动生成
CN102521354A (zh) * 2011-12-13 2012-06-27 北京天融信科技有限公司 一种数据库协议审计测试方法及装置
CN102801714A (zh) * 2012-07-26 2012-11-28 杭州电子科技大学 旁路式解析和还原tns协议中sql命令的方法
US20140095719A1 (en) * 2012-10-03 2014-04-03 Harris Andrew Decker Creating, registering, and trading units representing internet protocol numbers
CN105190590A (zh) * 2013-02-28 2015-12-23 埃尔瓦有限公司 用于管理数据的方法和系统和/或用于设备的服务
CN105635046A (zh) * 2014-10-28 2016-06-01 北京启明星辰信息安全技术有限公司 一种数据库命令行过滤、阻断审计方法和装置
CN104615750A (zh) * 2015-02-12 2015-05-13 中国农业银行股份有限公司 一种主机系统下的内存数据库的实现方法
CN104965909A (zh) * 2015-07-03 2015-10-07 上海沃恩信息科技有限公司 一种动态web内容的请求处理方法
CN105183866A (zh) * 2015-09-15 2015-12-23 上海上讯信息技术股份有限公司 用于在数据库审计中解析协议参数的方法和设备
CN106933176A (zh) * 2017-04-24 2017-07-07 武汉大学 分布式水质监测设备在线统一管理与控制系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
会拉小提琴的左脚: "从数据库中导出所有的存储过程的4种方法", 《HTTPS://BLOG.CSDN.NET/U013013225/ARTICLE/DETAILS/50964702》 *
杨可: "基于RFID技术的电信终端仓库仓储管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287874A (zh) * 2017-12-19 2018-07-17 中国科学院声学研究所 一种db2数据库管理方法及装置
CN108287874B (zh) * 2017-12-19 2020-07-31 中国科学院声学研究所 一种db2数据库管理方法及装置
CN109299103A (zh) * 2018-10-23 2019-02-01 贵阳朗玛信息技术股份有限公司 一种数据库存储过程入参系统和方法
CN109299103B (zh) * 2018-10-23 2022-02-18 贵阳朗玛信息技术股份有限公司 一种数据库存储过程入参系统和方法
CN110688369A (zh) * 2019-09-30 2020-01-14 北京天融信网络安全技术有限公司 解析db2报文的方法、装置、存储介质及电子设备
CN110688369B (zh) * 2019-09-30 2022-07-12 北京天融信网络安全技术有限公司 解析db2报文的方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN107491538B (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN104391881B (zh) 一种基于分词算法的日志解析方法及系统
US20210303588A1 (en) Dynamic Field Data Translation to Support High Performance Stream Data Processing
US11461354B2 (en) Systems and methods for data analytics
Woods et al. Complex event detection at wire speed with FPGAs
DE112012002624B4 (de) Regex-Kompilierer
CN105337991B (zh) 一种一体化的报文流查找与更新方法
CN107491538A (zh) 一种db2数据库的存储过程命令及参数值提取方法
US9558299B2 (en) Submatch extraction
Bremler-Barr et al. CompactDFA: Scalable pattern matching using longest prefix match solutions
CN111177491A (zh) 正则表达式的匹配方法、装置、电子设备及存储介质
CN110362824A (zh) 一种自动纠错的方法、装置、终端设备及存储介质
CN105046159B (zh) 基于修改标识符的oox文本文档隐私信息检测方法
US20150310342A1 (en) Overlay automata approach to regular expression matching for intrusion detection and prevention system
CN109766352A (zh) 一种对异构数据源统一处理的方法及系统
CN109460499A (zh) 目标搜索词生成方法及装置、电子设备、存储介质
Cormode et al. L p samplers and their applications: A survey
CN102710491B (zh) 使用pcap型过滤器和硬件辅助的patricia树的无损实时线速率过滤的方法和设备
CN113709189B (zh) 检测规则库的生成方法及系统、电子设备、存储介质
US20120016909A1 (en) Query-based semantic analysis of ad hoc configuration languages for networks
CN106878098A (zh) 数据报文的识别处理方法及装置
CN109684485A (zh) 一种基于swrl的任意规则推理引擎设计方法
KR102157336B1 (ko) 데이터베이스 관리시스템에서 json 데이터 저장 및 검색 방법
KR101174184B1 (ko) 통계에 의한 시소러스 데이터베이스 구축 방법 및 시소러스 데이터 구축 시스템
CN113536762A (zh) Json文本的比对方法及装置
CN112463824A (zh) 神通数据库select查询结果集的解析方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant