客户端数据的获取方法及装置、存储介质、电子设备与流程

文档序号:25991946发布日期:2021-07-23 21:04阅读:97来源:国知局
客户端数据的获取方法及装置、存储介质、电子设备与流程

本发明涉及网络安全领域,具体而言,涉及一种客户端数据的获取方法及装置、存储介质、电子设备。



背景技术:

相关技术中,随着互联网技术的快速发展,越来越多应用场景下的客户端需要与服务器之间进行会话,此时需要建立相应的会话连接,同时,mysql服务器因为存储这大量数据,也是黑客攻击的目标。

相关技术中,为了防止mysql服务器为攻击,会对客户端进行登录验证,但该认证过程容易被弱口令,等各种伪装类的黑客进行攻击渗透,导致mysql服务器的数据泄露,也没有针对mysql攻击的伪装反制手段。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种客户端数据的获取方法及装置、存储介质、电子设备。

根据本申请实施例的一个方面,提供了一种客户端数据的获取方法,包括:采用套接字socket接口监听来自mysql客户端的连接请求,向所述mysql客户端发送握手初始化消息;接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,其中,所述指定认证结果用于指示所述mysql客户端认证通过;向所述mysql客户端主动发送包体消息,并接收所述mysql客户端基于所述包体消息返回的目标数据,其中,所述包体消息用于向所述mysql客户端请求所述目标数据。

进一步,向所述mysql客户端主动发送包体消息包括:向所述mysql客户端主动发送第一包体消息,其中,所述第一包体消息包括包头、包长度、第一包体信息,所述第一包体信息携带目标文件路径,所述第一包体消息用于向所述mysql客户端请求所述目标文件路径下的第一目标数据。

进一步,向所述mysql客户端主动发送包体消息包括:向所述mysql客户端主动发送第二包体消息,其中,所述第二包体消息包括包头、包长度、第二包体信息,所述第二包体信息携带文件查询指令,所述第二包体消息用于在所述mysql客户端中执行所述文件查询指令以得到第二目标数据。

进一步,在接收所述mysql客户端基于所述包体消息返回的目标数据之后,所述方法还包括:解析所述目标数据,从所述目标数据中提取所述mysql客户端的主机信息和/或账号信息。

进一步,接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,包括:接收所述mysql客户端发送的登录认证消息,提取所述登录认证消息中的原始验证数据;采用预设验证数据替换所述原始验证数据,其中,所述预设验证数据为合法的验证数据;基于所述预设验证数据进行登录鉴权,并生成所述指定认证结果;向所述mysql客户端直接返回所述指定认证结果。

进一步,向所述mysql客户端直接返回所述指定认证结果包括:提取所述指定认证结果中的预设验证数据,并将所述预设验证数据替换回所述原始验证数据;采用所述原始验证数据更新所述指定认证结果,并向所述mysql客户端直接返回更新后的所述指定认证结果。

进一步,在向所述mysql客户端主动发送包体消息之后,所述方法还包括:若在预设时间内未接收到所述目标数据,生成第一控制消息和第二控制消息,其中,所述第一控制消息用于在所述mysql客户端侧断开mysql客户端与mysql服务端的连接链路,所述第二控制消息用于在所述mysql服务端侧断开mysql客户端与mysql服务端的连接链路;向所述mysql客户端主动发送所述第一控制消息,在所述mysql服务端本地执行所述第二控制消息。

进一步,采用套接字socket接口监听来自mysql客户端的连接请求包括:在本地设备启动socket线程监听来自mysql客户端的连接请求,并控制所述本地设备的主线程为关闭状态。

进一步,向所述mysql客户端发送握手初始化消息包括:若监听到来自mysql客户端的连接请求,启动主线程;向所述主线程转发所述连接请求,并接收所述主线程返回的握手初始化消息;采用所述socket接口向所述mysql客户端发送握手初始化消息。

进一步,所述方法还包括:接收来自所述mysql客户端的数据查询请求;在主线程中创建与所述数据查询请求对应的访问进程,并将所述访问进程挂起。

