CN114513566A - 自定义网络协议解析方法、系统、介质及电子设备 - Google Patents

自定义网络协议解析方法、系统、介质及电子设备 Download PDF

Info

Publication number
CN114513566A
CN114513566A CN202210144083.6A CN202210144083A CN114513566A CN 114513566 A CN114513566 A CN 114513566A CN 202210144083 A CN202210144083 A CN 202210144083A CN 114513566 A CN114513566 A CN 114513566A
Authority
CN
China
Prior art keywords
analysis
protocol
virtual machine
network
script
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
Application number
CN202210144083.6A
Other languages
English (en)
Other versions
CN114513566B (zh
Inventor
郑思文
王春辉
李春利
杨娜
贺辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yuewei Science And Technology Co ltd
Original Assignee
Shanghai Yuewei Science And Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Yuewei Science And Technology Co ltd filed Critical Shanghai Yuewei Science And Technology Co ltd
Priority to CN202210144083.6A priority Critical patent/CN114513566B/zh
Publication of CN114513566A publication Critical patent/CN114513566A/zh
Application granted granted Critical
Publication of CN114513566B publication Critical patent/CN114513566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)

Abstract

本发明提供一种自定义网络协议解析方法、系统、介质及电子设备;所述方法包括以下步骤:对获取的自定义的协议解析脚本进行编译,获取字节码文件;将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果;本发明构建一种描述型编程语言以实现对网络流量的自动化识别与网络协议字段的解析及自定义提取,这种语言语法简单,语义明确,易于学习,易于扩展,相比于传统协议解析软件开发难度显著降低,开发效率大大提高。

Description

