【技术实现步骤摘要】
一种解析和还原Caché数据库通讯协议中SQL命令的方法
本专利技术涉及计算机应用
,尤其涉及一种解析和还原Caché数据库通讯协议中SQL命令的方法。
技术介绍
Caché数据库是美国Intersystems公司产品,新一代超高性能数据库。适合大型应用,且因其速度快、灵活性、接口容易、升级扩容方便等优势,适用于各类应用环境,其市场占有率逐年提升。Caché数据库在国外已有广泛的应用,美国和欧洲医疗系统占有70%的市场份额,国内的医疗和金融企业已经开始投入使用Caché数据库。对于数据库管理来说,保护数据不受内部和外部侵害是一项重要工作。尤其是在Caché客户机较多时,访问量和数据传输量都较大,客户机与服务器之间的通讯过程几乎是一个黑匣子,在应用系统发生异常时,很难在系统层面对Caché数据库的访问使用情况进行全面的分析。Caché客户端对于Caché的操作直接关系到数据库的安全,所以对用户数据库业务进行在线审计、行为回溯和风险控制有着十分重要的意义。
技术实现思路
本专利技术提供了一种解析和还原Caché数据库通讯协议中SQL命令的方法,通过对使用TCP/IP协议传输的Caché数据库通讯协议51版本数据包进行旁路监听和解析,处理之后就得到每位用户的SQL操作命令。为了实现上述目的,本专利技术采取了如下技术方案。一种解析和还原Caché数据库通讯协议中SQL命令的方法,其特征在于,包括:采用旁路获取网络中客户端向Caché数据库服务器发送的通信协议数据包;将获取到的所述通信协议数据包的数据部分进行过滤和解析;根据所述的过滤和解析结果还原出客户端完整的S ...
【技术保护点】
一种解析和还原Caché数据库通讯协议中SQL命令的方法,其特征在于,包括:采用旁路获取网络中客户端向Caché数据库服务器发送的通信协议数据包;将获取到的所述通信协议数据包的数据部分进行过滤和解析;根据所述的过滤和解析结果还原出客户端完整的SQL命令。
【技术特征摘要】
1.一种解析和还原Caché数据库通讯协议中SQL命令的方法,其特征在于,包括:采用旁路获取网络中客户端向Caché数据库服务器发送的通信协议数据包;将获取到的所述通信协议数据包的数据部分进行过滤和解析;根据所述的过滤和解析结果还原出客户端完整的SQL命令。2.根据权利要求1所述的方法,其特征在于,所述的将获取到的所述通信协议数据包的数据部分进行过滤和解析,包括:步骤1:读取Caché数据库通讯协议数据包第1至第4个字节的值并赋给变量MsgLength中;步骤2:跳过8个字节,读取第13、14个字节的值并赋给变量MsgType,判断所述MsgType的值,若所述MsgType的值是0x440x51,则所述通信协议数据包为select语句,进行M1模块处理,若所述MsgType的值不是0x440x51,则执行步骤3;步骤3:若所述MsgType的值是0x440x55,则所述通信协议数据包为除select语句外的sql语句,进行M2模块处理,若MsgType的值不是0x440x55,则所述通信协议数据包不是sql语句数据包,结束流程。3.根据权利要求2所述的方法,其特征在于,所述的M1模块处理步骤为:(11)读取Caché数据包data部分第4个字节的值并赋给变量sqlLength中;(12)定义指针sqlstart指向Caché数据包data部分第6个字节,sqlend=sqlstart+sqlLength-2;(13)读取指针sqlstart到指针sqlend指向的字符串为select语句并保存;(14)根据*(sqlend+1)的值情况执行以下步骤:若*(sqlend+1)的值是0x02,则该数据包包含的select语句没有参数,执行步骤(118);若*(sqlend+1)的值不是0x02,则执行步骤(15);(15)定义指针parapos指向指针(sqlend+3)指向的位置,并读取*(parapos)的值并赋给变量paracount;(16)跳过[6*(paracount-1)+11]个字节,定义变量skip=12;(17)定义指针parastart指向[parapos+6*(paracount-1)+skip];(18)定义变量i=1;(19)读取*(parastart)的值为paralength;(110)读取指针parastart到指针(parastart+paralength)指向的字符串为buffer(i);(111)定义指针paradis指向字符串buffer(i)第2个字节;(112)若*(paradis)的值为0x01,则执行步骤(113),若*(paradis)的值不是0x01,则执行步骤(114);(113)读取指针paradis到指针(paradis+paralength-2)指向的字符串为para(i);(114)读取指针paradis到指针(paradis+paralength-2)指向的字符串并转换为二进制数并记为para(i);(115)若i=paracount,则执行步骤(118),否则,执行步骤(116);(116)将变量i的值加1;(117)parastart=parastart+paralength,并重复执行步骤(19);(118)输出select语句和参数para(i),1<=i<=paracount。4.根...
【专利技术属性】
技术研发人员:黎琳,常晓林,李振寰,韩臻,刘吉强,
申请(专利权)人:北京交通大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。