CN113535593B - 应用程序的抓包方法、装置、电子设备和存储介质 - Google Patents
应用程序的抓包方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113535593B CN113535593B CN202111079312.2A CN202111079312A CN113535593B CN 113535593 B CN113535593 B CN 113535593B CN 202111079312 A CN202111079312 A CN 202111079312A CN 113535593 B CN113535593 B CN 113535593B
- Authority
- CN
- China
- Prior art keywords
- packet
- application program
- capturing
- file
- target application
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种应用程序的抓包方法、装置、电子设备和存储介质,应用于数据处理技术领域,其中,方法包括:获取与目标应用程序对应的抓包管理的动态链接库文件;将动态链接库文件注入目标应用程序;调用动态链接库文件中的框架初始化函数,以初始化目标应用程序的数据平面开发套件DPDK抓包框架;获取与目标应用程序对应的抓包工具的可执行文件;通过抓包工具的可执行文件,对目标应用程序进行抓包。以解决现有技术中,DPDK应用程序不会主动启用抓包框架,需要由应用程序开发者根据实际需要自行启用,浪费了开发精力,并且,抓包效果较差的问题。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种应用程序的抓包方法、装置、电子设备和存储介质。
背景技术
近年来, 随着网络的普及, 互联网用户越来越多, 随之带来的访问流量也越来越大。在日常工作中, 会经常涉及到网络方面的排错。在传统Linux TCP/IP协议栈中, 通常可以借助于ip、ifconfig、ss、netstat等工具来查看当前环境中的网络情况, 通过tcpdump、wireshare等工具来对当前环境进行抓包分析, 以便作为排错时的相关依据。
在DPDK(数据平面开发套件,Data Plane Development Kit)场景下, 由于采用了Kernel Bypass(内核旁路)的技术, 绕过了Linux内核TCP/IP协议栈对数据包的处理, 而常用的网络排错工具都是基于Linux内核实现, 所以在DPDK场景中, 无法通过这些工具来进行定位排错。
相关技术中,为了解决无法通过tcpdump、wirshare等工具抓取DPDK应用程序数据包的问题, 在DPDK 16.07的版本中引入了一个DPDK数据包捕获开发框架: librte_pdump,同时提供了DPDK-pdump工具, 使用该工具可以抓取被DPDK应用程序接管的指定接口、队列的数据包。
但是,虽然通过librte_pdump、DPDK-pdump可以实现对DPDK应用程序抓包的功能,但是是有前提条件的: 在DPDK应用程序中必须调用rte_pdump_init函数来初始化抓包框架, 否则DPDK-pdump工具是抓不到的。而默认情况下,DPDK应用程序不会主动启用抓包框架, 需要由应用程序开发者根据实际需要自行启用,浪费了开发精力,并且,抓包效果较差。
发明内容
本申请提供了一种应用程序的抓包方法、装置、电子设备和存储介质,用以解决现有技术中,DPDK应用程序不会主动启用抓包框架, 需要由应用程序开发者根据实际需要自行启用,浪费了开发精力,并且,抓包效果较差的问题。
第一方面,本申请实施例提供了一种应用程序的抓包方法,包括:
获取与目标应用程序对应的抓包管理的动态链接库文件;
将所述动态链接库文件注入所述目标应用程序;
调用所述动态链接库文件中的框架初始化函数,以初始化所述目标应用程序的数据平面开发套件DPDK抓包框架;
获取与目标应用程序对应的抓包工具的可执行文件;
通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包。
可选的,所述获取与目标应用程序对应的抓包管理的动态链接库文件,包括:
获取与目标应用程序对应的DPDK源码包;
编译所述DPDK源码包中的抓包管理库,得到所述抓包管理的动态链接库文件。
可选的,所述编译DPDK源码包中的抓包管理库,得到抓包管理的动态链接库文件,包括:
获取配置参数,所述配置参数用于指定所述动态链接库文件的编译路径;
依据所述配置参数,将抓包管理库按照所述编译路径编译得到所述抓包管理的动态链接库文件。
可选的,所述获取与目标应用程序对应的抓包工具的可执行文件,包括:
获取与目标应用程序对应的DPDK源码包;
编译DPDK源码包中的抓包工具源码,得到抓包可执行文件;
通过所述抓包可执行文件,对所述目标应用程序进行抓包。
可选的,所述将所述动态链接库文件注入所述目标应用程序,包括:
通过注入修改查找工具hookso所提供的dlopen方法,将所述动态链接库文件注入所述目标应用程序。
可选的,所述调用所述动态链接库文件中的框架初始化函数,包括:
通过注入修改查找工具hookso所提供的call方法,调用所述动态链接库文件中的框架初始化函数。
可选的,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包之后,还包括:
获取对所述目标应用程序进行抓包后得到的抓包文件;
存储所述抓包文件。
可选的,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包之后,还包括:
通过可视化工具对抓包得到的抓包文件进行分析处理,以可视化所述抓包文件的图形页面。
可选的,所述框架初始化函数为rte_pdump_init函数。
可选的,所述将所述动态链接库文件注入所述目标应用程序,包括:
确定对所述目标应用程序的抓包位置;
将所述动态链接库文件注入所述目标应用程序的抓包位置。
可选的,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包,包括:
对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中;
确定所述pcap文件为抓取到的所述目标应用程序的数据包。
可选的,所述对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中,包括:
通过获取队列获取抓包位置的数据包;
确定所述获取队列中的目标队列,所述目标队列为满足指定要求的队列;
拷贝所述目标队列中的数据包,并写入所述pcap文件中。
可选的,所述确定所述获取队列中的目标队列,包括:
获取每个所述获取队列的中的数据包参数;
将所述数据包参数满足预设条件的队列作为所述目标队列。
可选的,所述数据包参数包括:数据包容量、数据包重要性和数据包致使应用程序崩溃的概率。
可选的,所述通过获取队列获取抓包位置的数据包,包括:
获取所述获取队列的队列配置信息;所述队列配置信息包括队列个数及队列长度;
根据所述队列配置信息,确定所述获取队列的获取顺序;
将所述获取队列按照所述获取顺序获取所述抓包位置的数据包。
第二方面,本申请实施例提供了一种应用程序的抓包装置,包括:
第一获取模块,用于获取与目标应用程序对应的抓包管理的动态链接库文件;
注入模块,用于将所述动态链接库文件注入所述目标应用程序;
初始化模块,用于调用所述动态链接库文件中的框架初始化函数,以初始化所述目标应用程序的数据平面开发套件DPDK抓包框架;
第二获取模块,用于获取与目标应用程序对应的抓包工具的可执行文件;
抓包模块,用于通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的应用程序的抓包方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的应用程序的抓包方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,通过获取与目标应用程序对应的抓包管理的动态链接库文件;将动态链接库文件注入目标应用程序;调用动态链接库文件中的框架初始化函数,以初始化目标应用程序的数据平面开发套件DPDK抓包框架;获取与目标应用程序对应的抓包工具的可执行文件;通过抓包工具的可执行文件,对目标应用程序进行抓包。如此,通过将获取的目标应用程序的动态链接库文件,注入到目标应用程序,从而能够调用动态链接库文件中的框架初始化函数,对目标应用程序的DPDK抓包框架初始化,从而,在获取到抓包工具的可执行文件后,能直接利用抓包工具的可执行文件对目标应用程序进行抓包。通过动态注入的方式,将动态链接库文件注入到目标DPDK应用程序中, 并主动调用动态链接库文件中的框架初始化函数来初始化DPDK抓包框架, 从而实现通过抓包工具进行抓包。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的应用程序的抓包方法的应用场景图;
图2为本申请一实施例提供的应用程序的抓包方法的流程图;
图3为本申请另一实施例提供的应用程序的抓包方法的流程图;
图4为本申请一实施例提供的应用程序的抓包装置的结构图;
图5为本申请一实施例提供的电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
DPDK:数据平面开发套件(DPDK ,Data Plane Development Kit),是基于BSD开源许可协议发布的一个开源的、快速处理数据平面数据包转发的开发平台及接口。
源码包:源代码的可见的软件包。
动态链接库文件,是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源。能够节约应用程序所需的磁盘和内存空间。
hookso是一个linux动态链接库的注入修改查找工具,用来修改其他进程的动态链接库行为。
pcap文件:是常用的数据报存储格式,能够用wireshark等抓包工具正常打开,并查看里面的网络数据报。
Wireshark:一种网络抓包工具,能够显示出最为详细的网络封包材料,并且也能够生成pacp文件。
编译:利用编译程序从源语言编写的源程序产生目标程序的过程。 或,用编译程序产生目标程序的动作。 编译能够将高级语言变成计算机可以识别的二进制语言。
根据本申请一实施例提供了一种应用程序的抓包方法。可选地,在本申请实施例中,上述应用程序的抓包方法可以应用于如图1所示的由终端101和服务器102所构成的硬件环境中。如图1所示,服务器102通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器102提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。
本申请实施例的应用程序的抓包方法可以由服务器102来执行,也可以由终端101来执行,还可以是由服务器102和终端101共同执行。其中,终端101执行本申请实施例的应用程序的抓包方法。
以终端执行本申请实施例的应用程序的抓包方法为例,图2是根据本申请实施例的一种可选的应用程序的抓包方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤201、获取与目标应用程序对应的抓包管理的动态链接库文件。
一些实施例中,抓包管理的动态链接库文件可以是根据目标应用程序的程序参数进行编码后得到的;也可以是通过目标应用程序的源码包编译后得到的,
在一个可选实施例中,获取与目标应用程序对应的抓包管理的动态链接库文件,包括:
获取与目标应用程序对应的DPDK源码包;编译DPDK源码包中的抓包管理库,得到抓包管理的动态链接库文件。
一些实施例中,目标应用程序对应的DPDK源码包可以从DPDK官网获取到,在DPDK官网中依据目标应用程序的程序版本进行查询,从而得到目标应用程序的DPDK源码包。
其中,对DPDK源码包中的抓包管理(librte_pdump)库进行编译的方式有多种。例如,可以使用makefile进行编译,具体还可参照相关技术中的编译方式,此处不再赘述。以下实施例提供一种具体的实施方式:
进一步的,编译DPDK源码包中的抓包管理库,得到抓包管理的动态链接库文件,包括:
获取配置参数,配置参数用于指定动态链接库文件的编译路径;依据配置参数,将抓包管理库按照编译路径编译得到抓包管理的动态链接库文件。
一些实施例中,配置参数包括动态链接库文件的编译路径,从而在获取到配置参数后,能够根据配置参数将librte_pdump库编译为动态链接库librte_pdump.so文件。
步骤202、将动态链接库文件注入目标应用程序。
一些实施例中,将编译好的librte_pdump.so文件注入到目标应用程序的方式有多种,例如,可以通过注入修改查找工具(so注入工具)hookso所提供的dlopen方法进行注入。
步骤203、调用动态链接库文件中的框架初始化函数,以初始化目标应用程序的数据平面开发套件DPDK抓包框架。
一些实施例中,在将动态链接库文件注入目标应用程序后,由于动态链接库文件中就包括框架初始化函数(rte_pdump_init函数),通过调用该rte_pdump_init函数并运行,便可以对目标应用程序的DPDK抓包框架进行初始化,从而,进行后续的抓包。
在一个可选实施例中,可以但不限于通过注入修改查找工具hookso所提供的call方法,调用动态链接库文件中的框架初始化函数。
步骤204、获取与目标应用程序对应的抓包工具的可执行文件。
一些实施例中,在对目标应用程序的DPDK抓包框架初始化后,便可以进行数据的抓包。
具体的,可以先获取与目标应用程序对应的抓包工具的可执行文件。抓包工具的可执行文件为在对目标应用程序进行抓包时,采用的执行文件。
在一个可选实施例中,获取与目标应用程序对应的抓包工具的可执行文件,包括:
获取与目标应用程序对应的DPDK源码包;编译DPDK源码包中的抓包工具源码,得到抓包可执行文件;通过抓包可执行文件,对目标应用程序进行抓包。
一些实施例中,DPDK源码包的获取方式可以参照上述相关实施例,此处不再赘述。进一步的,编译DPDK源码包中的抓包工具源码的方式有多种,具体可以参照相关技术中的编译方式,此处不再赘述。以下实施例提供一种具体的实施方式:
获取抓包配置参数,抓包配置参数指示抓包可执行文件的编译路径,并依据抓包配置参数将抓包工具源码按照上述编译路径编译得到抓包可执行文件。
一些实施例中,抓包配置参数包括抓包可执行文件的编译路径,从而在获取到抓包配置参数后,能够根据抓包配置参数将DPDK-pdump工具源码编译为DPDK-pdump二进制可执行文件。
步骤205、通过抓包工具的可执行文件,对目标应用程序进行抓包。
一些实施例中,在得到抓包工具的可执行文件后,便可以通过该可执行文件对目标应用程序中的数据进行抓包。
在一个可选实施例中,通过抓包工具的可执行文件,对目标应用程序进行抓包,包括:
对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中;确定pcap文件为抓取到的目标应用程序的数据包。
一些实施例中,可以在对目标应用程序抓包前,输入抓包位置,从而使抓包工具对该抓包位置的数据包进行拷贝,进一步将拷贝结果写入pcap文件中,得到目标应用程序抓取的数据包。
在一个可选实施例中,对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中,包括:
通过获取队列获取抓包位置的数据包;确定获取队列中的目标队列,目标队列为满足指定要求的队列;拷贝目标队列中的数据包,并写入pcap文件中。
一些实施例中,考虑到数据包在拷贝过程中,可能会出现由于数据包内存较大,而拷贝较慢的情况,并且,并非所有拷贝的数据包均是需要抓取的数据包。因此,通过设置至少一个获取队列,将抓包位置的数据包分批次获取,由于在一些情况下,并非所有数据包都是需要抓包的数据包,因此,确定获取队列中的目标队列,目标队列中的数据包为需要抓取的数据包,进而,将目标队列中的数据包拷贝出来,写入到pcap文件中,得到需要的抓包数据。
进一步的,确定获取队列中的目标队列的方式,可以通过以下方式得到,包括:
获取每个获取队列的中的数据包参数;将数据包参数满足预设条件的队列作为目标队列。
其中,对于每个获取队列中的数据包除数据本身外,还包括数据包参数,在确定目标队列时,可以依据数据包参数将目标队列筛选出来。
其中,数据包参数包括数据的类型、数据包容量、数据包重要性和数据包致使应用程序崩溃的概率。
在一个可选实施例中,通过获取队列获取抓包位置的数据包,具体包括:
获取获取队列的队列配置信息;队列配置信息包括队列个数及队列长度;根据队列配置信息,确定获取队列的获取顺序;将获取队列按照获取顺序获取抓包位置的数据包。
一些实施例中,获取队列通常设置为多个,不同的获取队列其队列配置信息不同,因此,可以通过队列配置信息确定获取队列的获取顺序,进而有获取队列按照该获取顺序进行抓包。
示例性的,队列配置信息包括队列个数和队列长度,其中,队列长度指示队列所能容纳数据包容量的大小,队列长度越长,能容纳数据包容量就越大。将获取队列按照队列长度排序,将排序结果作为获取顺序。
可以理解的是,由于数据包的容量不同,因此,可以在获取到数据包后,先确定数据包的容量,再从获取队列中查找与该数据包容量相匹配的获取队列,通过该获取队列获取上述数据包。
在一个可选实施例中,通过抓包工具的可执行文件,对目标应用程序进行抓包之后,还包括:
获取对目标应用程序进行抓包后得到的抓包文件;存储抓包文件。
一些实施例中,执行DPDK-pdump可执行文件, 对DPDK目标应用程序进行抓包,抓取到的数据包,以抓包文件(pcap文件)的形式保存到磁盘中。以便后续对抓包文件进行进一步的分析。
在一个可选实施例中,通过抓包工具的可执行文件,对目标应用程序进行抓包之后,还包括:
通过可视化工具对抓包得到的抓包文件进行分析处理,以可视化抓包文件的图形页面。
一些实施例中,在对目标应用程序抓包完成后, 可以通过Wireshark等可视化工具对pcap文件进行分析处理。
本申请解决了基于DPDK开发的应用程序, 在开发时未调用rte_pdump_init函数来初始化抓包框架的情况下,无法对其进行抓包的问题。通过动态注入的方式, 将librte_pdump.so注入到目标DPDK应用程序中,并主动(强制)调用该so中的rte_pdump_init函数来初始化DPDK抓包框架, 以此来实现对DPDK应用程序的抓包功能。
在一个具体实施例中,将DPDK源码包分别编译,编译librte_pdump库,得到的动态链接库librte_pdump.so,将编译得到的librte_pdump.so通过hookso工具注入目标应用程序,调用librte_pdump.so中的rte_pdump_init函数初始化DPDK抓包框架。以及编译DPDK-pdump工具源码, 生成DPDK-pdump二进制可执行文件,初始化DPDK抓包框架后二者进行交互,以实现抓包,将抓包得到的结果写入pacp文件中,并通过Wireshark可视化工具对pacp文件进行分析。
基于同一构思,本申请实施例中提供了一种应用程序的抓包装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
第一获取模块401,用于获取与目标应用程序对应的抓包管理的动态链接库文件;
注入模块402,用于将动态链接库文件注入目标应用程序;
初始化模块403,用于调用动态链接库文件中的框架初始化函数,以初始化目标应用程序的数据平面开发套件DPDK抓包框架;
第二获取模块404,用于获取与目标应用程序对应的抓包工具的可执行文件;
抓包模块405,用于通过抓包工具的可执行文件,对目标应用程序进行抓包。
基于同一构思,本申请实施例中还提供了一种电子设备,如图5所示,该电子设备主要包括:处理器501、存储器502和通信总线503,其中,处理器501和存储器502通过通信总线503完成相互间的通信。其中,存储器502中存储有可被至处理器501执行的程序,处理器501执行存储器502中存储的程序,实现如下步骤:
获取与目标应用程序对应的抓包管理的动态链接库文件;
将动态链接库文件注入目标应用程序;
调用动态链接库文件中的框架初始化函数,以初始化目标应用程序的数据平面开发套件DPDK抓包框架;
获取与目标应用程序对应的抓包工具的可执行文件;
通过抓包工具的可执行文件,对目标应用程序进行抓包。
上述电子设备中提到的通信总线503可以时外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器502可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器501的存储装置。
上述的处理器501可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的应用程序的抓包方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种应用程序的抓包方法,其特征在于,包括:
获取与目标应用程序对应的抓包管理的动态链接库文件;
将所述动态链接库文件注入所述目标应用程序;
调用所述动态链接库文件中的框架初始化函数,以初始化所述目标应用程序的数据平面开发套件DPDK抓包框架;
获取与目标应用程序对应的抓包工具的可执行文件;
通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包;
其中,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包,包括:
对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中;
确定所述pcap文件为抓取到的所述目标应用程序的数据包;
其中,所述对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中,包括:
通过获取队列获取抓包位置的数据包;
确定所述获取队列中的目标队列,所述目标队列为满足指定要求的队列;
拷贝所述目标队列中的数据包,并写入所述pcap文件中。
2.根据权利要求1所述的应用程序的抓包方法,其特征在于,所述获取与目标应用程序对应的抓包管理的动态链接库文件,包括:
获取与目标应用程序对应的DPDK源码包;
编译所述DPDK源码包中的抓包管理库,得到所述抓包管理的动态链接库文件。
3.根据权利要求2所述的应用程序的抓包方法,其特征在于,所述编译所述 DPDK源码包中的抓包管理库,得到抓包管理的动态链接库文件,包括:
获取配置参数,所述配置参数用于指定所述动态链接库文件的编译路径;
依据所述配置参数,将抓包管理库按照所述编译路径编译得到所述抓包管理的动态链接库文件。
4.根据权利要求1所述的应用程序的抓包方法,其特征在于,所述获取与目标应用程序对应的抓包工具的可执行文件,包括:
获取与目标应用程序对应的DPDK源码包;
编译DPDK源码包中的抓包工具源码,得到抓包可执行文件;
通过所述抓包可执行文件,对所述目标应用程序进行抓包。
5.根据权利要求1所述的应用程序的抓包方法,其特征在于,所述将所述动态链接库文件注入所述目标应用程序,包括:
通过注入修改查找工具hookso所提供的dlopen方法,将所述动态链接库文件注入所述目标应用程序。
6.根据权利要求1所述的应用程序的抓包方法,其特征在于,所述调用所述动态链接库文件中的框架初始化函数,包括:
通过注入修改查找工具hookso所提供的call方法,调用所述动态链接库文件中的框架初始化函数。
7.根据权利要求1所述的应用程序的抓包方法,其特征在于,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包之后,还包括:
获取对所述目标应用程序进行抓包后得到的抓包文件;
存储所述抓包文件。
8.一种应用程序的抓包装置,其特征在于,包括:
第一获取模块,用于获取与目标应用程序对应的抓包管理的动态链接库文件;
注入模块,用于将所述动态链接库文件注入所述目标应用程序;
初始化模块,用于调用所述动态链接库文件中的框架初始化函数,以初始化所述目标应用程序的数据平面开发套件DPDK抓包框架;
第二获取模块,用于获取与目标应用程序对应的抓包工具的可执行文件;
抓包模块,用于通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包;
其中,所述通过所述抓包工具的可执行文件,对所述目标应用程序进行抓包,包括:
对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中;
确定所述pcap文件为抓取到的所述目标应用程序的数据包;
其中,所述对抓包位置的数据包进行拷贝,并将拷贝结果写入pcap文件中,包括:
通过获取队列获取抓包位置的数据包;
确定所述获取队列中的目标队列,所述目标队列为满足指定要求的队列;
拷贝所述目标队列中的数据包,并写入所述pcap文件中。
9.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1-7任一项所述的应用程序的抓包方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的应用程序的抓包方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111079312.2A CN113535593B (zh) | 2021-09-15 | 2021-09-15 | 应用程序的抓包方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111079312.2A CN113535593B (zh) | 2021-09-15 | 2021-09-15 | 应用程序的抓包方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535593A CN113535593A (zh) | 2021-10-22 |
CN113535593B true CN113535593B (zh) | 2022-10-11 |
Family
ID=78123126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111079312.2A Active CN113535593B (zh) | 2021-09-15 | 2021-09-15 | 应用程序的抓包方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535593B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398654A (zh) * | 2019-08-13 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种支持抓包的方法、装置、设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161398A (zh) * | 2015-04-21 | 2016-11-23 | 北京信威通信技术股份有限公司 | 抓包方法及装置 |
CN104951375B (zh) * | 2015-07-01 | 2017-12-08 | 北京博睿宏远数据科技股份有限公司 | 基于函数拦截技术的手机app性能数据采集方法 |
CN106681923B (zh) * | 2016-12-29 | 2019-06-14 | 广州华多网络科技有限公司 | 一种软件测评方法及装置 |
CN107329901B (zh) * | 2017-07-31 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 数据包抓取方法、终端、服务器和存储介质 |
CN110995678B (zh) * | 2019-11-22 | 2021-07-23 | 北京航空航天大学 | 一种面向工控网络的高效入侵检测系统 |
CN110943895A (zh) * | 2019-12-31 | 2020-03-31 | 许继集团有限公司 | 一种网关机、基于Linux系统的网络数据处理方法及装置 |
-
2021
- 2021-09-15 CN CN202111079312.2A patent/CN113535593B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398654A (zh) * | 2019-08-13 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种支持抓包的方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
基于DPDK的高速数据包捕获方法;任昊哲等;《计算机系统应用》;20180615(第06期);第242-245页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113535593A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705811B2 (en) | Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources, like mobile devices or TV set top boxes | |
US10552610B1 (en) | Adaptive virtual machine snapshot update framework for malware behavioral analysis | |
US20150319071A1 (en) | System for providing test environments for executing and analysing test routines | |
WO2019072008A1 (zh) | 小程序的安全扫描方法、装置以及电子设备 | |
CN110879781B (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
CN109976973B (zh) | 一种小程序线上异常监控方法及电子设备 | |
CN107402792B (zh) | 应用软件安装包的集成方法、装置、设备及存储介质 | |
CN113885849B (zh) | 基于工业互联网平台的应用开发方法、装置及终端设备 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN109492181A (zh) | 页面跳转方法、装置、计算机设备和存储介质 | |
CN106933642B (zh) | 应用程序的处理方法及处理装置 | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
CN114579194A (zh) | 一种基于Spring远程调用的异常处理方法和系统 | |
CN109508249B (zh) | 崩溃处理方法、装置及电子设备 | |
CN114528204A (zh) | 处理代码的方法、处理异常的方法以及各自的装置 | |
CN113535593B (zh) | 应用程序的抓包方法、装置、电子设备和存储介质 | |
CN111782518A (zh) | 测试方法、装置和电子设备 | |
CN108959070B (zh) | 一种基于代码对象的Python钩子函数方法和装置 | |
Mostafa et al. | Netdroid: Summarizing network behavior of android apps for network code maintenance | |
CN114741296A (zh) | 单元测试方法、装置、电子设备和存储介质 | |
CN113535592B (zh) | 对dpdk应用程序抓包的方法、装置、设备及存储介质 | |
CN109783156A (zh) | 一种应用的启动控制方法及装置 | |
Považan et al. | Communication interface libraries as an extension to the debugging framework for DSP applications | |
US20220207210A1 (en) | Compiler plugin for special-purpose computer processors with dual support for design verification and release packaging | |
CN113377674B (zh) | 一种日志代码添加方法及装置 |
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 |