自定义网络协议解析方法、系统、介质及电子设备
技术领域
本发明属于数据解析技术领域,特别是涉及一种自定义网络协议解析方法、系统、介质及电子设备。
背景技术
在网络通信中,所有的数据都是以二进制形式进行传输的,通信双方只有知道对端发来的数据的具体格式才可以获取数据中承载的信息;市场上存在多种多样的网络设备、操作系统、应用软件,网络协议的目的是在这种多样性中商定一种通用的、公用的数据格式,使不同的通信端传输的内容都符合同一个规范;网络协议以规范文档的形式规定了通信双方需要遵循的数据格式;网络协议解析就是依据规范文档对网络通信的二进制数据进行解码,获取其中每个字段的具体取值。
目前业界常用的协议解析软件是Wireshark、科来软件分析系统等,这类软件能够支持绝大多数的常用协议的解析,但如果遇到自定义协议时则无法正常解析,这些软件虽然可以通过自带的插件实现新协议的开发与注册,但由于涉及软件代码的复杂性,开发难度较大,难以轻松扩展,可用性较差。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种自定义网络协议解析方法、系统、介质及电子设备,用于解决现有传统协议解析软件开发难度大的问题。
为实现上述目的及其他相关目的,本发明提供一种自定义网络协议解析方法,包括以下步骤:对获取的自定义的协议解析脚本进行编译,获取字节码文件;将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
于本发明的一实施例中,于所述对获取的自定义的协议解析脚本进行编译的步骤之前,所述方法包括还以下步骤:获取所述协议解析脚本。
于本发明的一实施例中,所述获取所述协议解析脚本包括以下步骤:根据语法定义编写所述协议解析脚本。
于本发明的一实施例中,所述对获取的自定义的协议解析脚本进行编译,获取字节码文件包括以下步骤:对所述协议解析脚本进行词法分析,获取单词序列;对所述单词序列进行语法分析,获取语法短语;对所述语法短语进行词义分析;基于所述语义分析的结果生成预设格式的中间代码;基于所述中间代码输出所述字节码文件;每一所述字节码文件对应一协议类型。
于本发明的一实施例中,于所述基于所述中间代码输出所述字节码文件的步骤之前,所述对获取的自定义的协议解析脚本进行编译还包括以下步骤:优化所述中间代码;所述基于所述中间代码输出所述字节码文件包括以下步骤:基于优化后的中间代码输出所述字节码文件。
本发明提供一种自定义网络协议解析系统,包括:编译模块和加载模块;所述编译模块用于对获取的自定义的协议解析脚本进行编译,获取字节码文件;所述加载模块用于将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
本发明提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的自定义网络协议解析方法。
本发明提供一种电子设备,包括:处理器及存储器;所述存储器用于存储计算机程序;所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的自定义网络协议解析方法。
本发明提供一种自定义网络协议解析系统,包括:虚拟机和上述的电子设备;所述虚拟机用于获取网络流量,及解析所述网络流量,获取解析结果。
于本发明的一实施例中,所述虚拟机还用于输出所述解析结果;所述虚拟机采用以下任意一种或几种组合方式输出所述解析结果:文本格式、二进制格式及数据库。
如上所述,本发明所述的自定义网络协议解析方法、系统、介质及电子设备,具有以下有益效果:
(1)与现有技术相比,本发明采用面向语言编程方法,构建了一种描述型编程语言,实现了对网络流量的自动化识别与网络协议字段的解析及自定义提取,这种语言语法简单,语义明确,易于学习,易于扩展,相比于传统协议解析软件开发难度显著降低,开发效率大大提高。
(2)本发明通过分离为专用描述语言的实现与基于描述语言的程序开发,增加了自定义网络协议解析的模块化,减少了开发复杂度。
(3)本发明面向应用的专用语言聚焦于专业领域的功能实现,相比于通用语言的实现可以大大的减少最终的代码量,也可以减少程序开发的工作量;代码量级的降低也会导致可维护性的增强,专注于程序的易用性,用户友好性,实现了更高的开发效率。
(4)本发明通过将语言的实现与语言的处理相分离,不同的操作系统只需要重新编译语言的解析器就可以加载代码,达到一次编译到处运行的效果,具有更高的可移植性。
(5)基于市场对网络流量解析的需求正在增加,本发明可以为以后相似的开发项目提供可重用的保障,相比于一系列函数、类等应用程序接口,一种定义良好的语言具有更大的可重用性,能够满足可重用性需求。
(6)本发明提供的一种领域专用语言,相比于通用编程语言更能满足专业领域用户的定制化需求,一种封装良好的语言的安全性也较通用语言为高,满足用户友好型需求。
附图说明
图1显示为本发明的自定义网络协议解析方法于一实施例中的流程图。
图2显示为本发明的对获取的自定义的协议解析脚本进行编译,获取字节码文件于一实施例中的流程图。
图3显示为本发明的协议解析于一实施例中的流程图。
图4显示为本发明的虚拟机于一实施例中的解析架构图。
图5显示为本发明的自定义网络协议解析系统于一实施例中的结构示意图。
图6显示为本发明的电子设备于一实施例中的结构示意图。
图7显示为本发明的自定义网络协议解析系统于另一实施例中的结构示意图。
具体实施方式
以下通过特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的自定义网络协议解析方法、系统、介质及电子设备,与现有技术相比,本发明采用面向语言编程方法,构建了一种描述型编程语言,实现了对网络流量的自动化识别与网络协议字段的解析及自定义提取,这种语言语法简单,语义明确,易于学习,易于扩展,相比于传统协议解析软件开发难度显著降低,开发效率大大提高;本发明通过分离为专用描述语言的实现与基于描述语言的程序开发,增加了自定义网络协议解析的模块化,减少了开发复杂度;本发明面向应用的专用语言聚焦于专业领域的功能实现,相比于通用语言的实现可以大大的减少最终的代码量,也可以减少程序开发的工作量;代码量级的降低也会导致可维护性的增强,专注于程序的易用性,用户友好性,实现了更高的开发效率;本发明通过将语言的实现与语言的处理相分离,不同的操作系统只需要重新编译语言的解析器就可以加载代码,达到一次编译到处运行的效果,具有更高的可移植性;基于市场对网络流量解析的需求正在增加,本发明可以为以后相似的开发项目提供可重用的保障,相比于一系列函数、类等应用程序接口,一种定义良好的语言具有更大的可重用性,能够满足可重用性需求;本发明提供的一种领域专用语言,相比于通用编程语言更能满足专业领域用户的定制化需求,一种封装良好的语言的安全性也较通用语言为高,满足用户友好型需求。
本发明的存储介质上存储有计算机程序,该计算机程序被处理器执行时实现下述的自定义网络协议解析方法。所述存储介质包括:只读存储器(Read-Only Memory,ROM)、随机访问存储器(Random Access Memory,RAM)、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
可以采用一个或多个存储介质的任意组合。存储介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、RAM、ROM、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
近些年,随着企业上云、5G落地、物联网设备激增,网络爆炸式发展,网络流量海量化、复杂化成为常态,如何识别、监测、分析网络流量成为重要研究方向和企业关注热点。网络流量分析(NTA-Network Traffic Analysis)最早在2013年被提出,是一种威胁检测技术;2017年6月,网络流量分析技术入选了Gartner《2017年11大顶尖信息安全技术》;网络流量分析通过基于网络的方式去识别绕过边界安全的高级攻击方法;网络流量分析技术的主要目的是深入了解流经网络的流量、网络数据包或数据的类型;网络流量分析的流量分析信息有助于了解和评估网络利用率、上传/下载速度、数据包的类型、大小、来源、目的地、网络传输性能、使用的协议端口;网络安全人员使用网络流量分析技术来识别流量中的任何恶意或可疑数据包;网络管理员分析上传下载信息、吞吐量、网络传输性能等以了解网络操作的流量行为,还可以使用网络流量分析技术来分析网络流量模式并识别任何侵入或检索敏感数据的漏洞或手段;无论是基于哪种网络分析技术,网络流量解析总是不可或缺的环节;网络协议解析是对网络流量特征的识别、提取,为后续的分析技术打下基础。
网络协议解析通过对网络协议的深度研究掌握其全部或部分的数据结构分布,进而对目标数据进行提取的技术;目前业界常见的协议解析软件包括Wireshark和科来网络分析系统,具有以下缺点:
缺点一:对自定义协议的扩展难度较大;Wireshark支持基于lua插件的扩展及基于C语言源码的自定义扩展,这对用户设置了较高的技术屏障,而且相关接口繁多复杂,需要导入变量较多,操作难度较大;科来网络分析系统fast_decoder功能支持自定义扩展,类似Wireshark中的lua插件,接口虽然有所精简但还是稍嫌复杂,难以记忆,而且没有协议的识别功能及多层协议的组合解析。
本发明是一种独立的描述语言,不使用任何顶层接口,支持基于协议层级的识别及协议。
缺点二:协议解析开发难度大;Wireshark及科来软件分析系统用于扩展的编程语言都是命令式语言,在协议解析软件开发过程中命令式语言涉及到字段偏移、端序转换等繁琐的编码问题。
本发明通过定义一种针对网络协议的描述性编程语言将解析过程中的复杂性转移到语言的实现中而不是留给使用此语言的用户。
缺点三:不支持对海量数据的解析存储;Wireshark及科来软件分析系统不支持大量数据的提取存储,Wireshark虽然附带一个tshark工具支持数据的提取,但不支持结构化转储数据,科来软件分析系统不支持数据提取。
本发明中定义的语言对内存结构不做强制规定,实现可以自由选择。
缺点四:程序可移植性差;Wireshark及科来软件分析系统只能在Windows系统下使用,Wireshark虽然附带一个tshark工具支持数据的提取,但对字段提取过滤等操作不友好,提取效率较差。
缺点五:程序性能差;Wireshark及科来软件分析系统本质上是流量分析系统而不是流量解析工具,他们的图形用户界面对用户友好,但无法应付高带宽情况下的大流量处理;Windows服务器不能满足高吞吐率的要求。
本发明中的语言编程可以解决跨平台问题。
缺点六:不支持协议字段解析后的自定义输出,灵活性不足。
本发明采用面向语言编程(language orientd programming)方法,定义了一种描述型语言,这种语言的解析器可以实现对网络协议的识别与解析。
需要说明的是,上述的网络协议(protocol)是计算机网络通信中相互通信的双方所必须遵守的一系列规则。
如图1所示,于一实施例中,本发明的自定义网络协议解析方法包括以下步骤:
步骤S1、获取所述协议解析脚本。
于一实施例中,所述获取所述协议解析脚本包括以下步骤:根据语法定义编写所述协议解析脚本。
具体地,参考以下协议解析语言语法文档:
(一):协议描述语言框架定义:每个协议由一个脚本文件来描述,脚本由声明段与定义段组成;声明段必须以‘%’作为起始符,定义段不作严格要求;脚本第一行声明协议的名称,如:“%protocol tls”表示此脚本描述tls协议。
(二):基本数据类型的字段定义;语法为:字段名称字段类型‘;’,如:“versionuint_8;”表示version字段为一个无符号一个字节的整数类型。
其他的基本数据类型及其意义为:
uint_16 无符号二个字节的整数类型
int_16 有符号二个字节的整数类型
uint_32 无符号四个字节的整数类型
int_32 有符号四个字节的整数类型
uint_64 无符号八个字节的整数类型
int_64 有符号八个字节的整数类型
int_8 有符号一个字节的整数类型
(三)字段绝对偏移量定义;以B表示字节单位Byte,以b表示位单位bit;语法为:字段名称[‘@’绝对位置偏移]字段类型‘;’,如:“version@12B uint_8;”表示version字段是一个无符号一个字节的整数类型位于距起始位置12个字节处。
(四)实现字段占用长度描述及字符串类型定义;以B表示字节单位Byte,以b表示位单位bit;语法为:字段名称字段长度[‘@’绝对位置偏移]字段类型‘;’,如:“name5Bstr;”便是name字段是一个长度为5个字节的字符串。
(五)常见的网络字段类型如mac、ipv4、ipv6、time、utime、bytes、bits;类型定义示例如下:
src_mac mac; src_mac是一个MAC地址字段,占6字节
dst_ip ipv4; dst_ip是一个IPv4字段,占4字节
src_ip ipv6; src_ip是一个IPv6字段,占32字节
scantime time; scantime是秒级时间字段,占4字节
currenttime utime; currenttime是微秒级时间字段,占8字节
padding 6B bytes; padding是6个字节的连续字节流
open_flag 2b bits; open_flag是连续2个比特的位组
(六)字段的属性定义;语法为:字段名称字段长度[‘@’绝对位置偏移]字段类型‘:’{属性名=属性值;}*,如可以通过引用已知的数据确定当前数据的长度属性:name_lenuint8_t;如:
name str:length=name_len;
表示name是一个字符串类型数据,其长度由name_len解析得到。
(七)支持跳过特定长度数据;当用户对协议的某些字段意义不明确时或当某些字段对于当前任务没有意义时都可以采用此结构;语法为<SKIP>长度;如:
name_len uint_8;
<SKIP> 5B;
name 6B;
表示解析完name_len字段后,跳过5字节继续解析下一个name字段。
(八)支持字段的嵌套描述,即一个字段包含多个类型的字段;引入符合数据类型pack;语法为:字段名称字段长度[‘@’绝对位置偏移]字段类型‘:’{属性名=属性值;}*,其中,字段类型可表示为pack/符合字段类型定义,如:
employee pack/employee_info;
%pack employ_info
name 6B str;
age uint_8;
表示employee字段由两个字段组合而成,第一个字段为长度为6字节的name,第二个字段为无符号一字节长度的整数类型age。
步骤S2、对获取的自定义的协议解析脚本进行编译,获取字节码文件。
具体地,将各种自定义的协议解析脚本放到特定目录下,开启对该自定义的协议解析脚本的编译。
如图2和图3所示,于一实施例中,所述对获取的自定义的协议解析脚本进行编译,获取字节码文件包括以下步骤:
步骤S21、对所述协议解析脚本进行词法分析,获取单词序列。
需要说明的是,词法分析是编译理解源代码程序的第一个环节,其主要功能是将源文件(对应该步骤S21中的协议解析脚本)中的字符流转换为单词(Token)序列并附加一些语法类型信息;词法分析一般基于正则表达式及有限状态自动机来实现,在编程实践中一般采用现成的扫描工具如flex进行自动转换;例如,于本发明中需要将‘i’、‘n’、‘t’等单个字符组合成有意义的“int”。
步骤S22、对所述单词序列进行语法分析,获取语法短语。
需要说明的是,语法分析的任务是在上述步骤S21的词法分析的基础上,将单词序列组合成各类语法短语;语法分析程序需要判断源程序在结构上是否正确;语法分析方法包括两大类,一类为自上而下的分析法,一类为自下而上的分析法,通常可以利用现成的语法分析器如yacc、antlr作语言的语法分析。
步骤S23、对所述语法短语进行词义分析。
需要说明的是,语义分析阶段需要对语法分析阶段生成的数据(对应上述步骤S22中的语法短语)作进一步的上下文有关的处理,主要功能是实现对源程序意义的理解与错误排查,包括但并不限于对数据类型的审查与转换、基础类形变量与复合类型变量的引用检查。
步骤S24、基于所述语义分析的结果生成预设格式的中间代码。
需要说明的是,设计一种特定的中间格式需要考虑编译记录、处理、操作的种种数据类型,需要深入理解源语言与目的语言的相关性,考虑内部的信息的存储于传递,需要为后续的代码优化与字节码输出阶段准备良好的可操作性环境。
步骤S25、基于所述中间代码输出所述字节码文件。
需要说明的是,每一所述字节码文件对应一协议类型。
需要说明的是,将编译和运行分离可以提高程序的通用性,增加源代码的保密性,编译阶段太长的优化时间也不会对运行时环境产生不良影响;该步骤S25针对每个协议类型输出一个字节码文件,因为,此字节码文件内包含相应协议的数据结构及解析方式,故将其命名为“协议模板”,以使后续虚拟机根据该协议模板解析接收的数据。
于一实施例中,于所述基于所述中间代码输出所述字节码文件的步骤之前,所述对获取的自定义的协议解析脚本进行编译还包括以下步骤:优化所述中间代码。
需要说明的是,代码优化是编译成功与否的一个重要的技术、质量指标,代码优化是对程序进行等价变换,在不改变程序功能的同时提高代码的运行速率、降低代码的冗余率。
于一实施例中,所述基于所述中间代码输出所述字节码文件包括以下步骤:基于优化后的中间代码输出所述字节码文件。
步骤S3、将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
需要说明的是,虚拟机管理各类协议模板及协议之间的依赖关系,协议间的交互依赖采用两种机制,第一种类型为从上到下的演绎机制,即上层协议的字段决定下层协议的类型,第二种为注册回调机制,这种机制下只有下层协议识别成功时才会决定下层协议的具体类型。
需要说明的是,数据解析方式有两种:一种是pcap文件离线解析,另一种为实时接受网卡流量,对网络数据的采集一般通过调用libpcap相关接口完成。
如图4所示,于一实施例中,虚拟机根据加载的各类协议字节码对网络流量作解析,根据网络协议五元组对网络流量作基于流的识别与解析,独立的字节码格式可以允许虚拟机实现并行处理。
进一步地,该虚拟机还会输出上述的解析结果。
于一实施例中,该虚拟机提供文本格式输出、二进制格式接口及数据库输出接口;其中,文本格式便于浏览,二进制格式便于实时数据分析,数据库便于对解析结果作后续应用分析。
需要说明的是,现有的技术(Wireshark与科来软件分析系统)都是将协议解析模块嵌入网络流量分析系统中,这样做会导致系统功能耦合较大,不利于大流量分析,且一般的网络流量解析都是基于通用的命令式语言(像Wireshark与科来软件分析系统)作从上到下的解析,协议字段的多样化带来开发难度较高,字段错误率较高,开发周期较长等问题;本发明定义了一种专用描述语言用以描述并解析网络协议格式,通过将协议解析与流量分析功能分离,提高了系统的内聚性、可用性;通过语言的描述实现协议的解析,这种语言语法简单易用,具有良好的可扩展性,支持多种数据类型,具有多样的控制结构,相比于xml或json等结构化数据描述格式,本发明定义的语言更专注于描述网络协议的各种结构化数据,程序的可读性更强。
进一步地,本发明的关键是通过定义一种专用描述语言以描述网络协议格式,是通过描述网络协议的字段类型而不是通过具体的操作步骤来获取协议字段的数据,这种认知来自于网络协议数据解析的特殊性,即网络协议解析软件面对的只是静态的数据而不是逻辑复杂的动态过程,不应该利用通用的命令式编程语言来增加解析过程的复杂性,而是应该把这种复杂性隐藏到语言实现里,通过利用这种创建领域专用语言的方法不仅可以极大地减少程序开发时间,还可以增加程序的可维护性、可重用性。
需要说明的是,命令式编程(Imperative Programming):一种编程范式,与声明式编程相对立,它描述达到目的的具体步骤(how);声明式编程(Declarative Programming):一种编程范式,与命令式编程相对立,它只描述目标的性质(what),具体达到目标的过程(how)由计算机自己去实现;领域专用语言(DSL,Domain Specific Language):专注于某个特定领域的计算机语言,相比于通用编程语言在特定领域具备更多的灵活性;如sql为数据库领域的特定语言;本发明中定义的语言就是网络协议领域中的一种专用描述语言;通用编程语言(General Programming Language):与领域专用语言相对立,在任何领域中都可以使用,相比于领域专用语言具备更多的通用性。
需要说明的是,本发明所述的自定义网络协议解析方法的保护范围不限于本实施例列举的步骤执行顺序,凡是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明的保护范围内。
如图5所示,于一实施例中,本发明的自定义网络协议解析系统包括编译模块51和加载模块52。
所述编译模块51用于对获取的自定义的协议解析脚本进行编译,获取字节码文件。
所述加载模块52用于将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
需要说明的是,本发明的自定义网络协议解析系统的工作原理与上述自定义网络协议解析方法的工作原理相同,故在此不再赘述。
需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,x模块可以为单独设立的处理元件,也可以集成在上述系统的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述系统的存储器中,由上述系统的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个数字信号处理器(Digital Signal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-On-a-Chip,简称SOC)的形式实现。
如图6所示,本发明的电子设备包括处理器61及存储器62。
所述存储器62用于存储计算机程序;优选地,所述存储器62包括:ROM、RAM、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
所述处理器61与所述存储器62相连,用于执行所述存储器62存储的计算机程序,以使所述电子设备执行上述的自定义网络协议解析方法。
优选地,所述处理器61可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图7所示,于一实施例中,本发明的自定义网络协议解析系统包括虚拟机71和上述的电子设备72。
具体地,所述虚拟机71用于获取网络流量,及解析所述网络流量,获取解析结果。
于一实施例中,所述虚拟机71还用于输出所述解析结果。
于一实施例中,所述虚拟机71采用但并不限于以下任意一种或几种组合方式输出所述解析结果:文本格式、二进制格式及数据库。
需要说明的是,本发明的自定义网络协议解析系统的工作原理与上述自定义网络协议解析方法的工作原理相同,故在此不再赘述。
需要说明的是,本发明的自定义网络协议解析系统可以实现本发明的自定义网络协议解析方法,但本发明的自定义网络协议解析方法的实现装置包括但不限于本实施例列举的自定义网络协议解析的结构,凡是根据本发明的原理所做的现有技术的结构变形和替换,都包括在本发明的保护范围内。
综上所述,本发明的自定义网络协议解析方法、系统、介质及电子设备,与现有技术相比,本发明采用面向语言编程方法,构建了一种描述型编程语言,实现了对网络流量的自动化识别与网络协议字段的解析及自定义提取,这种语言语法简单,语义明确,易于学习,易于扩展,相比于传统协议解析软件开发难度显著降低,开发效率大大提高;本发明通过分离为专用描述语言的实现与基于描述语言的程序开发,增加了自定义网络协议解析的模块化,减少了开发复杂度;本发明面向应用的专用语言聚焦于专业领域的功能实现,相比于通用语言的实现可以大大的减少最终的代码量,也可以减少程序开发的工作量;代码量级的降低也会导致可维护性的增强,专注于程序的易用性,用户友好性,实现了更高的开发效率;本发明通过将语言的实现与语言的处理相分离,不同的操作系统只需要重新编译语言的解析器就可以加载代码,达到一次编译到处运行的效果,具有更高的可移植性;基于市场对网络流量解析的需求正在增加,本发明可以为以后相似的开发项目提供可重用的保障,相比于一系列函数、类等应用程序接口,一种定义良好的语言具有更大的可重用性,能够满足可重用性需求;本发明提供的一种领域专用语言,相比于通用编程语言更能满足专业领域用户的定制化需求,一种封装良好的语言的安全性也较通用语言为高,满足用户友好型需求;所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种自定义网络协议解析方法,其特征在于,包括以下步骤:
对获取的自定义的协议解析脚本进行编译,获取字节码文件;
将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
2.根据权利要求1所述的自定义网络协议解析方法,其特征在于,于所述对获取的自定义的协议解析脚本进行编译的步骤之前,所述方法包括还以下步骤:获取所述协议解析脚本。
3.根据权利要求2所述的自定义网络协议解析方法,其特征在于,所述获取所述协议解析脚本包括以下步骤:根据语法定义编写所述协议解析脚本。
4.根据权利要求1所述的自定义网络协议解析方法,其特征在于,所述对获取的自定义的协议解析脚本进行编译,获取字节码文件包括以下步骤:
对所述协议解析脚本进行词法分析,获取单词序列;
对所述单词序列进行语法分析,获取语法短语;
对所述语法短语进行词义分析;
基于所述语义分析的结果生成预设格式的中间代码;
基于所述中间代码输出所述字节码文件;每一所述字节码文件对应一协议类型。
5.根据权利要求4所述的自定义网络协议解析方法,其特征在于,于所述基于所述中间代码输出所述字节码文件的步骤之前,所述对获取的自定义的协议解析脚本进行编译还包括以下步骤:优化所述中间代码;
所述基于所述中间代码输出所述字节码文件包括以下步骤:基于优化后的中间代码输出所述字节码文件。
6.一种自定义网络协议解析系统,其特征在于,包括:编译模块和加载模块;
所述编译模块用于对获取的自定义的协议解析脚本进行编译,获取字节码文件;
所述加载模块用于将所述字节码文件加载至虚拟机,以使所述虚拟机根据所述字节码文件解析网络流量,获取解析结果。
7.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述的自定义网络协议解析方法。
8.一种电子设备,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行权利要求1至5中任一项所述的自定义网络协议解析方法。
9.一种自定义网络协议解析系统,其特征在于,包括:虚拟机和权利要求8中所述的电子设备;
所述虚拟机用于获取网络流量,及解析所述网络流量,获取解析结果。
10.根据权利要求9所述的自定义网络协议解析系统,其特征在于,所述虚拟机还用于输出所述解析结果;
所述虚拟机采用以下任意一种或几种组合方式输出所述解析结果:文本格式、二进制格式及数据库。
CN202210144083.6A 2022-02-17 2022-02-17 自定义网络协议解析方法、系统、介质及电子设备 Active CN114513566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210144083.6A CN114513566B (zh) 2022-02-17 2022-02-17 自定义网络协议解析方法、系统、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210144083.6A CN114513566B (zh) 2022-02-17 2022-02-17 自定义网络协议解析方法、系统、介质及电子设备