根据本申请实施例的另一个方面,还提供了一种客户端数据的获取装置,包括:发送模块,用于采用套接字socket接口监听来自mysql客户端的连接请求,向所述mysql客户端发送握手初始化消息;返回模块,用于接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,其中,所述指定认证结果用于指示所述mysql客户端认证通过;第一接收模块,用于向所述mysql客户端主动发送包体消息,并接收所述mysql客户端基于所述包体消息返回的目标数据,其中,所述包体消息用于向所述mysql客户端请求所述目标数据。

进一步,所述第一接收模块包括:第一发送单元,用于向所述mysql客户端主动发送第一包体消息,其中,所述第一包体消息包括包头、包长度、第一包体信息,所述第一包体信息携带目标文件路径,所述第一包体消息用于向所述mysql客户端请求所述目标文件路径下的第一目标数据。

进一步,所述第一接收模块包括:第二发送单元,用于向所述mysql客户端主动发送第二包体消息,其中,所述第二包体消息包括包头、包长度、第二包体信息,所述第二包体信息携带文件查询指令,所述第二包体消息用于在所述mysql客户端中执行所述文件查询指令以得到第二目标数据。

进一步,所述装置还包括:解析模块,用于在所述第一接收模块接收所述mysql客户端基于所述包体消息返回的目标数据之后,解析所述目标数据,从所述目标数据中提取所述mysql客户端的主机信息和/或账号信息。

进一步,所述返回模块包括:提取单元,用于接收所述mysql客户端发送的登录认证消息,提取所述登录认证消息中的原始验证数据;替换单元,用于采用预设验证数据替换所述原始验证数据,其中,所述预设验证数据为合法的验证数据;生成单元,用于基于所述预设验证数据进行登录鉴权,并生成所述指定认证结果;返回单元,用于向所述mysql客户端直接返回所述指定认证结果。

进一步,所述返回单元包括:替换子单元,用于提取所述指定认证结果中的预设验证数据,并将所述预设验证数据替换回所述原始验证数据;返回子单元,用于采用所述原始验证数据更新所述指定认证结果,并向所述mysql客户端直接返回更新后的所述指定认证结果。

进一步,所述装置还包括:生成模块,用于在所述第一接收模块向所述mysql客户端主动发送包体消息之后,若在预设时间内未接收到所述目标数据,生成第一控制消息和第二控制消息,其中,所述第一控制消息用于在所述mysql客户端侧断开mysql客户端与mysql服务端的连接链路,所述第二控制消息用于在所述mysql服务端侧断开mysql客户端与mysql服务端的连接链路;执行模块,用于向所述mysql客户端主动发送所述第一控制消息,在所述mysql服务端本地执行所述第二控制消息。

进一步,所述发送模块包括:监听单元,用于在本地设备启动socket线程监听来自mysql客户端的连接请求,并控制所述本地设备的主线程为关闭状态。

进一步,所述发送模块包括:启动单元,用于若监听到来自mysql客户端的连接请求,启动主线程;中转单元,用于向所述主线程转发所述连接请求,并接收所述主线程返回的握手初始化消息;发送单元,用于采用所述socket接口向所述mysql客户端发送握手初始化消息。

进一步,所述装置还包括:第二接收模块,用于接收来自所述mysql客户端的数据查询请求;处理模块,用于在主线程中创建与所述数据查询请求对应的访问进程,并将所述访问进程挂起。

根据本申请实施例的另一个方面,还提供了一种客户端数据的获取系统,包括:mysql客户端和mysql服务端,其中,所述mysql服务端包括如上述实施例所描述的装置;所述mysql客户端,用于向所述mysql客户端发送连接请求,在接收到所述mysql服务端发送的握手初始化消息之后,发送登录认证消息,接收所述mysql客户端主动发送的包体消息,根据所述包体消息查询目标数据,并将所述目标数据返回至所述mysql服务端。

根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。

根据本申请实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。

本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。

通过本发明,采用套接字socket接口监听来自mysql客户端的连接请求,向mysql客户端发送握手初始化消息,接收mysql客户端发送的登录认证消息,向mysql客户端返回登录认证消息的指定认证结果,指定认证结果用于指示mysql客户端认证通过,向mysql客户端主动发送包体消息,并接收mysql客户端基于包体消息返回的目标数据,实现了一种针对mysql攻击的伪装反制手段,通过反向从mysql客户端获取目标数据,解决了相关技术不能针对mysql攻击进行反制的技术问题,提高了mysql服务端的安全性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种服务器的硬件结构框图;

