CN114928466B - 加密数据自动识别方法、装置、存储介质及计算机设备 - Google Patents
加密数据自动识别方法、装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN114928466B CN114928466B CN202210331905.1A CN202210331905A CN114928466B CN 114928466 B CN114928466 B CN 114928466B CN 202210331905 A CN202210331905 A CN 202210331905A CN 114928466 B CN114928466 B CN 114928466B
- Authority
- CN
- China
- Prior art keywords
- request
- data
- response
- parameter
- header
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000004044 response Effects 0.000 claims description 152
- 238000001514 detection method Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 230000011218 segmentation Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种加密数据自动识别方法、装置、存储介质及计算机设备,主要在于能够自动识别出请求数据中的加密数据,并完成解密操作。其中方法包括:利用预设插件获取客户端向服务器发送的请求数据;分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
Description
技术领域
本发明涉及信息技术领域,尤其是涉及一种加密数据自动识别方法、装置、存储介质及计算机设备。
背景技术
客户端与服务器在通信的过程中,会产生请求数据,由于该请求数据中可能存在加密数据,因此需要进行解密。
目前,在对请求数据进行解密的过程中,通常需要在配置文件中预先配置好加密数据所在的位置信息,程序执行时依据该位置信息对加密数据进行解密。然而,由于这种方式需要人为在配置文件中对加密数据的位置进行配置,从而导致解密流程较为繁琐,影响请求数据的解密效率。
发明内容
本发明提供了一种加密数据自动识别方法、装置、存储介质及计算机设备,主要在于能够自动识别出请求数据中的加密数据,并完成解密操作,从而能够简化解密流程,提高解密效率。
根据本发明的第一个方面,提供一种加密数据自动识别方法,包括:
利用预设插件获取客户端向服务器发送的请求数据;
分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
根据本发明的第二个方面,提供一种加密数据自动识别装置,包括:
获取单元,用于利用预设插件获取客户端向服务器发送的请求数据;
检测单元,用于分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
解密单元,用于若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
根据本发明的第三个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
利用预设插件获取客户端向服务器发送的请求数据;
分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
根据本发明的第四个方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
利用预设插件获取客户端向服务器发送的请求数据;
分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
本发明提供的一种加密数据自动识别方法、装置、存储介质及计算机设备,与目前在配置文件中预先配置好加密数据所在位置的方式相比,本发明能够利用预设插件获取客户端向服务器发送的请求数据;并分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。本发明通过对请求数据的请求头部和请求主体进行检测,能够自动识别出请求数据中的加密数据,并进行解密,从而能够简化解密流程,提高解密效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了本发明实施例提供的一种加密数据自动识别方法流程图;
图2示出了本发明实施例提供的请求数据的header方法流程示意图;
图3示出了本发明实施例提供的请求数据的body方法流程示意图;
图4示出了本发明实施例提供的另一种加密数据自动识别方法流程图;
图5示出了本发明实施例提供的响应数据的header方法流程示意图;
图6示出了本发明实施例提供的响应数据的body方法流程示意图;
图7示出了本发明实施例提供的一种加密数据自动识别装置的结构示意图;
图8示出了本发明实施例提供的另一种加密数据自动识别装置的结构示意图;
图9示出了本发明实施例提供的一种计算机设备的实体结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
目前,由于在配置文件中对加密数据的位置进行配置的解密方式,会导致解密流程较为繁琐,影响请求数据的解密效率。
为了解决上述问题,本发明实施例提供了一种加密数据自动识别方法,如图1所示,所述方法包括:
101、利用预设插件获取客户端向服务器发送的请求数据。
其中,预设插件可以为fiddler插件,客户端与服务器进行通信的过程中会产生很多请求数据和响应数据,客户端会将请求数据发送给服务器,服务器会将响应数据反馈给客户端,fiddler插件作为客户端与服务器之间的代理服务器能够获取上述请求数据和响应数据,在实施例一中先详细介绍自动识别请求数据中的加密数据的过程,稍后在实施例二中详细介绍自动识别响应数据中的加密数据的过程。
本发明实施例主要应用于自动识别请求数据和响应数据中的加密数据,并进行解密的场景。本发明实施例的执行主体为能够自动识别请求数据和响应数据中的加密数据的装置或者设备,如安装有fiddler插件的客户端。
首先设定变量private ArrayList arrayList,变量private ArrayListarrayList用来接收ini文件中配置的各个域名rname及其对应的键值key,每当fiddler插件获取到客户端与服务器之间通信的请求数据或者响应数据时,会利用函数arrayList.Clear()将变量arrayList进行清空,以便将重新读取ini文件的域名和键值写入变量arrayList。
需要说明的是,由于RequestDecrypt.cs、RequestDecryptFormat.cs、RequestDecryptWebForm.cs只是http请求最终数据展现形式上的不同(根据解密后的数据类型分别展现为原文、JSON格式化、表单),但是自动识别加密数据的逻辑均相同,因此,本发明实施例仅以RequestDecrypt.cs为例来说明针对http请求数据中加密数据的自动识别逻辑。
102、分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据。
对于本发明实施例,首先检测请求数据对应的请求头部中是否包含加密数据,针对该过程,所述方法包括:基于请求头部对应的参数列表,确定所述请求头部中的域名;获取预设配置文件中的各个配置域名,并将所述请求头部中的域名与所述各个配置域名进行匹配;若所述配置文件中存在与所述请求头部中的域名相匹配的目标域名,则确定所述请求数据为目标请求数据,并判定所述请求数据对应的请求方式是否为get请求方式;若所述请求数据对应的请求方式为get请求方式,则获取所述请求头部中的参数数据;判断所述参数数据整体是否符合目标编码格式;若所述参数数据整体符合所述目标编码格式,则确定所述参数数据整体被加密,对所述参数数据执行解密操作。
具体地,首先利用函数optionini.isIniExist()判定预设配置文件(fiddler_plugin.ini文件)是否存在,当确定ini文件存在时,利用函数ienumerator=mRequestHeaders.GetEnumerator()获取请求头部对应的参数列表,之后利用函数ienumerator.Current.ToString().StartsWith("Host:",true,null),从参数列表中确定“Host:”,并利用函数hostName=ienumerator.Current.ToString().Split(':')[1].Trim()将参数列表中“Host:”后面的域名取出。由此通过上述函数能够获取请求数据的请求头部中的域名hostname。同时通过DecryptionUtil.setCurrHost()将此请求的hostname赋值给私有变量currHost(DecryptionUtil.cs中),提供给ResponseDecryption.cs来获取。
进一步地,进入header方法,如图2所示,通过optionini.IniReadValue方法获取ini文件中的所有配置域名rname和对应的键值key,并利用函数arrayList.Add(newobject[]{rname,key}),将获取到的各个配置域名和键值添加到arrayList中,此时如果arrayList中的配置域名的数量等于0,则不在执行检测逻辑,说明ini文件为空;如果arrayList中的配置域名的数量大于0,则将获取到的请求头部中的域名与添加至arrayList中的各个配置域名进行匹配,该匹配过程可以通过使用迭代函数foreach(Object[]x in arrayList)来实现,该迭代函数中的处理逻辑如下:用x[0]表示arrayList中的配置域名rname,同时用x[1]表示对应的键值key,如果函数x[0].ToString().Trim().Equals(hostName)为false,则说明配置文件ini中不存在与请求头部中的域名hostname相匹配的目标域名,即该条请求是无关请求,不执行检测逻辑;如果函数x[0].ToString().Trim().Equals(hostName)为true,则说明配置文件ini中存在与请求头部中的域名hostname相匹配的目标域名,即该条请求为相关请求(目标请求),需要执行检测逻辑。
进一步地,当确定该条请求是目标请求时,还需要判定请求数据对应的请求方式是否为get请求方式,由于get请求方式通常将加密数据放到请求头部中,因此如果是get请求方式,则可以通过函数mRequestHeaders.RequestPath获取请求数据中的url地址,并通过函数requestUrl.Trim().IndexOf("?")判断url地址中是否包含“?”,如果存在“?”,则通过函数requestUrl.Trim().Split(new char[]{'?'},获取“?”后面的参数数据,即请求头部对应的参数数据。
进一步地,检测请求头部对应的参数数据是否被整体加密,具体地,可以判定参数数据整体是否符合base64编码格式(目标编码格式),如果参数数据整体符合base64编码格式,则确定参数数据整体被加密了,对整个参数数据执行解密操作;如果参数数据整体不符合base64编码格式,则还要对参数数据进行部分检测。针对判定参数数据整体是否符合base64编码格式的具体过程,作为一种可选实施方式,所述方法包括:将所述参数数据对应的字符串中的转义符去除,得到去除转义符后的字符串;判定所述去除转义符后的字符串对应的长度是否大于4且能被4整除;若所述去除转义符后的字符串对应的长度大于4且能被4整除,则判定所述去除转义符后的字符串是否符合第一预设正则表达式;若所述去除转义符后的字符串符合所述第一预设正则表达式,则确定所述参数数据整体符合所述目标编码格式。
具体地,利用函数s=s.Replace(@"\","")将参数数据中的转义符“\”去掉,之后判定去除转义符后的字符串对应的长度是否大于4且能够4整除,如果小于4或者不能被4整除,说明参数数据没有被整体加密;如果大于4且能够被4整除,则判定去除转义符后的字符串是否符合第一预设正则表达式@"^([A-Z]|[a-z]|[0-9]|/|\+)*={0,2}$",如果符合第一预设正则表达式,说明该参数数据被整体加密,可以使用函数DecryptionUtil.DecryptBlowfish对请求头部对应的参数数据进行解密,并将解密后的数据进行显示。
进一步地,如果去除转义符后的字符串不符合第一预设正则表达式,则确定参数数据不符合base64编码格式,即参数数据没有被整体加密,继续判定参数数据是否被部分加密,基于此,所述方法还包括:若所述参数数据整体不符合所述目标编码格式,则利用第一特殊字符对所述参数数据对应的字符串进行分割,得到所述参数数据中的值元素对应的字符串;判定所述参数数据中的值元素对应的字符串是否符合目标编码格式;若所述参数数据中的值元素对应的字符串符合目标编码格式,则确定所述参数数据被部分加密,对所述所述参数数据中的值元素执行解密操作;若所述参数数据中的值元素对应的字符串不符合所述目标编码格式,则确定所述请求头部不存在加密数据。
具体地,如果参数数据整体不符合base64编码格式,则判断参数数据中是否包含第一特殊字符“&”,如果包含该第一特殊字符,则利用该第一特殊字符“&”对参数数据对应的字符串进行分割,得到多个键值对key=value,之后通过“=”对每个键值对进行分割,得到value值,接着采用上面的方式判定每个value值对应的字符串是否符合base64编码格式,如果任意一个value值符合base64编码格式,说明该value值被加密,使用DecryptionUtil.DecryptBlowfish进行解密,并用解密后的数据替换加密数据;如果所有value值均不符合base64编码格式,说明请求数据对应的请求头部中不包含加密数据。进一步地,如果参数数据中不包含第一特殊字符“&”,则利用正则表达式@"^.+=[^=]+$"来判定参数数据是否是键值对的形式,如果是键值对的形式,则以“=”进行分割,获取value值,并判定该value值是否符合base64编码格式,如果符合,说明该value值是加密数据,对其对其执行解码操作;如果不符合,说明请求数据对应的请求头部中不存在加密数据。
在具体应用场景中,如果请求数据对应的请求头部中不存在加密数据,则进入body方法中,判定请求数据对应的请求主体中是否存在加密数据,基于此,所述方法包括:若所述请求数据对应的请求方式不是get请求方式,或者所述请求头部不存在加密数据,则判定所述请求数据对应的请求方式是否为post方式;若所述请求数据对应的请求方式为post请求方式,则判定所述请求主体对应的字符串是否符合所述目标编码格式;若所述请求主体对应的字符串符合所述目标编码格式,则对所述请求主体执行解密操作;若所述请求主体对应的字符串不符合所述目标编码格式,则判定所述请求主体是否是JSON格式数据;若所述请求主体是JSON格式数据,则利用第二特殊字符对所述请求主体对应的字符串进行分割,得到所述请求主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式;若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。。
进一步地,在所述判定所述请求主体是否是JSON格式数据之后,所述方法还包括:若所述请求主体不是JSON格式数据,则对所述请求主体进行按行切割,并分别判定各行被切割的字段是否符合所述目标编码格式;若任意一行被切割的字段符合所述目标编码格式,则对所述任意一行被切割的字段执行解密操作。
具体地,如图3所示,进入body方法之后,如果请求数据对应的域名不在ini文件中,即变量zeroHit=true,则说明请求数据不是目标请求数据,直接返回;如果请求数据对应的域名在ini文件中,即变量zeroHit=false,则说明请求数据是目标请求数据。与此同时,利用函数!breakFlag&&(mBody!=null)&&(hostName!=""),判断请求数据对应的请求主体是否为空,或者是否没有请求域名,如果请求主体不为空,且存在请求域名,则判定请求数据对应的请求方式是否为post请求方式,如果是post请求方式,则获取ini文件中与请求域名相匹配的目标域名对应的键值key,以便利用该键值key进行解密。
进一步地,由于post请求方式通常将加密数据放到请求主体中,因此如果是post请求方式,则判定请求主体对应的字符串是否符合base64编码格式,如果请求主体对应的字符串符合base64编码格式,则对请求主体进行解密,并显示解密后的数据;如果请求主体对应的字符串不符合base64编码格式,则判断请求主体对应的字符串中是否包含“{”,即初步判断请求主体是否为JSON格式数据,如果请求主体对应的字符串中包含该“{”,则进一步通过正则表达式@"^\{\s*[\s\S]*:+[\s\S]*\s*\}$"),判断请求主体是否为JSON格式数据,如果与该正则表达式匹配,则说明请求主体是JSON格式数据,利用”对请求主体对应的字符串进行分割,得到多组分割字符串,之后利用函数DecryptionUtil.CheckStrIsBase64Code,分别判定每组分割字符串是否符合base64编码格式,如果某组分割字符串符合base64编码格式,说明其被加密,对该组分割字符串执行解密操作,并利用解密后的数据进行替换,直至每组分割字符串均被遍历。
进一步地,请求主体不是JSON格式数据,则通过函数Split(new char[]{'\n'})对请求主体进行按行分割,得到多行被分割的字段,如果某行字段符合base64编码格式,说明其被加密,对该行字段执行解密操作,并利用解密后的数据进行替换,直至每行被分割的字段均被遍历。
103、若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
对于本发明实施例,按照上述方式可以自动识别出请求头部或者请求主体中的加密数据,对其进行解密后,利用解密数据替换加密数据,并进行展示。
本发明实施例提供的一种加密数据自动识别方法,与目前在配置文件中预先配置好加密数据所在位置的方式相比,本发明能够利用预设插件获取客户端向服务器发送的请求数据;并分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。本发明通过对请求数据的请求头部和请求主体进行检测,能够自动识别出请求数据中的加密数据,并进行解密,从而能够简化解密流程,提高解密效率。
进一步的,为了更好的说明自动识别解密数据的过程,作为对上述实施例的细化和扩展,本发明实施例提供了另一种加密数据自动识别方法,如图4所示,所述方法包括:
201、利用预设插件获取所述服务器向客户端反馈的响应数据。
对于本发明实施例,针对识别响应数据中加密数据的过程,由于ResponseDecryption.cs、ResponseDecryptionFormat.cs只是展现形式上不同,因此实施例二仅拿ResponseDecryption.cs来说明自动识别响应数据中加密数据的过程。
具体地,如图5所示,进入header方法,首先设定变量responseDataType,变量responseDataType用于表示响应数据对应的数据类型,变量responseDataType的初始赋值为0。之后利用函数ienumerator=mResponseHeaders.GetEnumerator(),获取响应数据对应的响应头部中的参数数据。
202、确定所述响应数据对应的响应头部中的内容类型字段。
对于本发明实施例,在获取参数数据中的内容类型字段之前,所述方法方法还包括:确定所述响应数据对应的响应头部中的内容长度字段;若所述内容长度字段小于预设长度,则确定所述响应数据对应的响应主体中不存在加密数据;若所述内容长度字段大于或者等于所述预设长度,则获取所述响应数据对应的响应头部中的内容类型字段。
具体地,在获取响应头部中的参数数据之后,利用函数ienumerator.Current.ToString().StartsWith("Content-Length:",true,null)获取参数数据中的内容长度字段,如果该内容长度字段小于预设长度4,则确定响应数据对应的响应主体中不包含加密数据,即该响应数据不是目标响应数据;如果该内容长度字段大于或者等于预设长度4,则利用函数ienumerator.Current.ToString().StartsWith("Content-Type:",true,null),获取参数数据中的内容类型字段,以便基于该内容类型字段过滤掉无关的响应数据。
203、基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据。
对于本发明实施例,在获取请求头部中的内容类型字段之后,需要根据该内容字段对变量responseDataType进行赋值,针对该赋值过程,所述方法包括:若所述内容类型字段符合第二预设正则表达式,则将响应数据类型参数赋值为第一值;若所述内容类型字段符合第三预设正则表达式,则将所述响应数据类型参数赋值为第二值。
具体地,判定内容类型字段是否与第二预设正则表达式@"^[Cc]ontent-[Tt]ype\:.*/json.*$"相匹配,如果内容类型字段与第二预设正则表达式相匹配,则将变量responseDataType赋值为1,表示响应数据对应的响应主体为JSON格式数据。与此同时,判定内容类型字段是否与第三预设正则表达式@"^[Cc]ontent-[Tt]ype\:\s*text/.*$"相匹配,如果内容类型字段与第三预设正则表达式相匹配,则将变量responseDataType赋值为2,表示响应数据对应的响应主体为文本格式数据,但是不确定是否为JSON格式数据。
进一步地,为了判定响应主体中是否存在加密数据,步骤203具体包括:若所述响应数据类型参数为第一值,则确定所述响应数据对应的响应主体为JSON格式数据;利用第二特殊字符对所述响应主体对应的字符串进行分割,得到所述响应主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式;若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
具体地,如图6所示,进入body方法,首先判断变量responseDataType是否大于0,如果变量responseDataType=0,说明响应数据的类型可能是图片或者视频,即不是本发明实施例关注的目标响应数据。之后将ini文件中的各个配置域名及其对应的键值key,添加到arrayList中,判断ini文件中是否存在与响应请求的域名相匹配的目标域名,如果存在,则确定响应数据是目标响应数据。
进一步地,当变量responseDataType为1时,说明响应数据对应的响应主体为JSON格式数据,同理利用第二特殊字符对响应对应的字符串进行分割,得到响应主体中的多组分割字符串,并分别判定多组分割字符串是否符合base64编码格式,若任意一组分割字符串符合base64编码格式,则确定该组分割字符串被加密,对其执行解密参数,并利用解密后的数据替换加密数据进行显示。
在具体应用场景中,若所述响应数据类型参数为第二值,则暂时确定所述响应数据对应的响应主体为文本格式数据,并利用第四预设正则表达式,检测所述响应数据对应的响应主体是否为JSON格式数据;若所述响应数据对应的响应主体不是JSON格式数据,则判断所述响应主体整体是否符合目标编码格式;若所述响应主体整体符合所述目标编码格式,则确定所述响应主体整体被加密,对所述响应主体执行解密操作。
具体地,当变量responseDataType为2时,利用第四预设正则表达式@"^\{\s*[\s\S]*:+[\s\S]*\s*\}$")进一步判定响应主体是否为JSON格式数据,如果是JSON格式数据,处理过程同上;如果不同JSON格式数据,则利用函数DecryptionUtil.CheckStrIsBase64Code,判定响应主体整体是否被加密,如果响应主体整体都被加密了,则对响应主体整体进行解密,并对解密后的数据进行显示。
为了清晰本发明实施例中所涉及函数的使用方式,对各函数中的参数进行了如下说明:
204、若所述响应数据对应的响应主体中存在加密数据,则对所述响应主体中的加密数据进行解密。
本发明实施例提供的另一种加密数据自动识别方法,与目前在配置文件中预先配置好加密数据所在位置的方式相比,本发明能够利用预设插件获取所述服务器向客户端反馈的响应数据;并确定所述响应数据对应的响应头部中的内容类型字段;与此同时,基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据;若所述响应数据对应的响应主体中存在加密数据,则对所述响应主体中的加密数据进行解密。本发明基于响应头部中的内容类型字段,能够自动识别出响应主体中的加密数据,并进行解密,从而能够简化解密流程,提高解密效率。
进一步地,作为图1的具体实现,本发明实施例提供了一种加密数据自动识别装置,如图7所示,所述装置包括:获取单元31、检测单元32和解密单元33。
所述获取单元31,可以用于利用预设插件获取客户端向服务器发送的请求数据。
所述检测单元32,可以用于分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据。
所述解密单元33,可以用于若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
在具体应用场景中,所述检测单元32,如图8所示,包括:确定模块321、匹配模块322、判定模块323和获取模块324。
所述确定模块321,可以用于基于请求头部对应的参数列表,确定所述请求头部中的域名。
所述匹配模块322,可以用于获取预设配置文件中的各个配置域名,并将所述请求头部中的域名与所述各个配置域名进行匹配。
所述判定模块323,可以用于若所述配置文件中存在与所述请求头部中的域名相匹配的目标域名,则确定所述请求数据为目标请求数据,并判定所述请求数据对应的请求方式是否为get请求方式。
所述获取模块324,可以用于若所述请求数据对应的请求方式为get请求方式,则获取所述请求头部中的参数数据。
所述判定模块323,还可以用于判断所述参数数据整体是否符合目标编码格式。
所述所述确定模块321,还可以用于若所述参数数据整体符合所述目标编码格式,则确定所述参数数据整体被加密,对所述参数数据执行解密操作。
进一步地,所述判定模块323,具体可以用于将所述参数数据对应的字符串中的转义符去除,得到去除转义符后的字符串;判定所述去除转义符后的字符串对应的长度是否大于4且能被4整除;若所述去除转义符后的字符串对应的长度大于4且能被4整除,则判定所述去除转义符后的字符串是否符合第一预设正则表达式;若所述去除转义符后的字符串符合所述第一预设正则表达式,则确定所述参数数据整体符合所述目标编码格式。
在具体应用场景中,所述检测单元32,还包括:分割模块325。
所述分割模块325,可以用于若所述参数数据整体不符合所述目标编码格式,则利用第一特殊字符对所述参数数据对应的字符串进行分割,得到所述参数数据中的值元素对应的字符串。
所述判定模块323,还可以用于判定所述参数数据中的值元素对应的字符串是否符合目标编码格式。
所述确定模块321,还可以用于若所述参数数据中的值元素对应的字符串符合目标编码格式,则确定所述参数数据被部分加密,对所述所述参数数据中的值元素执行解密操作。
所述确定模块321,还可以用于若所述参数数据中的值元素对应的字符串不符合所述目标编码格式,则确定所述请求头部不存在加密数据。
在具体应用场景中,所述检测单元32,还包括:解密模块326。
所述判定模块323,还可以用于若所述请求数据对应的请求方式不是get请求方式,或者所述请求头部不存在加密数据,则判定所述请求数据对应的请求方式是否为post请求方式。
所述判定模块323,还可以用于若所述请求数据对应的请求方式为post请求方式,则判定所述请求主体对应的字符串是否符合所述目标编码格式。
所述解密模块326,可以用于若所述请求主体对应的字符串符合所述目标编码格式,则对所述请求主体执行解密操作。
所述判定模块323,还可以用于若所述请求主体对应的字符串不符合所述目标编码格式,则判定所述请求主体是否是JSON格式数据。
所述判定模块323,还可以用于若所述请求主体是JSON格式数据,则利用第二特殊字符对所述请求主体对应的字符串进行分割,得到所述请求主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式。
所述解密模块326,还可以用于若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
进一步地,所述分割模块325,还可以用于若所述请求主体不是JSON格式数据,则对所述请求主体进行按行切割,并分别判定各行被切割的字段是否符合所述目标编码格式。
所述解密模块326,还可以用于若任意一行被切割的字段符合所述目标编码格式,则对所述任意一行被切割的字段执行解密操作。
在具体应用场景中,所述装置还包括:确定单元34。
所述获取单元31,还可以用于利用预设插件获取所述服务器向客户端反馈的响应数据。
所述确定单元34,可以用于确定所述响应数据对应的响应头部中的内容类型字段。
所述检测单元33,还可以用于基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据。
所述解密单元34,还可以用于若所述响应数据对应的响应主体中存在加密数据,则对所述响应主体中的加密数据进行解密。
在具体应用场景中,所述确定单元34,还可以用于确定所述响应数据对应的响应头部中的内容长度字段。
所述确定单元34,还可以用于若所述内容长度字段小于预设长度,则确定所述响应数据对应的响应主体中不存在加密数据。
所述获取单元31,还可以用于若所述内容长度字段大于或者等于所述预设长度,则获取所述响应数据对应的响应头部中的内容类型字段。
在具体应用场景中,所述装置还包括:赋值单元35。
所述赋值单元35,可以用于若所述内容类型字段符合第二预设正则表达式,则将响应数据类型参数赋值为第一值;若所述内容类型字段符合第三预设正则表达式,则将所述响应数据类型参数赋值为第二值。
在具体应用场景中,所述确定模块321,还可以用于若所述响应数据类型参数为第一值,则确定所述响应数据对应的响应主体为JSON格式数据。
所述分割模块325,还可以用于利用第二特殊字符对所述响应主体对应的字符串进行分割,得到所述响应主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式。
所述解密模块326,还可以用于若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
在具体应用场景中,所述判定模块323,还可以用于若所述响应数据类型参数为第二值,则暂时确定所述响应数据对应的响应主体为文本格式数据,并利用第四预设正则表达式,检测所述响应数据对应的响应主体是否为JSON格式数据。
所述判定模块323,还可以用于若所述响应数据对应的响应主体不是JSON格式数据,则判断所述响应主体整体是否符合目标编码格式。
所述确定模块321,还可以用于若所述响应主体整体符合所述目标编码格式,则确定所述响应主体整体被加密,对所述响应主体执行解密操作。
需要说明的是,本发明实施例提供的一种加密数据自动识别装置所涉及各功能模块的其他相应描述,可以参考图1所示方法的对应描述,在此不再赘述。
基于上述如图1所示方法,相应的,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:利用预设插件获取客户端向服务器发送的请求数据;分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
基于上述如图1所示方法和如图7所示装置的实施例,本发明实施例还提供了一种计算机设备的实体结构图,如图9所示,该计算机设备包括:处理器41、存储器42、及存储在存储器42上并可在处理器上运行的计算机程序,其中存储器42和处理器41均设置在总线43上所述处理器41执行所述程序时实现以下步骤:利用预设插件获取客户端向服务器发送的请求数据;分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密。
通过本发明的技术方案,能够自动识别出请求数据和响应数据中的加密数据,并完成解密操作,从而能够简化解密流程,提高解密效率。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (11)
1.一种加密数据自动识别方法,其特征在于,包括:
利用预设插件获取客户端向服务器发送的请求数据;
分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密;
检测所述请求数据对应的请求头部是否存在加密数据,包括:
基于请求头部对应的参数列表,确定所述请求头部中的域名;
获取预设配置文件中的各个配置域名,并将所述请求头部中的域名与所述各个配置域名进行匹配;
若所述配置文件中存在与所述请求头部中的域名相匹配的目标域名,则确定所述请求数据为目标请求数据,并判定所述请求数据对应的请求方式是否为get请求方式;
若所述请求数据对应的请求方式为get请求方式,则获取所述请求头部中的参数数据;
判断所述参数数据整体是否符合目标编码格式;
若所述参数数据整体符合所述目标编码格式,则确定所述参数数据整体被加密,对所述参数数据执行解密操作;
在所述判断所述参数数据整体是否符合目标编码格式之后,所述方法还包括:
若所述参数数据整体不符合所述目标编码格式,则利用第一特殊字符对所述参数数据对应的字符串进行分割,得到所述参数数据中的值元素对应的字符串;
判定所述参数数据中的值元素对应的字符串是否符合目标编码格式;
若所述参数数据中的值元素对应的字符串符合目标编码格式,则确定所述参数数据被部分加密,对所述所述参数数据中的值元素执行解密操作;
若所述参数数据中的值元素对应的字符串不符合所述目标编码格式,则确定所述请求头部不存在加密数据;
检测所述请求数据对应的请求主体是否存在加密数据,包括:
若所述请求数据对应的请求方式不是get请求方式,或者所述请求头部不存在加密数据,则判定所述请求数据对应的请求方式是否为post请求方式;
若所述请求数据对应的请求方式为post请求方式,则判定所述请求主体对应的字符串是否符合所述目标编码格式;
若所述请求主体对应的字符串符合所述目标编码格式,则对所述请求主体执行解密操作;
若所述请求主体对应的字符串不符合所述目标编码格式,则判定所述请求主体是否是JSON格式数据;
若所述请求主体是JSON格式数据,则利用第二特殊字符对所述请求主体对应的字符串进行分割,得到所述请求主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式;
若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
2.根据权利要求1所述的方法,其特征在于,所述判断所述参数数据整体是否符合目标编码格式,包括:
将所述参数数据对应的字符串中的转义符去除,得到去除转义符后的字符串;
判定所述去除转义符后的字符串对应的长度是否大于4且能被4整除;
若所述去除转义符后的字符串对应的长度大于4且能被4整除,则判定所述去除转义符后的字符串是否符合第一预设正则表达式;
若所述去除转义符后的字符串符合所述第一预设正则表达式,则确定所述参数数据整体符合所述目标编码格式。
3.根据权利要求1所述的方法,其特征在于,在所述判定所述请求主体是否是JSON格式数据之后,所述方法还包括:
若所述请求主体不是JSON格式数据,则对所述请求主体进行按行切割,并分别判定各行被切割的字段是否符合所述目标编码格式;
若任意一行被切割的字段符合所述目标编码格式,则对所述任意一行被切割的字段执行解密操作。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用预设插件获取所述服务器向客户端反馈的响应数据;
确定所述响应数据对应的响应头部中的内容类型字段;
基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据;
若所述响应数据对应的响应主体中存在加密数据,则对所述响应主体中的加密数据进行解密。
5.根据权利要求4所述的方法,其特征在于,在所述确定所述响应数据对应的响应头部中的内容类型字段之前,所述方法还包括:
确定所述响应数据对应的响应头部中的内容长度字段;
若所述内容长度字段小于预设长度,则确定所述响应数据对应的响应主体中不存在加密数据;
若所述内容长度字段大于或者等于所述预设长度,则获取所述响应数据对应的响应头部中的内容类型字段。
6.根据权利要求4所述的方法,其特征在于,在所述基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据之前,所述方法还包括:
若所述内容类型字段符合第二预设正则表达式,则将响应数据类型参数赋值为第一值;
若所述内容类型字段符合第三预设正则表达式,则将所述响应数据类型参数赋值为第二值。
7.根据权利要求6所述的方法,其特征在于,所述基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据,包括:
若所述响应数据类型参数为第一值,则确定所述响应数据对应的响应主体为JSON格式数据;
利用第二特殊字符对所述响应主体对应的字符串进行分割,得到所述响应主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式;
若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
8.根据权利要求6所述的方法,其特征在于,所述基于所述内容类型字段,检测所述响应数据对应的响应主体中是否存在加密数据,包括:
若所述响应数据类型参数为第二值,则暂时确定所述响应数据对应的响应主体为文本格式数据,并利用第四预设正则表达式,检测所述响应数据对应的响应主体是否为JSON格式数据;
若所述响应数据对应的响应主体不是JSON格式数据,则判断所述响应主体整体是否符合目标编码格式;
若所述响应主体整体符合所述目标编码格式,则确定所述响应主体整体被加密,对所述响应主体执行解密操作。
9.一种加密数据自动识别装置,其特征在于,包括:
获取单元,用于利用预设插件获取客户端向服务器发送的请求数据;
检测单元,用于分别检测所述请求数据对应的请求头部和请求主体是否存在加密数据;
解密单元,用于若所述请求头部或者所述请求主体存在所述加密数据,则对所述请求头部或者所述请求主体中的加密数据进行解密;
所述检测单元包括:
确定模块,用于基于请求头部对应的参数列表,确定所述请求头部中的域名;
匹配模块,用于获取预设配置文件中的各个配置域名,并将所述请求头部中的域名与所述各个配置域名进行匹配;
判定模块,用于若所述配置文件中存在与所述请求头部中的域名相匹配的目标域名,则确定所述请求数据为目标请求数据,并判定所述请求数据对应的请求方式是否为get请求方式;
获取模块,用于若所述请求数据对应的请求方式为get请求方式,则获取所述请求头部中的参数数据;
所述判定模块,还用于判断所述参数数据整体是否符合目标编码格式;
所述确定模块,还用于若所述参数数据整体符合所述目标编码格式,则确定所述参数数据整体被加密,对所述参数数据执行解密操作;
所述检测单元还包括分割模块:
所述分割模块,用于若所述参数数据整体不符合所述目标编码格式,则利用第一特殊字符对所述参数数据对应的字符串进行分割,得到所述参数数据中的值元素对应的字符串;
所述判定模块,还用于判定所述参数数据中的值元素对应的字符串是否符合目标编码格式;
所述确定模块,还用于若所述参数数据中的值元素对应的字符串符合目标编码格式,则确定所述参数数据被部分加密,对所述所述参数数据中的值元素执行解密操作;
所述确定模块,还用于若所述参数数据中的值元素对应的字符串不符合所述目标编码格式,则确定所述请求头部不存在加密数据;
所述检测单元还包括解密模块:
所述判定模块,还用于若所述请求数据对应的请求方式不是get请求方式,或者所述请求头部不存在加密数据,则判定所述请求数据对应的请求方式是否为post请求方式;
所述判定模块,还用于若所述请求数据对应的请求方式为post请求方式,则判定所述请求主体对应的字符串是否符合所述目标编码格式;
所述解密模块,用于若所述请求主体对应的字符串符合所述目标编码格式,则对所述请求主体执行解密操作;
所述判定模块,还用于若所述请求主体对应的字符串不符合所述目标编码格式,则判定所述请求主体是否是JSON格式数据;
所述判定模块,还用于若所述请求主体是JSON格式数据,则利用第二特殊字符对所述请求主体对应的字符串进行分割,得到所述请求主体中的多组分割字符串,并分别判定所述多组分割字符串是否符合目标编码格式;
所述解密模块,还用于若任意一组分割字符串符合目标编码格式,则对所述任意一组分割字符串执行解密操作。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210331905.1A CN114928466B (zh) | 2022-03-31 | 2022-03-31 | 加密数据自动识别方法、装置、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210331905.1A CN114928466B (zh) | 2022-03-31 | 2022-03-31 | 加密数据自动识别方法、装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114928466A CN114928466A (zh) | 2022-08-19 |
CN114928466B true CN114928466B (zh) | 2023-11-07 |
Family
ID=82804559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210331905.1A Active CN114928466B (zh) | 2022-03-31 | 2022-03-31 | 加密数据自动识别方法、装置、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114928466B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102256162A (zh) * | 2011-07-22 | 2011-11-23 | 网宿科技股份有限公司 | 基于实时文件格式转换的优化流媒体点播的方法和系统 |
CN106412024A (zh) * | 2016-09-07 | 2017-02-15 | 网易无尾熊(杭州)科技有限公司 | 一种页面获取方法和装置 |
CN109150821A (zh) * | 2018-06-01 | 2019-01-04 | 成都通甲优博科技有限责任公司 | 基于超文本传输协议http的数据交互方法及系统 |
CN113656248A (zh) * | 2021-08-17 | 2021-11-16 | 江南造船(集团)有限责任公司 | Pdm系统文件上传进程监控捕获方法、系统、介质及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166931A (zh) * | 2011-12-15 | 2013-06-19 | 华为技术有限公司 | 一种安全传输数据方法,装置和系统 |
US9202020B2 (en) * | 2012-08-21 | 2015-12-01 | Appsense Limited | File protection using session-based digital rights management |
US9576144B2 (en) * | 2014-09-15 | 2017-02-21 | Unisys Corporation | Secured file system management |
-
2022
- 2022-03-31 CN CN202210331905.1A patent/CN114928466B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102256162A (zh) * | 2011-07-22 | 2011-11-23 | 网宿科技股份有限公司 | 基于实时文件格式转换的优化流媒体点播的方法和系统 |
CN106412024A (zh) * | 2016-09-07 | 2017-02-15 | 网易无尾熊(杭州)科技有限公司 | 一种页面获取方法和装置 |
CN109150821A (zh) * | 2018-06-01 | 2019-01-04 | 成都通甲优博科技有限责任公司 | 基于超文本传输协议http的数据交互方法及系统 |
CN113656248A (zh) * | 2021-08-17 | 2021-11-16 | 江南造船(集团)有限责任公司 | Pdm系统文件上传进程监控捕获方法、系统、介质及装置 |
Non-Patent Citations (1)
Title |
---|
基于FFMPEG的视频转换与发布系统;任严;韩臻;刘丽;;计算机工程与设计(20);114 * |
Also Published As
Publication number | Publication date |
---|---|
CN114928466A (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108961052B (zh) | 区块链数据的验证方法、存储方法、装置、设备和介质 | |
CN108093026B (zh) | 多租户请求的处理方法及装置 | |
CN111475376A (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
CN112734361B (zh) | 一种分布式协同办公数据处理方法及系统 | |
CN110309669B (zh) | 一种数据标注方法、装置及设备 | |
CN112887451B (zh) | 域名解析方法、装置及计算机设备 | |
CN102932336A (zh) | 终端标识方法与装置 | |
CN114610951A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN112069425A (zh) | 日志管理方法、装置、电子设备及可读存储介质 | |
CN110619022B (zh) | 基于区块链网络的节点检测方法、装置、设备及存储介质 | |
CN112306495A (zh) | 图片校验方法、装置、计算机设备及计算机可读存储介质 | |
CN118133345A (zh) | 报文数据处理方法、装置、计算机设备和存储介质 | |
CN108133026B (zh) | 一种多数据的处理方法、系统及存储介质 | |
CN114928466B (zh) | 加密数据自动识别方法、装置、存储介质及计算机设备 | |
CN116644250A (zh) | 页面检测方法、装置、计算机设备和存储介质 | |
CN105871982A (zh) | 内容推送的方法、装置以及系统 | |
CN114661793A (zh) | 模糊查询方法、装置、电子设备及存储介质 | |
CN114978646A (zh) | 一种访问权限确定方法、装置、设备和存储介质 | |
CN111371818B (zh) | 一种数据请求的验证方法、装置及设备 | |
CN107704557B (zh) | 操作互斥数据的处理方法、装置、计算机设备和存储介质 | |
CN112367302A (zh) | 一种适用于chrome浏览器的身份认证方法及系统 | |
CN106993036B (zh) | 运行环境信息处理方法及交换机 | |
CN107800561B (zh) | 资源更新方法和装置 | |
CN109885739B (zh) | 一种数据处理方法、系统及存储介质 | |
US20240314193A1 (en) | Reverse proxy server for reducing errors during communication between computer systems |
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 |