[发明专利]一种解析和还原Caché数据库通讯协议中SQL命令的方法有效
申请号: | 201710328384.3 | 申请日: | 2017-05-11 |
公开(公告)号: | CN107193902B | 公开(公告)日: | 2020-04-17 |
发明(设计)人: | 黎琳;常晓林;李振寰;韩臻;刘吉强 | 申请(专利权)人: | 北京交通大学 |
主分类号: | G06F16/242 | 分类号: | G06F16/242 |
代理公司: | 北京市商泰律师事务所 11255 | 代理人: | 黄晓军 |
地址: | 100044 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解析 还原 cach 数据库 通讯 协议 sql 命令 方法 | ||
1.一种解析和还原Caché数据库通讯协议中SQL命令的方法,其特征在于,包括:
采用旁路获取网络中客户端向Caché数据库服务器发送的通信协议数据包;
将获取到的所述通信协议数据包的数据部分进行过滤和解析;
根据所述的过滤和解析结果还原出客户端完整的SQL命令;
所述的将获取到的所述通信协议数据包的数据部分进行过滤和解析,包括:
步骤1:读取Caché数据库通讯协议数据包第1至第4个字节的值并赋给变量MsgLength;
步骤2:跳过8个字节,读取第13、14个字节的值并赋给变量MsgType,判断所述MsgType的值,若所述MsgType的值是0x44 0x51,则所述通信协议数据包为select语句,进行M1模块处理,若所述MsgType的值不是0x44 0x51,则执行步骤3;
步骤3:若所述MsgType的值是0x44 0x55,则所述通信协议数据包为除select语句外的sql语句,进行M2模块处理,若MsgType的值不是0x44 0x55,则所述通信协议数据包不是sql语句数据包,结束流程。
2.根据权利要求1所述的方法,其特征在于,所述的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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京交通大学,未经北京交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710328384.3/1.html,转载请声明来源钻瓜专利网。