图2是根据本发明实施例的一种客户端数据的获取方法的流程图;

图3是本发明实施例获取目标数据的流程图;

图4是本发明实施例的交互图;

图5是本发明实施例从mysql客户端获取文件内容的示意图;

图6是根据本发明实施例的一种客户端数据的获取装置的结构框图;

图7是实施本发明实施例的一种电子设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

本申请实施例一所提供的方法实施例可以在服务器、计算机、蜜罐设备、或者类似的运算装置中执行。以运行在服务器上为例,图1是本发明实施例的一种服务器的硬件结构框图。如图1所示,服务器可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述服务器还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器的结构造成限定。例如,服务器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储服务器程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种客户端数据的获取方法对应的服务器程序,处理器102通过运行存储在存储器104内的服务器程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种客户端数据的获取方法,图2是根据本发明实施例的一种客户端数据的获取方法的流程图,可以应用在mysql服务器中,作为蜜罐主机,该mysql服务器可以是伪装成的mysql服务器(未存储mysql数据库表),也可以是真实的mysql服务器,如图2所示,该流程包括如下步骤:

步骤s202,采用套接字socket接口监听来自mysql客户端的连接请求,向mysql客户端发送握手初始化消息;

本实施例的握手初始化消息是在mysql服务器与mysql客户端正式建立链接之前发送的握手消息,用于创建mysql服务器与mysql客户端之间的tcp链接。在tcp链接建立后,还需要对mysql客户端进行登录鉴权,mysql服务器才允许接收来自mysql客户端的执行命令(如查询命令等)。

步骤s204,接收mysql客户端发送的登录认证消息,向mysql客户端返回登录认证消息的指定认证结果,其中,指定认证结果用于指示mysql客户端认证通过;

可选的,攻击者使用mysql客户端工具连接该伪装的mysql服务端时,伪装的mysql服务端根据mysql协议实现交互通信,mysql客户端发送登录认证消息,服务端响应登录认证消息的认证结果,伪装的mysql服务端会让攻击者的mysql客户端在登录认证阶段中认证通过。可以使用socket构建mysql服务端程序,防止对蜜罐宿主设备的主线程干扰。

步骤s206,向mysql客户端主动发送包体消息,并接收mysql客户端基于包体消息返回的目标数据,其中,包体消息用于向mysql客户端请求目标数据。

攻击者使用mysql客户端工具,只要连接上了伪装的mysql服务端,就会被服务端获取到攻击者目标文件内容。图3是本发明实施例获取目标数据的流程图,在现有的mysql通信协议中,在认证完成后,mysql服务端(服务器)需要在接收到mysql客户端的执行命令后,才能执行对应的操作并向客户端返回响应结果,在本实施例中,mysql服务端主动向mysql客户端主动发送包体消息,实现了对mysql客户端的反制。

通过上述步骤,采用套接字socket接口监听来自mysql客户端的连接请求,向mysql客户端发送握手初始化消息,接收mysql客户端发送的登录认证消息,向mysql客户端返回登录认证消息的指定认证结果,指定认证结果用于指示mysql客户端认证通过,向mysql客户端主动发送包体消息,并接收mysql客户端基于包体消息返回的目标数据,实现了一种针对mysql攻击的伪装反制手段,通过反向从mysql客户端获取目标数据,解决了相关技术不能针对mysql攻击进行反制的技术问题,提高了mysql服务端的安全性。

在认证通过后,伪装的mysql服务端会发送相应的包体消息,该包体消息包括包头、包长度、和包体信息,包体信息是目标文件路径等,攻击者的mysql客户端接收到该消息后会自动读取该文件路径,并传输文件内容到伪装的mysql服务端。

在本实施例的一个实施场景中,向mysql客户端主动发送包体消息包括:向mysql客户端主动发送第一包体消息,其中,第一包体消息包括包头、包长度、第一包体信息,第一包体信息携带目标文件路径,第一包体消息用于向mysql客户端请求目标文件路径下的第一目标数据。

在本实施例的另一个实施场景中,向mysql客户端主动发送包体消息包括:向mysql客户端主动发送第二包体消息,其中,第二包体消息包括包头、包长度、第二包体信息,第二包体信息携带文件查询指令,第二包体消息用于在mysql客户端中执行文件查询指令以得到第二目标数据。