Publications (2)

Publication Number Publication Date
CN114513566A true CN114513566A (zh) 2022-05-17
CN114513566B CN114513566B (zh) 2024-06-18

Family

ID=81552638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210144083.6A Active CN114513566B (zh) 2022-02-17 2022-02-17 自定义网络协议解析方法、系统、介质及电子设备

Country Status (1)

Country Link
CN (1) CN114513566B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114785864A (zh) * 2022-06-16 2022-07-22 联宝(合肥)电子科技有限公司 一种数据交互方法、系统、电子设备及存储介质
CN114885047A (zh) * 2022-07-12 2022-08-09 之江实验室 一种可编程网络的协议解析方法、系统和可读存储介质
CN116016345A (zh) * 2022-12-05 2023-04-25 四川大学 一种基于自定义协议描述语言的网络流量还原方法
WO2024021666A1 (zh) * 2022-07-27 2024-02-01 华为云计算技术有限公司 流量分析方法、云平台及相关装置
CN118283148A (zh) * 2024-06-04 2024-07-02 南京信息工程大学 一种跨平台应用层协议解析器自动生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060280178A1 (en) * 2005-06-14 2006-12-14 Microsoft Corporation Script-based parser
CN105959154A (zh) * 2016-06-22 2016-09-21 中国科学技术大学 一种基于编程工具的协议无关网络的转发管理方法
CN108173844A (zh) * 2017-12-27 2018-06-15 成都数成科技有限公司 一种网络协议解码脚本的定义方法
CN112714044A (zh) * 2020-12-28 2021-04-27 北京恒光信息技术股份有限公司 基于形式语言协议的网络数据解析方法及装置
CN113703779A (zh) * 2021-09-06 2021-11-26 武汉市字节码科技有限公司 一种跨平台的多语言编译方法和超轻量物联网虚拟机

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060280178A1 (en) * 2005-06-14 2006-12-14 Microsoft Corporation Script-based parser
CN105959154A (zh) * 2016-06-22 2016-09-21 中国科学技术大学 一种基于编程工具的协议无关网络的转发管理方法
CN108173844A (zh) * 2017-12-27 2018-06-15 成都数成科技有限公司 一种网络协议解码脚本的定义方法
CN112714044A (zh) * 2020-12-28 2021-04-27 北京恒光信息技术股份有限公司 基于形式语言协议的网络数据解析方法及装置
CN113703779A (zh) * 2021-09-06 2021-11-26 武汉市字节码科技有限公司 一种跨平台的多语言编译方法和超轻量物联网虚拟机

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114785864A (zh) * 2022-06-16 2022-07-22 联宝(合肥)电子科技有限公司 一种数据交互方法、系统、电子设备及存储介质
CN114785864B (zh) * 2022-06-16 2022-09-02 联宝(合肥)电子科技有限公司 一种数据交互方法、系统、电子设备及存储介质
CN114885047A (zh) * 2022-07-12 2022-08-09 之江实验室 一种可编程网络的协议解析方法、系统和可读存储介质
WO2024021666A1 (zh) * 2022-07-27 2024-02-01 华为云计算技术有限公司 流量分析方法、云平台及相关装置
CN116016345A (zh) * 2022-12-05 2023-04-25 四川大学 一种基于自定义协议描述语言的网络流量还原方法
CN116016345B (zh) * 2022-12-05 2024-10-18 四川大学 一种基于自定义协议描述语言的网络流量还原方法
CN118283148A (zh) * 2024-06-04 2024-07-02 南京信息工程大学 一种跨平台应用层协议解析器自动生成方法及装置
CN118283148B (zh) * 2024-06-04 2024-08-06 南京信息工程大学 一种跨平台应用层协议解析器自动生成方法及装置

