CN116032809A - 使用Wasm的网络协议分析方法及系统 - Google Patents
使用Wasm的网络协议分析方法及系统 Download PDFInfo
- Publication number
- CN116032809A CN116032809A CN202211695585.4A CN202211695585A CN116032809A CN 116032809 A CN116032809 A CN 116032809A CN 202211695585 A CN202211695585 A CN 202211695585A CN 116032809 A CN116032809 A CN 116032809A
- Authority
- CN
- China
- Prior art keywords
- data packet
- analysis
- network
- engine
- data
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 359
- 238000003012 network analysis Methods 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000005540 biological transmission Effects 0.000 claims abstract description 16
- 238000010230 functional analysis Methods 0.000 claims abstract description 10
- 238000009877 rendering Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 180
- 230000002452 interceptive effect Effects 0.000 claims description 103
- 238000004364 calculation method Methods 0.000 claims description 57
- 238000001914 filtration Methods 0.000 claims description 37
- 102100026278 Cysteine sulfinic acid decarboxylase Human genes 0.000 claims description 30
- 108010064775 protein C activator peptide Proteins 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 26
- 230000003993 interaction Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 7
- 238000007906 compression Methods 0.000 claims description 7
- 238000005538 encapsulation Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 abstract description 13
- 238000013459 approach Methods 0.000 description 11
- 238000012423 maintenance Methods 0.000 description 10
- 238000009434 installation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000001154 acute effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种使用Wasm的网络协议分析方法及系统,包括:步骤S1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;步骤S2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;步骤S3:在网络分析页面执行网络协议分析;步骤S4:网络分析页面调用网络协议分析引擎获取协议分析数据;步骤S5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。本发明使用Wasm在Web中的分析数据报文方法,减少了服务端的API接口数量,简化了服务程序和网页程序的开发和调试,降低了开发成本,又解决了Browser和Server之间传输数据量过大的问题,同时能够进行完整地实现功能分析。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种使用Wasm的网络协议分析方法及系统。
背景技术
网络协议分析工具(或系统)是一种用于分析和诊断网络问题的主要手段。其功能是对网络报文按网络协议规范进行解码,然后展示报文中包含的数据包,每一个数据包含的协议栈,协议栈中每层协议包含的字段的字段名、取值、含义和其对应的两进制字节。通常还有过滤、查找和保存等功能。
网络协议分析工具(或系统)常见是采用软件方式实现。这种方式需要用户下载,并在客户端系统上进行安装,然后才能使用,譬如Wireshark。我们称这种方式为“本地软件分析方式”,简称为“软件分析方式”。这种方式的优点是功能完整、处理性能好、分析能力强。但存在两个缺点:
使用上的缺点:需要下载安装和升级维护。这对于个人用户来说仅仅是多了一些操作步骤,但对于企业用户来说,则是个安全合规性问题。一般企业内,下载安装和升级软件都需要符合一定的审批流程以满足安全合规的监管要求。在IT系统的终端上,譬如操作堡垒机,安装软件流程一般非常严格,除了需要流程审批授权外,甚至需要在特定的运维时段内进行;在公司内网个人电脑上安装软件相对较松,但也会有各种限制和要求。而且,软件的功能升级、Bug修复、安全漏洞修复等都会带来升级维护,对于企业来说,可能涉及很多用户来说,譬如整个网络运维团队、安全运维团队都需要升级,带来大量的升级维护成本。
对于提供网络协议分析工具(或系统)的厂商来说的缺点:需要支持多种不同的软硬件运行环境,开发成本高。软件环境主要是各种操作系统(OS),包括Windows系列、Linux系列、MacOS系列等,也包括工具软件依赖的类库等。硬件环境主要是CPU(32位或64位,x64_86架构或者arm架构)、显卡和网卡等。显然需要支持的范围大,需要的软件开发成本越高。此外,OS或者所依赖类库遇到安全漏洞需要打补丁升级时,工具软件往往也需要发布升级版本,带来额外开发成本和客户端升级维护成本。
网络协议分析工具(或系统)也有采用Web浏览器(Web Browser)的JavaScript方式实现。这种方式采用运行在Browser中的JavaScript技术来替代采用C++等技术开发OS原生软件。我们称这种方式为“Browser JavaScript分析方式”,简称为“JavaScript分析方式”。这种方式只需要在客户安装任意Browser就可以使用,解决了软件分析方式的缺点:既不需要下载安装,没有升级;也不需要处理大量的软硬件环境,降低了开发成本。但由于JavaScript是种解释型开发语言,是在Browser提供的运行时环境逐条解释程序语句执行计算,其执行效率远远低于C++等编译型语言编译的两进制程序直接被OS加载运行的执行效率。而网络协议分析是计算密集的场景,需要高处理性能,所以这种方式在加载数据和点击操作后都要等待很久才出结果,完全没法满足网络协议分析的正常交互使用。因此,实际上并没有直接使用JavaScript分析方式的网络协议分析工具。
一个折中的方法是采用Browser/Server架构(B/S架构),在服务器端(Server)进行数据报文的网络协议分析,然后(用数据库等)缓存分析结果,再通过API以服务方式提供对分析结果的查询。用户在Browser的网页程序使用API获取分析结果,不再使用JavaScript做密集计算,仅仅使用JavaScript做展示,从而提高了交互操作的响应速度。我们可以称这种方式为“B/S架构的Server分析方式”,简称为“Server分析方式”。同时,这种方法也只需要在客户端安装了Browser就可以使用分析功能,省去了安装软件带来的问题。但也存在若干缺点,说明如下:
数据传输量大。报文协议实际上是种高效的信息编码方式,往往是基于bit的紧凑的两进制格式,而且协议字段都由规范申明,报文中一般省略字段名,只填充字段数据。而协议分析结果通过API传输时,一般使用通用格式(譬如JSON),都需要字段名,字段数据也都是字节格式(亦或者占用空间更多的文本格式)。此外,分析结果中还包更多额外信息:譬如为了解释字段取值含义,额外需要文本说明;譬如为了解释报文中的字段范围,额外需要字段的起始位置和长度等信息;譬如为了解释协议的范围,额外需要协议的起始位置和长度等信息;譬如TCP等协议等额外的状态机信息。所以,仅就最基础的协议展示功能而言,传输数据量就是JavaScript分析方式的数据报文的3~5倍。更多的分析功能,譬如按Flow分析,就需要传输更多的额外数据。
开发复杂,成本提高。因为这种方法数据量扩大了很多倍,网页程序无论是出于内存控制的考虑还是出于网络传输等待时间控制的考虑,都不会一次请求所有数据,而是根据数据包范围和正在使用的功能,按需向服务端请求数据。因此相比于JavaScript分析只需要请求数据报文的API接口,这种方式需要支持更多的API接口,譬如获取一组数据包列表的接口、获取一个数据包协议栈分析结果的接口、获取一个数据包字节的接口等等。API接口调用需要两端保持版本一致,使用正确的调用方式。更多API接口的调用增加了服务程序和网页程序的耦合度,增加了调试的复杂度,增加了维护的复杂度,提高了开发成本。
功能少。协议分析的方式多样,譬如切换信息长度查看(按1字节、2字节、4字节等不同长度),譬如切换编码查看(按UTF-8、UTF-16、ASCII、GBK等不同编码),譬如按不同的方式进行Flow计算(譬如从仅仅使用IP地址对,而不是五元组)等,因此Server一方面不会做那么多计算,存储那么多种可能的分析结果,这带来过大的Server计算和存储开销;另一方面即使这些数据都进行了计算并缓存了结果,如果全部传输到Brower,也会导致传输开销也过大,如果控制传输开销,那么需要增加更多细分的API接口,进一步增加了服务程序和网页程序开发复杂性。
专利文献CN103746867A(申请号:CN201310718896.2)公开了一种基于基函数的网络协议分析方法,包括:建立基函数库和已知结构协议的基函数模式组合方式库;当接收到目标网络发过来的数据,利用该数据和已有的基函数模式组合方式表征该目标网络对应的目标协议的结构;根据目标协议的结构进行判断:如果该数据为已知结构的协议数据,采用分层的方法对该目标协议进行分析;如果该数据位未知结构的协议数据,利用已有基函数或新的基函数生成该目标协议对应的基函数模式组合方式。但该发明没有使用Wasm在Web中的分析数据报文方法。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种使用Wasm的网络协议分析方法及系统。
根据本发明提供的一种使用Wasm的网络协议分析方法,包括:
步骤S1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
步骤S2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
步骤S3:在网络分析页面执行网络协议分析;
步骤S4:网络分析页面调用网络协议分析引擎获取协议分析数据;
步骤S5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
优选地,在所述步骤S1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
优选地,在所述步骤S2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
在所述步骤S3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
优选地,在所述步骤S4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
步骤S4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
步骤S4.2:数据包是否已下载,根据步骤S4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
步骤S4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
步骤S4.4:功能分析结果是否就绪;根据步骤S4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
步骤S4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
步骤S4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
优选地,在步骤S4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在步骤S4.5中:
执行函数分析计算中的函数在步骤S4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行步骤S4.3。
根据本发明提供的一种使用Wasm的网络协议分析系统,包括:
模块M1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
模块M2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
模块M3:在网络分析页面执行网络协议分析;
模块M4:网络分析页面调用网络协议分析引擎获取协议分析数据;
模块M5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
优选地,在所述模块M1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
优选地,在所述模块M2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
在所述模块M3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
优选地,在所述模块M4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
模块M4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
模块M4.2:数据包是否已下载,根据模块M4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
模块M4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
模块M4.4:功能分析结果是否就绪;根据模块M4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
模块M4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
模块M4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
优选地,在模块M4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在模块M4.5中:
执行函数分析计算中的函数在模块M4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行模块M4.3。
与现有技术相比,本发明具有如下的有益效果:
1、本发明使用诸如C++/Rust等高性能语言开发网络协议分析引擎Engine,将其编译为Wasm格式,嵌入具有交互功能的Web页面,实现了Web网络协议分析,即解决了分析程序的安装和升级问题,不需要客户端安装和升级,不会产生企业使用的流程负担,又解决了执行效率问题,能高性能处理,能够提供良好的交互体验,同时因为不需要维护各种软硬件环境,降低了开发成本;
2、本发明使用Wasm在Web中的分析数据报文方法,即减少了服务端的API接口数量,简化了服务程序和网页程序的开发和调试,降低了开发成本,又解决了Browser和Server之间传输数据量过大的问题,同时能够进行完整地实现功能分析。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明执行步骤流程示意图;
图2为本发明网络协议分析引擎的函数示意图;
图3为本发明网络协议分析引擎的执行步骤示意图;
图4为本发明请求数据报文示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
使用高性能语言开发网络协议分析引擎,提供分析和功能函数。将其编译为Wasm格式,嵌入具有交互功能的网络分析页面。在用户加载该页面时,分析引擎连同页面一起下载到用户浏览器中。用户使用页面UI进行交互操作,页面调用Wasm格式的引擎函数在Web中执行高性能分析计算。如果数据未下载时,分析引擎自动从服务器下载。从而实现了无需下载安装、功能完整、传输量优化、交互体验良好的网络协分析方法。尤其适用于企业环境用户。
根据本发明提供的一种使用Wasm的网络协议分析方法,如图1-图4所示,包括:
步骤S1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
具体地,在所述步骤S1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
步骤S2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
具体地,在所述步骤S2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
步骤S3:在网络分析页面执行网络协议分析;
在所述步骤S3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
步骤S4:网络分析页面调用网络协议分析引擎获取协议分析数据;
具体地,在所述步骤S4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
步骤S4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
步骤S4.2:数据包是否已下载,根据步骤S4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
步骤S4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
步骤S4.4:功能分析结果是否就绪;根据步骤S4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
步骤S4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
步骤S4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
具体地,在步骤S4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在步骤S4.5中:
执行函数分析计算中的函数在步骤S4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行步骤S4.3。
步骤S5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
实施例2:
实施例2为实施例1的优选例,以更为具体地对本发明进行说明。
本发明还提供一种使用Wasm的网络协议分析系统,所述使用Wasm的网络协议分析系统可以通过执行所述使用Wasm的网络协议分析方法的流程步骤予以实现,即本领域技术人员可以将所述使用Wasm的网络协议分析方法理解为所述使用Wasm的网络协议分析系统的优选实施方式。
根据本发明提供的一种使用Wasm的网络协议分析系统,包括:
模块M1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
具体地,在所述模块M1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
模块M2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
具体地,在所述模块M2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
模块M3:在网络分析页面执行网络协议分析;
在所述模块M3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
模块M4:网络分析页面调用网络协议分析引擎获取协议分析数据;
具体地,在所述模块M4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
模块M4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
模块M4.2:数据包是否已下载,根据模块M4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
模块M4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
模块M4.4:功能分析结果是否就绪;根据模块M4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
模块M4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
模块M4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
具体地,在模块M4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在模块M4.5中:
执行函数分析计算中的函数在模块M4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行模块M4.3。
模块M5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
实施例3:
实施例3为实施例1的优选例,以更为具体地对本发明进行说明。
本发明提出了一种使用WebAssembly(Wasm)的网络协议分析方法(简称为“Wasm分析方式”),旨在解决上述几种方法的问题:不需要客户端安装和升级,不会产生企业使用的流程负担;高性能处理,有良好的交互使用体验;网络传输数据少,但功能完整;整体开发维护成本低。
Wasm是一种可移植、体积小、加载快并且兼容Web的全新格式,其目标就是充分发挥硬件能力以达到原生执行效率,从而在网页上启用高性能应用程序。Wasm可以被JavaScript调用,进入JavaScript上下文,也可以像Web API一样调用浏览器的功能。
本发明的步骤如图一所示,具体说明如下:
步骤1:开发网络协议分析引擎Engine,并将其编译为Wasm格式。利用Wasm的特性,使用诸如C++/Rust等高性能语言开发网络协议分析引擎Engine,提供一系列分析和功能函数(functions),然后使用相关工具链将Engine编译为Wasm格式,以供JavaScript程序调用。
步骤2:Engine与分析页面Page一同加载到用户的Browser。将Engine嵌入Page,而Page使用JavaScript开发。在用户加载网络分析页面时,Wasm格式的Engine和Page一起加载到用户的Browser中。
步骤3:用户在Page上执行网络协议分析操作。Page通过UI界面提供交互操作功能。网络协议界面常见的如Wireshark的设计,也可是厂商的独特设计。目前的JavaScriprt技术易于实现这些展示功能和效果。交互操作功能包括但不限于:加载数据报文,查看数据包列表,点击数据包查看协议栈和报文字节,展开协议栈查看协议信息,进行网络流列表,点击网络流查看组成网络流的数据包列表,输入条件过滤数据包列表,输入条件查找数据包,报错数据包等。
步骤4:Page调用Engine获取协议分析数据。Page响应步骤3的交互操作,使用要展示或分析的数据包的范围作为参数,调用Engine的相应功能函数。Engine则高效率地执行编译后两进制Wasm程序,在Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据。
步骤5:Page对分析数据进行展示。Page使用JavaScript渲染步骤4返回结果数据,进行展示。
步骤6:操作结束,退出分析页面。在Page内反复进行交互操作,直到分析操作结束为止,退出分析页面。
本发明的步骤1“网络协议分析引擎Engine”提供的分析和功能函数包括但不限于图二所示。功能的划分和聚合可根据实际情况调整。函数输入和输出也可以更具实际情况调整。具体说明如下:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间。
输入为:
初始化配置。譬如最多缓存的数据包数量,是否开启某些功能,分配相应缓存空间等。
输出为:
句柄(handle),指向的Engine缓存空间。
reset_engine:重置Engine得缓存空间,以重新加载数据包,进行计算。
输入为:
句柄(handle),指向的Engine缓存空间。
输出为:
操作成功与否。
set_option:设置Engine的选项。
输入为:
句柄(handle),同上。
选项(option),各种分析选项或者开关。譬如信息长度、编码显示方式、Flow计算方式、预计算开关等。
选项值(value),选项开关的取值。
输出为:
操作成功与否。
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间。在下载数据包后,可以立即开展预计算,将分析结果也存入缓存空间,以加速后续的交互操作。是否开展预计算可以由选项控制,通过set_option来开启或者禁用。
输入为:
句柄(handle),同上。
数据标识(id),标识Server的数据来源。Server往往服务很多用户,同一个用户也可以打开多个分析页面,在一同页面中也可以分析不同源的数据报文。因此需要使用唯一id来标识。
数据包范围(packet range),包括数据包起始序号和数量。
数据包条件(conditions),包括时间范围条件和使用BPF语法(Berkeley PacketFilter)的过滤条件。BPF语法也可用同等表达能力的对象结构(譬如JSON)来表示。
输出为:
操作成功与否。
list_packets:按照数据包范围,返回一组数据包摘要信息,一般列表格式展示。
输入为:
句柄(handle),同上。
数据包范围(packet range),同上。
输出为:
一组数据包摘要信息(packet summary list)。对于每个数据包,包括数据包序号(packet index)和摘要信息(summary)。数据包序号用于在id内唯一标识一个数据包。摘要信息包括:数据包时间、源目地址、源目端口、协议、协议摘要等。
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,一般树状展示。
输入为:
句柄(handle),同上。
数据包序号(packet index),唯一标识一个数据包。
输出为:
协议栈信息(protocol stack),该数据包解码后的协议栈和相关信息。协议栈也就是一些按封装顺序排列的协议(protocol)。协议信息包括起始位置,该协议中所有协议字段的字段名、字段取值、取值含义、字段起始位置等信息。对于TCP等有状态机的协议,也可以包括状态机信息和缓存重组信息。
get_packet_bytes:返回一个给定数据包的协议栈信息,一般表格形式展示。可以采用不同的信息长度,或者不同的编码方式展示。
输入为:
句柄(handle),同上。
数据包序号(packet index),同上。
输出为:
数据字节(packet bytes),该数据包的字节码。
list_flows:按照网络流范围,返回一组网络流摘要信息,一般列表格式展示。网络流的分组方式通过set_option函数设置。
输入为:
句柄(handle),同上。
网络流范围(flow range),包括网络流起始序号和数量。
输出为:
一组网络流摘要信息(flow summary list)。对于每个网络流,包括网络流序号(flow index)和摘要信息(summary)。网络流序号用于在id内唯一标识一个网络流。摘要信息包括:网络的起始时间、源目地址、源目端口、各协议统计信息等。
list_flow_packets:按照网络流序号,返回该网络流中的数据包摘要信息,一般列表格式展示。
输入为:
句柄(handle),同上。
网络流序号(flow index),唯一标识一个网络流。
输出为:
一组数据包摘要信息(packet summary list),同上。
filter_packets:按照过滤条件,返回一组数据包摘要信息,一般列表格式展示。
输入为:
句柄(handle),同上。
数据包条件(conditions),同上。
输出为:
一组数据包摘要信息(packet summary list),同上。
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位这些数据包。
输入为:
句柄(handle),同上。
数据包条件(conditions),同上。
输出为:
一组数据包序号(packet index list)。
save_packets:以PCAP格式保存数据包到指定位置。
输入为:
句柄(handle),同上。
保存位置(path),由Page中操作选择后给出的保存位置,格式为PCAP格式。
保存选项(save option)。选项包括所有数据包,还是过滤后数据包,还是某个数据序列。
输出为:
操作成功与否。
load_file:加载本地PCAP格式数据包进行分析。
输入为:
句柄(handle),同上。
记载位置(path),由Page中操作选择后给出的本地数据包位置,格式为PCAP格式。
输出为:
操作成功与否。
本发明的步骤4“Page调用Engine获取协议分析数据”中,Engine通过功能函数处理来自步骤3的交互操作需求,获得分析结果数据,其处理步骤如图三所示。具体说明如下:
步骤4.1:输入数据包范围和功能范围。输入来自于步骤3的交互操作。数据包范围由交互操作中的要展示或分析的数据包决定。功能范围由实际调用的功能函数决定。
步骤4.2:数据包是否已下载。根据4.1的数据包范围,在handle指向的Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载。
步骤4.3:向Server请求数据包字节。如果数据包未下载,则函数向Server请求数据包字节,可以调用download_packets函数来完成。
步骤4.4:功能分析结果是否就绪。根据4.1的功能范围,在handle指向的Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪。
步骤4.5:执行函数分析计算。如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中。
步骤4.6:返回分析结果数据。在handle指向的Engine缓存空间中获得分析结果,返回。
本发明的步骤4.3“向Server请求数据包字节”的Engine和Server之间的交互过程在download_packets函数中实现,如图四所示,具体说明如下:
Request:请求由Engine发起。Engine在网络分析Page中执行。Page在用户WebBrowser中执行。请求的参数与download_packets雷同,包括:
数据标识(id),标识Server端的数据来源。Server往往服务很多用户,同一个用户也可以打开多个分析页面,在一同页面中也可以分析不同源的数据报文。因此需要使用唯一id来标识。
数据包范围(packet range),包括数据包起始序号和数量。
数据包条件(conditions),包括时间范围条件和使用BPF语法(Berkeley PacketFilter)的过滤条件。BPF语法也可用同等表达能力的对象结构(譬如JSON)来表示。
Response:响应由数据包服务处理。数据包服务(Service)在服务端Sever执行。可以使用压缩减少传输量。响应的结果,包括:
数据包数量(count),符合请求条件的数据包数量。
数据包字节(bytes),符合请求条件一组数据包字节。数据包采用两进制字节格式,使用PCAP的Frame封装时间和长度(也可采用有同样表达能力的格式)。
值得指出的是,本发明的步骤4.3“向Server请求数据包字节”是企业用户的一种首选使用场景。企业用户一般部署NPM(网络性能管理)系统、网络安全系统或类似网络运维系统,进行网络分析和管理。这类系统都具有采集数据包的能力,能够采集和存储数据包。因此,本发明可以直接这类系统整合,使用步骤4.3的能力,直接获取这类系统的数据包进行协议分析。相比于下载数据包到本地在急性分析的方式,步骤4.3的方式使用更简单,而且因为按分析需求动态下载(而不是全部下载)响应处理更快。
本发明的步骤4.5“执行函数分析计算”中的函数在步骤4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数。
reset_engine:对于切换分析文件的交互操作,调用本函数。
set_option:对于修改参数的交互操作,调用本函数。
download_packets:对于直接的下载操作交互操作,调用本函数。此外,如步骤4.3的说明,也会在分析过程中自动调用。
list_packets:对于列出数据包的交互操作,调用本函数。
get_packet_protocol_stack:对于一个数据包的协议分析交互操作,调用本函数。
get_packet_bytes:对于一个数据包的协议分析交互操作,展示协议字节时,调用本函数。
list_flows:对于列出网络流的交互操作,调用本函数。
list_flow_packets:对于列出某个网络流数据包的交互操作,调用本函数。
filter_packets:对于过滤数据包的交互操作,调用本函数。
find_packets:对于在数据包列表中,定位所选数据包的交互操作,调用本函数。
save_packets:对于保存数据包的交互操作,调用本函数。
load_file:除了步骤4.3的企业使用优选的服务端方式数据加载方式外,本发明可以调用本函数直接加载本地PCAP文件进行分析。此时id可以由加载位置(path)生成。这种模式下,数据包为一次性全部加载,因此在步骤4时,步骤4.2总是返回“是”,因此不会执行步骤4.3。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种使用Wasm的网络协议分析方法,其特征在于,包括:
步骤S1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
步骤S2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
步骤S3:在网络分析页面执行网络协议分析;
步骤S4:网络分析页面调用网络协议分析引擎获取协议分析数据;
步骤S5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
2.根据权利要求1所述的使用Wasm的网络协议分析方法,其特征在于,在所述步骤S1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
3.根据权利要求1所述的使用Wasm的网络协议分析方法,其特征在于:
在所述步骤S2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
在所述步骤S3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
4.根据权利要求1所述的使用Wasm的网络协议分析方法,其特征在于,在所述步骤S4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
步骤S4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
步骤S4.2:数据包是否已下载,根据步骤S4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
步骤S4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
步骤S4.4:功能分析结果是否就绪;根据步骤S4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
步骤S4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
步骤S4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
5.根据权利要求4所述的使用Wasm的网络协议分析方法,其特征在于:
在步骤S4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在步骤S4.5中:
执行函数分析计算中的函数在步骤S4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行步骤S4.3。
6.一种使用Wasm的网络协议分析系统,其特征在于,包括:
模块M1:开发网络协议分析引擎,并将网络协议分析引擎编译为Wasm格式;
模块M2:网络协议分析引擎与网络分析页面一起加载到用户浏览器;
模块M3:在网络分析页面执行网络协议分析;
模块M4:网络分析页面调用网络协议分析引擎获取协议分析数据;
模块M5:网络分析页面使用JavaScript渲染返回的协议分析数据进行展示。
7.根据权利要求6所述的使用Wasm的网络协议分析系统,其特征在于,在所述模块M1中:
利用Wasm的特性使用语言开发网络协议分析引擎Engine,提供分析和功能函数,使用相关工具链将网络协议分析引擎Engine编译为Wasm格式,以供JavaScript程序调用;
网络协议分析引擎Engine提供的分析和功能函数包括:
init_engine:初始化Engine,按照初始化配置分配相应的缓存空间;
reset_engine:重置Engine的缓存空间,重新加载数据包进行计算;
set_option:设置Engine的选项;
download_packets:按照数据包范围,从Server下载数据包,并将数据包存入handle指向的缓存空间;在下载数据包后,开展预计算,将分析结果存入缓存空间,是否开展预计算由选项控制,通过set_option开启或者禁用;
list_packets:按照数据包范围,返回一组数据包摘要信息,使用列表格式展示;
get_packet_protocol_stack:返回一个给定数据包的协议栈信息,使用树状展示;
get_packet_bytes:返回一个给定数据包的协议栈信息,使用表格形式展示;采用不同的信息长度,或者不同的编码方式展示;
list_flows:按照网络流范围,返回一组网络流摘要信息,使用列表格式展示;网络流的分组方式通过set_option函数设置;
list_flow_packets:按照网络流序号,返回网络流中的数据包摘要信息,使用列表格式展示;
filter_packets:按照过滤条件,返回一组数据包摘要信息,使用列表格式展示;
find_packets:按照过滤条件,返回一组数据包序号,以供UI定位数据包;
save_packets:以PCAP格式保存数据包到指定位置。
load_file:加载本地PCAP格式数据包进行分析。
8.根据权利要求6所述的使用Wasm的网络协议分析系统,其特征在于:
在所述模块M2中:
将网络协议分析引擎Engine嵌入网络分析页面Page,网络分析页面Page使用JavaScript开发;在用户加载网络分析页面时,Wasm格式的网络协议分析引擎Engine和网络分析页面Page一起加载到用户的浏览器Browser中;
在所述模块M3中:
用户在网络分析页面Page上执行网络协议分析操作,网络分析页面Page通过UI界面提供交互操作功能,交互操作功能包括:加载数据报文、查看数据包列表、点击数据包查看协议栈和报文字节、展开协议栈查看协议信息、进行网络流列表、点击网络流查看组成网络流的数据包列表、输入条件过滤数据包列表、输入条件查找数据包和报错数据包。
9.根据权利要求6所述的使用Wasm的网络协议分析系统,其特征在于,在所述模块M4中:
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络分析页面Page响应交互操作,使用要展示或分析的数据包的范围作为参数,调用网络协议分析引擎Engine的相应功能函数,网络协议分析引擎Engine执行编译后二进制Wasm程序,在浏览器Browser内完成相应的数据获取或者分析计算,直接返回相关功能的结果数据;
网络分析页面Page调用网络协议分析引擎Engine获取协议分析数据,网络协议分析引擎Engine通过功能函数处理交互操作需求,获得分析结果数据,具体说明如下:
模块M4.1:输入数据包范围和功能范围,输入交互操作,数据包范围由交互操作中的要展示或分析的数据包决定,功能范围由实际调用的功能函数决定;
模块M4.2:数据包是否已下载,根据模块M4.1的数据包范围,在handle指向的网络协议分析引擎Engine缓存空间中查看数据包是否被缓存,判断数据包是否已经下载;
模块M4.3:向Server请求数据包字节;如果数据包未下载,则调用download_packets函数向Server请求数据包字节;
模块M4.4:功能分析结果是否就绪;根据模块M4.1的功能范围,在handle指向的网络协议分析引擎Engine缓存空间中查看相应分析结果是否被缓存,判断功能分析结果是否就绪;
模块M4.5:执行函数分析计算;如果功能数据为就绪,执行函数计算,获得分析结果,缓存到handle指向的Engine缓存空间中;
模块M4.6:返回分析结果数据;在handle指向的Engine缓存空间中获得分析结果,返回。
10.根据权利要求9所述的使用Wasm的网络协议分析系统,其特征在于:
在模块M4.3中:
向Server请求数据包字节的网络协议分析引擎Engine和Server之间的交互过程在download_packets函数中实现,具体说明如下:
Request:请求由网络协议分析引擎Engine发起,网络协议分析引擎Engine在网络分析页面Page中执行,网络分析页面Page在用户网络浏览器中执行,请求的参数包括:
数据标识:标识Server端的数据来源;
数据包范围:包括数据包起始序号和数量;
数据包条件:包括时间范围条件和使用BPF语法的过滤条件,BPF语法也能够用同等表达能力的对象结构表示;
Response:响应由数据包服务处理,数据包服务在服务端Sever执行,使用压缩减少传输量;
响应的结果,包括:
数据包数量:符合请求条件的数据包数量;
数据包字节:符合请求条件一组数据包字节,数据包采用二进制字节格式,使用PCAP的Frame封装时间和长度;
在模块M4.5中:
执行函数分析计算中的函数在模块M4.1中定义,响应不同的交互操作,具体说明如下:
init_engine:在分析过程中不会使用本函数;
reset_engine:报错数据包切换分析文件的交互操作时进行调用;
set_option:报错数据包修改参数的交互操作时进行调用;
download_packets:报错数据包直接的下载操作交互操作时进行调用;
list_packets:报错数据包列出数据包的交互操作时进行调用;
get_packet_protocol_stack:一个数据包的协议分析交互操作时进行调用;
get_packet_bytes:一个数据包的协议分析交互操作,展示协议字节时进行调用;
list_flows:报错数据包列出网络流的交互操作时进行调用;
list_flow_packets:报错数据包列出某个网络流数据包的交互操作时进行调用;
filter_packets:报错数据包过滤数据包的交互操作时进行调用;
find_packets:报错数据包在数据包列表中,定位所选数据包的交互操作时进行调用;
save_packets:报错数据包保存数据包的交互操作时进行调用;
load_file:直接加载本地PCAP文件进行分析,id由加载位置生成,此时,数据包一次性全部加载,不执行模块M4.3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211695585.4A CN116032809B (zh) | 2022-12-28 | 2022-12-28 | 使用Wasm的网络协议分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211695585.4A CN116032809B (zh) | 2022-12-28 | 2022-12-28 | 使用Wasm的网络协议分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116032809A true CN116032809A (zh) | 2023-04-28 |
CN116032809B CN116032809B (zh) | 2024-04-30 |
Family
ID=86071641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211695585.4A Active CN116032809B (zh) | 2022-12-28 | 2022-12-28 | 使用Wasm的网络协议分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116032809B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746867A (zh) * | 2013-12-23 | 2014-04-23 | 中国电子科技集团公司第三十六研究所 | 一种基于基函数的网络协议分析方法 |
CN104516913A (zh) * | 2013-09-30 | 2015-04-15 | 昆明能讯科技有限责任公司 | 基于多种内核技术的网页浏览器 |
CN106357482A (zh) * | 2016-11-30 | 2017-01-25 | 四川秘无痕信息安全技术有限责任公司 | 一种基于网络协议实施监控网页访问的方法 |
US20190188282A1 (en) * | 2017-12-15 | 2019-06-20 | Palantir Technologies Inc. | Systems and methods for client-side data analysis |
CN110765381A (zh) * | 2019-10-10 | 2020-02-07 | 许昌许继软件技术有限公司 | 基于WebAssembly技术的配网主站的Web发布方法及系统 |
CN113779168A (zh) * | 2021-08-26 | 2021-12-10 | 广州和辰信息科技有限公司 | 一种基于WebAssembly的矢量空间数据解析方法 |
-
2022
- 2022-12-28 CN CN202211695585.4A patent/CN116032809B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516913A (zh) * | 2013-09-30 | 2015-04-15 | 昆明能讯科技有限责任公司 | 基于多种内核技术的网页浏览器 |
CN103746867A (zh) * | 2013-12-23 | 2014-04-23 | 中国电子科技集团公司第三十六研究所 | 一种基于基函数的网络协议分析方法 |
CN106357482A (zh) * | 2016-11-30 | 2017-01-25 | 四川秘无痕信息安全技术有限责任公司 | 一种基于网络协议实施监控网页访问的方法 |
US20190188282A1 (en) * | 2017-12-15 | 2019-06-20 | Palantir Technologies Inc. | Systems and methods for client-side data analysis |
CN110765381A (zh) * | 2019-10-10 | 2020-02-07 | 许昌许继软件技术有限公司 | 基于WebAssembly技术的配网主站的Web发布方法及系统 |
CN113779168A (zh) * | 2021-08-26 | 2021-12-10 | 广州和辰信息科技有限公司 | 一种基于WebAssembly的矢量空间数据解析方法 |
Non-Patent Citations (1)
Title |
---|
微步_YM: "Web:使用wireshark抓取网络报文并分析", Retrieved from the Internet <URL:https://blog.csdn.net/yiminghd2861/article/details/105024793> * |
Also Published As
Publication number | Publication date |
---|---|
CN116032809B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10839141B2 (en) | System and method for provisioning a mobile software application to a mobile device | |
US7287190B2 (en) | Simultaneous execution of test suites on different platforms | |
US20020169591A1 (en) | Module for developing wireless device applications using an integrated emulator | |
CN109558320B (zh) | 系统测试方法、装置、系统、设备及计算机可读存储介质 | |
US20080082967A1 (en) | Method and system for parameter profile compiling | |
US9965257B2 (en) | Automatic configuration of project system from project capabilities | |
US20230092752A1 (en) | System and method for development of gateway policies in an application programming interface environment | |
CN109492181A (zh) | 页面跳转方法、装置、计算机设备和存储介质 | |
CN113312046A (zh) | 子应用页面处理方法、装置和计算机设备 | |
CN111880804A (zh) | 应用程序代码的处理方法及装置 | |
CN115859280A (zh) | 内存马的检测方法、装置、设备及存储介质 | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN113608742A (zh) | 检测方法、代码包处理方法、运行控制方法及计算设备 | |
CN109947407B (zh) | 一种数据获取方法及装置 | |
CN116032809B (zh) | 使用Wasm的网络协议分析方法及系统 | |
CN113220586A (zh) | 一种自动化的接口压力测试执行方法、装置和系统 | |
Lui et al. | A generalized approach to real-time, non-intrusive instrumentation and monitoring of standards-based distributed middleware | |
CN113608996B (zh) | 一种镜像编译测试方法、系统、装置及可读存储介质 | |
CN118012520A (zh) | 小程序加载和上传方法、装置、设备及存储介质 | |
CN114721929A (zh) | 测试方法、装置、存储介质及设备 | |
CN115756763A (zh) | 微服务容器快速编译运行方法、装置、系统及电子设备 | |
CN113553059A (zh) | 局部变量查询方法、装置、服务器及存储介质 | |
CN117369822A (zh) | 一种离线编译的方法、装置、电子设备及可读存储介质 | |
CN117539493A (zh) | 应用开发的方法、装置、电子设备及存储介质 | |
CN118227140A (zh) | 在程序中部署PyTorch模型的方法、设备及产品 |
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 |