在本实施例的一个实施方式中,在接收mysql客户端基于包体消息返回的目标数据之后,还包括:解析目标数据,从目标数据中提取mysql客户端的主机信息和/或账号信息。

可选的,该主机信息可以是mysql客户端的ip地址,mac地址,网络运营商信息,路由路径,该账号信息可以是mysql客户端所安装的操作系统的登录账号,浏览器的登录账号,或者是本地cookie中存储的用户账号,该账号是用户识记使用的真实账号。

在本实施例的一个实施方式中,采用套接字socket接口监听来自mysql客户端的连接请求包括:在本地设备启动socket线程监听来自mysql客户端的连接请求,并控制本地设备的主线程为关闭状态。由于socket会阻塞进程,如果直接写在设备的主线程中,程序就只能执行socket的功能,本实施例另外开启一个线程,即socket线程,单独用来通信和监听,并随时与主线程关联调用,主线程只能被socket线程启动,以保证主线程的安全,不被mysql客户端恶意调用。

可选的,向mysql客户端发送握手初始化消息包括:若监听到来自mysql客户端的连接请求,启动主线程;向主线程转发连接请求,并接收主线程返回的握手初始化消息;采用socket接口向mysql客户端发送握手初始化消息。

在一些示例中,还可以采用该主机信息和/或账号信息对该mysql客户端进行二次登陆认证,以判定该mysql客户端是否为合法设备,若是合法设备,则关闭socket接口。在确定mysql客户端是合法设备之前,也可以正常接收来自mysql客户端的数据查询请求,一旦接收到mysql客户端的数据查询请求,由于此时mysql客户端的真实身份还不能确定,因此不能让其直接访问mysql服务端内数据,以防被非法客户端窃取,而是将mysql服务端内基于数据查询请求触发的访问进程挂起,如果接收到多个数据查询请求,则按照时间顺序对多个查询进程进行排队,形成进程序列,一旦确定该mysql客户端的真实身份是合法的,则将该进程序列调回内存,按照队列依次执行,或者在资源允许的情况下同步执行。

可选的,接收mysql客户端发送的登录认证消息,向mysql客户端返回登录认证消息的指定认证结果,包括:接收mysql客户端发送的登录认证消息,提取登录认证消息中的原始验证数据;采用预设验证数据替换原始验证数据,其中,预设验证数据为合法的验证数据;基于预设验证数据进行登录鉴权,并生成指定认证结果;向mysql客户端直接返回指定认证结果。可选的,在指定认证结果中将预设验证数据替换回所述原始验证数据,以保证mysql客户端的登录信息(如账号等)一致,防止被mysql客户端发现。

在一些示例中,在认证的过程中,mysql客户端通常还会发起并发式的拒绝服务(denialofservice,dos)攻击,在短时间内发起大量的登录认证请求(登录认证消息),耗费mysql服务端大量的处理资源(用来临时生成合法的验证数据),以使mysql服务端的认证服务崩溃,为了防止dos攻击,可以提前设置多组预设验证数据,形成验证数据列表(ip1,ip2,ip3,ip4,…),在认证过程中,基于每个登录认证消息创建一条认证链路,若所述认证链路的数量大于所述验证数据列表中验证数据的数量,在所述验证数据列表中循环读取所述多组验证数据,直到取出的验证数据的数量与所述认证链路的数量相同,并采用对应的验证数据标识对应的认证链路,该认证链路即传输包体消息的业务链路。由于验证数据列表中的预设验证数据都是预设好的,因此鉴权组件通过简单的白名单比对即可完成登录验证,不会造成耗费mysql服务端太多的处理资源。

可选的,在向mysql客户端主动发送包体消息之后,还包括:若在预设时间内未接收到目标数据,生成第一控制消息和第二控制消息,其中,第一控制消息用于在mysql客户端侧断开mysql客户端与mysql服务端的连接链路,第二控制消息用于在mysql服务端侧断开mysql客户端与mysql服务端的连接链路;向mysql客户端主动发送第一控制消息,在mysql服务端本地执行第二控制消息。