Also Published As

Publication number Publication date
CN114513566B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN114513566A (zh) 自定义网络协议解析方法、系统、介质及电子设备
CN106970820B (zh) 代码存储方法及代码存储装置
US8762962B2 (en) Methods and apparatus for automatic translation of a computer program language code
US8806452B2 (en) Transformation of computer programs and eliminating errors
CN109033764A (zh) 反混淆处理方法及终端、计算机设备
CN111176656B (zh) 一种复杂数据匹配方法及介质
CN112988163B (zh) 编程语言智能适配方法、装置、电子设备和介质
Sommer et al. Spicy: a unified deep packet inspection framework for safely dissecting all your data
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
CN114895908B (zh) 基于Web应用表达式的实现方法及系统、设备和存储介质
US9886251B2 (en) Optimized compiling of a template function
JP2010140408A (ja) ソースコード変換装置
JP2010140407A (ja) ソースコード検査装置
Ortega Mastering Python for Networking and Security: Leverage Python scripts and libraries to overcome networking and security issues
CN117193852A (zh) 一种代码分析方法、系统及可读存储介质
US10540157B2 (en) Systems to remove object relational mappings from a software project
CN111367527A (zh) 一种语言处理的方法、装置、介质和电子设备
CN109992293B (zh) Android系统组件版本信息的组装方法及装置
CN113760291B (zh) 日志输出的方法和装置
US7243341B2 (en) Scripting language for processing typed structured data
CN111221532A (zh) 一种动态链接库的生成方法及装置
Sommer et al. Spicy: A unified deep packet inspection framework dissecting all your data
Bangare et al. Code parser for object Oriented software Modularization
CN116483499A (zh) 页面布局获取方法、系统、介质及装置
Dai et al. Design of ART program language and interpreter based on Java

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