发明内容
本发明的主要目的在于提供一种HTTPS数据包的抓取方法、系统、终端及计算机可读存储介质,旨在解决现有技术中无法抓取有证书校验的app应用的问题。
为实现上述目的,本发明提供一种HTTPS数据包的抓取方法,所述HTTPS数据包的抓取方法包括如下步骤:
获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;
获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;
若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;
若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。
可选地,所述的HTTPS数据包的抓取方法,其中,所述第一参数为整型参数。
可选地,所述的HTTPS数据包的抓取方法,其中,所述预设名称包括GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE和CONNECT。
可选地,所述的HTTPS数据包的抓取方法,其中,所述将所述第二参数的数据格式化后与IP和端口进行拼接,具体包括:
将IP和端口放到所述第二参数前面,抓到的数据拼接在IP和端口后面。
可选地,所述的HTTPS数据包的抓取方法,其中,所述获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,之后还包括:
若所述第一参数不为TCP/IP类型的socket描述符,则忽略所述第一参数。
可选地,所述的HTTPS数据包的抓取方法,其中,所述获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在,之后还包括:
若所述待验证文件描述符不存在所述全局map中,则忽略所述待验证文件描述符。
可选地,所述的HTTPS数据包的抓取方法,其中,所述分析第二参数的内容,判断所述第二参数是否以预设名称开头,之后还包括:
若所述第二参数不以预设名称开头,则忽略所述第二参数。
此外,为实现上述目的,本发明还提供一种HTTPS数据包的抓取系统,其中,所述HTTPS数据包的抓取系统包括:
第一分析模块,用于获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;
文件验证模块,用于获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;
第二分析模块,用于若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;
数据拼接模块,用于若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。
此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的HTTPS数据包的抓取程序,所述HTTPS数据包的抓取程序被所述处理器执行时实现如上所述的HTTPS数据包的抓取方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有HTTPS数据包的抓取程序,所述HTTPS数据包的抓取程序被处理器执行时实现如上所述的HTTPS数据包的抓取方法的步骤。
本发明中,获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。本发明实现了有效抓取有证书校验机制的应用的HTTPS数据包。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明较佳实施例所述的HTTPS数据包的抓取方法,如图1所示,所述HTTPS数据包的抓取方法包括以下步骤:
步骤S10、获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中。
具体地,基于HOOK libc.so的connect方法,HOOK技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递,简单来说,就是把系统的程序拉出来变成自己执行代码片段,libc.so是一个操作的动态链接库文件,这个库文件里面有一个叫做connect的函数,也叫方法;获取第一参数后,在HOOK方法中分析所述第一参数是否为TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇)类型的socket描述符,若是,则将文件描述符、IP和端口(即socket描述符对应的IP和端口)记录到一个全局map中。
其中,第一参数是一个(int)整型参数,在这里它的意义是一个socket描述符,socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。
进一步地,若所述第一参数不为TCP/IP类型的socket描述符,则忽略所述第一参数,不作处理。
步骤S20、获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在。
具体地,基于HOOK libjavacrypto.so的SSL_write方法,在HOOK方法中获取待验证文件描述符(第一参数是一个结构体,描述符信息包含在这个结构体里面),在全局map中搜索待验证文件描述符是否存在。
步骤S30、若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头。
具体地,若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头,其中,所述预设名称包括GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE和CONNECT,判断所述第二参数是否以GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE或者CONNECT开头,这是http请求的所有方法类型,以这些开头,说明是http请求。
进一步地,若所述待验证文件描述符不存在所述全局map中,则忽略所述待验证文件描述符,不作处理。
步骤S40、若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。
具体地,在全局map中获取(获取步骤S20得到的socket描述符对应的IP和端口,数据在第一个保存到了map中,从map中获取)对应的IP、端口,将步骤S30分析过的数据格式化与IP、端口进行拼接(将IP和端口放到所述第二参数前面,抓到的数据拼接在IP和端口后面),将最终的数据保存到应用的私有目录(私有目录是指仅某个应用自己可管理访问的文件目录,即该目录归属于该应用)。
进一步地,若所述第二参数不以预设名称开头,则忽略所述第二参数,不作处理。
进一步地,如图2所示,基于上述HTTPS数据包的抓取方法,本发明还相应提供了一种HTTPS数据包的抓取系统,其中,所述HTTPS数据包的抓取系统包括:
第一分析模块51,用于获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;
文件验证模块52,用于获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;
第二分析模块53,用于若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;
数据拼接模块54,用于若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。
进一步地,如图3所示,基于上述HTTPS数据包的抓取方法和系统,本发明还相应提供了一种终端,所述终端包括处理器10、存储器20及显示器30。图3仅示出了终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件及各类数据,例如所述安装终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有HTTPS数据包的抓取程序40,该HTTPS数据包的抓取程序40可被处理器10所执行,从而实现本申请中HTTPS数据包的抓取方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述HTTPS数据包的抓取方法等。
所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述终端的信息以及用于显示可视化的用户界面。所述终端的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述存储器20中HTTPS数据包的抓取程序40时实现以下步骤:
获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;
获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;
若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;
若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。
其中,所述第一参数为整型参数。
其中,所述预设名称包括GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE和CONNECT。
其中,所述将所述第二参数的数据格式化后与IP和端口进行拼接,具体包括:
将IP和端口放到所述第二参数前面,抓到的数据拼接在IP和端口后面。
其中,所述获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,之后还包括:
若所述第一参数不为TCP/IP类型的socket描述符,则忽略所述第一参数。
其中,所述获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在,之后还包括:
若所述待验证文件描述符不存在所述全局map中,则忽略所述待验证文件描述符。
其中,所述分析第二参数的内容,判断所述第二参数是否以预设名称开头,之后还包括:
若所述第二参数不以预设名称开头,则忽略所述第二参数。
本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有HTTPS数据包的抓取程序,所述HTTPS数据包的抓取程序被处理器执行时实现如上所述的HTTPS数据包的抓取方法的步骤。
综上所述,本发明提供一种HTTPS数据包的抓取方法、系统、终端及计算机可读存储介质,所述方法包括:获取第一参数,分析所述第一参数是否为TCP/IP类型的socket描述符,若是,则将文件描述符、IP和端口记录到一个全局map中;获取待验证文件描述符,在所述全局map中搜索所述待验证文件描述符是否存在;若所述待验证文件描述符存在所述全局map中,则分析第二参数的内容,判断所述第二参数是否以预设名称开头;若所述第二参数以预设名称开头,则在所述全局map中获取对应的IP和端口,并将所述第二参数的数据格式化后与IP和端口进行拼接,将最终的数据保存到应用的私有目录。本发明实现了有效抓取有证书校验机制的应用的HTTPS数据包。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者终端中还存在另外的相同要素。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的计算机可读存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的计算机可读存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。