图4是本发明实施例的交互图,包括潜在的攻击者-mysql客户端,伪装的mysql服务端,包括:mysql客户端向mysql服务端发起连接请求,包括第一次握手发送的clienthello(客户端问候消息),第二次握手发送的serverhello(服务器握手消息/握手初始化消息),第三次握手发送的clientkeyexchange(客户端密钥交换消息),即三次握手,完成传输控制协议(tcp,transmissioncontrolprotocol)三次握手之后,攻击者的mysql客户端向伪装的mysql服务端发送认证请求后,伪装的mysql服务端直接返回认证成功的消息,双方可建立连接。

图5是本发明实施例从mysql客户端获取文件内容的示意图,包括潜在的攻击者,mysql客户端,伪装的mysql服务端。伪装的mysql服务端主动发送消息,该消息可使攻击者的mysql客户端根据服务端消息中的路径,读取该路径的文件内容,并发送给伪装的mysql服务端,伪装的mysql服务端接收文件内容并保存。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种客户端数据的获取装置、系统,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是根据本发明实施例的一种客户端数据的获取装置的结构框图,如图6所示,该装置包括:发送模块60,返回模块62,第一接收模块64,其中,

发送模块60,用于采用套接字socket接口监听来自mysql客户端的连接请求,向所述mysql客户端发送握手初始化消息;

返回模块62,用于接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,其中,所述指定认证结果用于指示所述mysql客户端认证通过;

第一接收模块64,用于向所述mysql客户端主动发送包体消息,并接收所述mysql客户端基于所述包体消息返回的目标数据,其中,所述包体消息用于向所述mysql客户端请求所述目标数据。

可选的,述第一接收模块包括:第一发送单元,用于向所述mysql客户端主动发送第一包体消息,其中,所述第一包体消息包括包头、包长度、第一包体信息,所述第一包体信息携带目标文件路径,所述第一包体消息用于向所述mysql客户端请求所述目标文件路径下的第一目标数据。

可选的,所述第一接收模块包括:第二发送单元,用于向所述mysql客户端主动发送第二包体消息,其中,所述第二包体消息包括包头、包长度、第二包体信息,所述第二包体信息携带文件查询指令,所述第二包体消息用于在所述mysql客户端中执行所述文件查询指令以得到第二目标数据。

可选的,所述装置还包括:解析模块,用于在所述第一接收模块接收所述mysql客户端基于所述包体消息返回的目标数据之后,解析所述目标数据,从所述目标数据中提取所述mysql客户端的主机信息和/或账号信息。

可选的,所述返回模块包括:提取单元,用于接收所述mysql客户端发送的登录认证消息,提取所述登录认证消息中的原始验证数据;替换单元,用于采用预设验证数据替换所述原始验证数据,其中,所述预设验证数据为合法的验证数据;生成单元,用于基于所述预设验证数据进行登录鉴权,并生成所述指定认证结果;返回单元,用于向所述mysql客户端直接返回所述指定认证结果。

可选的,所述返回单元包括:替换子单元,用于提取所述指定认证结果中的预设验证数据,并将所述预设验证数据替换回所述原始验证数据;返回子单元,用于采用所述原始验证数据更新所述指定认证结果,并向所述mysql客户端直接返回更新后的所述指定认证结果。

可选的,所述装置还包括:生成模块,用于在所述第一接收模块向所述mysql客户端主动发送包体消息之后,若在预设时间内未接收到所述目标数据,生成第一控制消息和第二控制消息,其中,所述第一控制消息用于在所述mysql客户端侧断开mysql客户端与mysql服务端的连接链路,所述第二控制消息用于在所述mysql服务端侧断开mysql客户端与mysql服务端的连接链路;执行模块,用于向所述mysql客户端主动发送所述第一控制消息,在所述mysql服务端本地执行所述第二控制消息。

可选的,所述发送模块包括:监听单元,用于在本地设备启动socket线程监听来自mysql客户端的连接请求,并控制所述本地设备的主线程为关闭状态。

可选的,所述发送模块包括:启动单元,用于若监听到来自mysql客户端的连接请求,启动主线程;中转单元,用于向所述主线程转发所述连接请求,并接收所述主线程返回的握手初始化消息;发送单元,用于采用所述socket接口向所述mysql客户端发送握手初始化消息。

可选的,所述装置还包括:第二接收模块,用于接收来自所述mysql客户端的数据查询请求;处理模块,用于在主线程中创建与所述数据查询请求对应的访问进程,并将所述访问进程挂起。

根据本申请实施例的另一个方面,还提供了一种客户端数据的获取系统,包括:mysql客户端和mysql服务端,其中,所述mysql服务端包括如上述实施例所描述的装置;所述mysql客户端,用于向所述mysql客户端发送连接请求,在接收到所述mysql服务端发送的握手初始化消息之后,发送登录认证消息,接收所述mysql客户端主动发送的包体消息,根据所述包体消息查询目标数据,并将所述目标数据返回至所述mysql服务端。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本申请实施例还提供了一种电子设备,图7是本发明实施例的一种电子设备的结构图,如图7所示,包括处理器71、通信接口72、存储器73和通信总线74,其中,处理器71,通信接口72,存储器73通过通信总线74完成相互间的通信,存储器73,用于存放计算机程序;处理器71,用于执行存储器73上所存放的程序时,实现如下步骤:采用套接字socket接口监听来自mysql客户端的连接请求,向所述mysql客户端发送握手初始化消息;接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,其中,所述指定认证结果用于指示所述mysql客户端认证通过;向所述mysql客户端主动发送包体消息,并接收所述mysql客户端基于所述包体消息返回的目标数据,其中,所述包体消息用于向所述mysql客户端请求所述目标数据。

进一步,向所述mysql客户端主动发送包体消息包括:向所述mysql客户端主动发送第一包体消息,其中,所述第一包体消息包括包头、包长度、第一包体信息,所述第一包体信息携带目标文件路径,所述第一包体消息用于向所述mysql客户端请求所述目标文件路径下的第一目标数据。

进一步,向所述mysql客户端主动发送包体消息包括:向所述mysql客户端主动发送第二包体消息,其中,所述第二包体消息包括包头、包长度、第二包体信息,所述第二包体信息携带文件查询指令,所述第二包体消息用于在所述mysql客户端中执行所述文件查询指令以得到第二目标数据。

进一步,在接收所述mysql客户端基于所述包体消息返回的目标数据之后,所述方法还包括:解析所述目标数据,从所述目标数据中提取所述mysql客户端的主机信息和/或账号信息。

进一步,接收所述mysql客户端发送的登录认证消息,向所述mysql客户端返回所述登录认证消息的指定认证结果,包括:接收所述mysql客户端发送的登录认证消息,提取所述登录认证消息中的原始验证数据;采用预设验证数据替换所述原始验证数据,其中,所述预设验证数据为合法的验证数据;基于所述预设验证数据进行登录鉴权,并生成所述指定认证结果;向所述mysql客户端直接返回所述指定认证结果。

进一步,向所述mysql客户端直接返回所述指定认证结果包括:提取所述指定认证结果中的预设验证数据,并将所述预设验证数据替换回所述原始验证数据;采用所述原始验证数据更新所述指定认证结果,并向所述mysql客户端直接返回更新后的所述指定认证结果。

进一步,在向所述mysql客户端主动发送包体消息之后,所述方法还包括:若在预设时间内未接收到所述目标数据,生成第一控制消息和第二控制消息,其中,所述第一控制消息用于在所述mysql客户端侧断开mysql客户端与mysql服务端的连接链路,所述第二控制消息用于在所述mysql服务端侧断开mysql客户端与mysql服务端的连接链路;向所述mysql客户端主动发送所述第一控制消息,在所述mysql服务端本地执行所述第二控制消息。

进一步,采用套接字socket接口监听来自mysql客户端的连接请求包括:在本地设备启动socket线程监听来自mysql客户端的连接请求,并控制所述本地设备的主线程为关闭状态。

进一步,向所述mysql客户端发送握手初始化消息包括:若监听到来自mysql客户端的连接请求,启动主线程;向所述主线程转发所述连接请求,并接收所述主线程返回的握手初始化消息;采用所述socket接口向所述mysql客户端发送握手初始化消息。

进一步,所述方法还包括:接收来自所述mysql客户端的数据查询请求;在主线程中创建与所述数据查询请求对应的访问进程,并将所述访问进程挂起。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的客户端数据的获取方法。

在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的客户端数据的获取方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1