CN108173844A - 一种网络协议解码脚本的定义方法 - Google Patents

一种网络协议解码脚本的定义方法 Download PDF

Info

Publication number
CN108173844A
CN108173844A CN201711439006.9A CN201711439006A CN108173844A CN 108173844 A CN108173844 A CN 108173844A CN 201711439006 A CN201711439006 A CN 201711439006A CN 108173844 A CN108173844 A CN 108173844A
Authority
CN
China
Prior art keywords
definition
syntax
field
decoding
name
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.)
Withdrawn
Application number
CN201711439006.9A
Other languages
English (en)
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.)
Chengdu Kelai Network Technology Co., Ltd
Original Assignee
Chengdu Digital 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 Chengdu Digital Technology Co Ltd filed Critical Chengdu Digital Technology Co Ltd
Priority to CN201711439006.9A priority Critical patent/CN108173844A/zh
Publication of CN108173844A publication Critical patent/CN108173844A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • 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/03Protocol definition or specification 

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种网络协议解码脚本的定义方法,以语言基本逻辑为基础,整个脚本由5个定义段组成,按顺序依次是解码字段定义段、Int运算变量定义段、文法定义段和根文法定义段。与现有技术相比,脚本定义以基本逻辑为根基,能够在支持绝大多数协议的解码的同时,实现优化解码和高性能解码。

Description

一种网络协议解码脚本的定义方法
技术领域
本发明涉及一种网络协议解码脚本的定义方法,特别是涉及一种适用于网络协议解码的,网络协议解码脚本的定义方法。
背景技术
网络协议(protocol)是网络数据交换的规范。
网络协议解码(decoding)是根据网络协议规范,将网络中传输的一段二进制数据还原为一组原始信息的过程。该过程由协议解码器(decoder)完成。
传统的协议解码器由程序员编码开发完成。由于解码器的开发周期长,编码开发存在局限:难以适应协议多样性、难以满足解码正确性和性能、难以快速响应解决方案、不能适应行业特殊需求。
使用脚本解码可以解决以上问题,但如何定义脚本的语法是另一个问题,定义得不好,当我需要支持更多的协议时,需要不停的扩充语法才能实现;更致命的是,无法优化解码,无法实现高性能解码。
发明内容
本发明要解决的技术问题是提供一种能够在支持大多数协议的解码的基础上,实现高性能解码的网络协议解码脚本的定义方法。
本发明采用的技术方案如下:一种网络协议解码脚本的定义方法,具体方法为:以语言基本逻辑为基础,整个脚本由5个定义段组成,按顺序依次是解码字段定义段、Int运算变量定义段、文法定义段和根文法定义段;
所述解码字段定义段包括文法字段,定义了如何解码一个同名文法;定义文法为:field字段名 = 缩写,类型,解码方法;例如:
field Name = N,string,DOMAIN; // DNS协议的域名字段
当类型是关键字fields时,解码方法必须是已定义的解码字段,例如:
groupfieldQuest = Name,Type,Class; // groupfield定义见后面的章节
field Question = Q,fields,Quest; // Question由一个或多个Quest组成
这里应当注意:非fields类型的字段名,文法定义段中必须定义同名文法。
所述文法定义段包括文法定义体,定文法为:parser 文法名 = 文法定义体;所述文法定义体由三种基本语言逻辑{序列,分支,循环}构建,支持字符串、正则表达式和括号嵌套;其中,序列逻辑的定义文法为:文法1 文法2;分支逻辑的定义文法为:文法1 | 文法2;循环逻辑的定义文法为:(文法) 循环定义体;所述循环定义体分为两种,一种是正则表达式循环定义体,另一种是运行时int变量循环定义体,{INT变量},例如:
parser url = regex([^ ]+); // 内嵌正则表达式定义。
所述根文法定义段是整个文法解析的入口,定义文法为:root = 文法名;例如:
parsertcp= tcphdr options;
root= tcp。
所述定义段由定义语句组成,语句之间使用分号分割。
其中,文法名为文法定义名称,不能与关键字同名。关键字为有特殊含义的字符串,大小写敏感。关键字表有:{ field、structfield、groupfield、relatedfield、parser、struct、root、decodemode、mergemodedynamicmode、regex、int、string、fields、N2H、DOMAIN、MAC、IPADDR}。
脚本定义以基本逻辑为根基,能够在支持绝大多数协议的解码的同时,实现优化解码和高性能解码。
所述定义段还包括位于解码字段定义段和文法定义段之间的Int运算变量定义段,由int运算变量定义语句组成,定义文法为:int变量名1 = EXPR(int变量名1,int变量名2,…,int变量名N);EXPR为变量与变量,变量与常量,常量与常量的四则运算。Int运算变量定义段由int运算变量定义语句组成,所以需要进行int运算的变量才需要定义。例如:
fieldoptionlength= Length,L,int,N2H;
IntruntimeLength= optionLength -2; // TCP可选项长度
所述解码字段还包括结构体字段,定义了如何解码一个结构体的一部分,定义文法为:structfield字段名 = 结构体名[偏移长度],缩写,类型,解码方法,例如:
structfieldDstAddress = eth2[0,6],D,string,MAC; // byteofflen
structfieldVersion = iphdr[0:0,4],V,int; // bitofflen
应当注意:文法定义段中必须定义同名结构体。
缩写为解码字段缩写名,不能与关键字同名。字段名为解码字段全名,不能与关键字同名。结构体名为结构体名称,不能与关键字同名。结构体偏移长度为解码字段在结构体中的偏移和长度。
所述解码字段还包括组字段,定义了一组字段的从属聚合关系,定义文法为:groupfield字段名 = 字段名1 ,字段名2 , …,字段名n;例如:
groupfield Quest= Name,Type,Class;// Name Type Class为一组字段从属于Quest
应当注意:表达式右边引用的字段名必须提前定义,此约束后文不再重复。
所述解码字段还包括关联字段,定义了字段根据其他字段的运行时解码结果选择使用某个已定义的解码字段完成解码,定义文法为:relatedfield字段名=条件表达式1 字段名1 条件表达式2 字段名2 …条件表达式N 字段名N;例如:
field Name = N,string,DOMAIN;
field Host = H,string,IPADDR;
field Type = T,int,N2H;
relatedfieldRDData = if ( Type = 5 ) Name // 类型为5时解码为域名
else if ( Type = 1 ) Host; // 类型为1时解码为ip地址
例:relatedparserOpionContent = if ( Optiontype = 2 | Optiontype = 3 |Optiontype = 4) optionLV
else if (Optiontype = 0 | Optiontype = 1)nulloptionLV;// TCP OPTION字段
relatedfield Data = if( Type = 0 & Name = 1) field1 // Type字段值为0并且Name字段值为1时。
所述文法定义段还包括结构体,定义了一块连续的数据长度,分为一般结构体和运行时长度结构体;一般结构体的定义文法为:struct结构体名正整数;运行时长度结构体的定义文法为:struct结构体名字段名;例:
structdnshdr 12;// 定义dnshdr为12字节长度
运行时长度结构体的定义文法:struct结构体名字段名;
例:fieldRDLength = RDL,int,N2H;
structRDDataRDLength; // RDData的长度由RDLength运行时解码结果决定。
所述文法定义段还包括关联文法,定义了一个文法根据解码字段的运行时解码结果选择使用某个已定义的文法完成解析;关联文法的定义文法为:relatedparser文法名 =条件表达式1 文法名1 条件表达式2 文法名2 …条件表达式N 文法名N;例:
relatedparserOpionContent = if ( Optiontype = 2 | Optiontype = 3|Optiontype = 8) optionLV
else if (Optiontype = 0| Optiontype = 1)nulloptionLV。
与现有技术相比,本发明的有益效果是:脚本定义以基本逻辑为根基,能够在支持绝大多数协议的解码的同时,实现优化解码和高性能解码。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书(包括摘要)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
具体实施例1
一种网络协议解码脚本的定义方法,具体方法为:以语言基本逻辑为基础,整个脚本由5个定义段组成,按顺序依次是解码字段定义段、Int运算变量定义段、文法定义段和根文法定义段;
所述解码字段定义段包括文法字段,定义了如何解码一个同名文法;定义文法为:field字段名 = 缩写,类型,解码方法;
所述文法定义段包括文法定义体,定文法为:parser 文法名 = 文法定义体;所述文法定义体由三种基本语言逻辑{序列,分支,循环}构建,支持字符串、正则表达式和括号嵌套;其中,序列逻辑的定义文法为:文法1 空格文法2;分支逻辑的定义文法为:文法1 | 文法2;循环逻辑的定义文法为:(文法 ) 循环定义体;所述循环定义体分为两种,一种是正则表达式循环定义体,另一种是运行时int变量循环定义体,{INT变量};
所述根文法定义段是整个文法解析的入口,定义文法为:root = 文法名;
所述定义段由定义语句组成,语句之间使用分号分割。
其中,文法名为文法定义名称,不能与关键字同名。关键字为有特殊含义的字符串,大小写敏感。关键字表有:{ field、structfield、groupfield、relatedfield、parser、struct、root、decodemode、mergemodedynamicmode、regex、int、string、fields、N2H、DOMAIN、MAC、IPADDR}。
具体实施例2
在具体实施例1的基础上,所述定义段还包括位于解码字段定义段和文法定义段之间的Int运算变量定义段,由int运算变量定义语句组成,定义文法为:int变量名1 = EXPR(int变量名1,int变量名2,…,int变量名N);EXPR为变量与变量,变量与常量,常量与常量的四则运算。Int运算变量定义段由int运算变量定义语句组成,所以需要进行int运算的变量才需要定义。
具体实施例3
在具体实施例1或2的基础上,所述解码字段还包括结构体字段,定义了如何解码一个结构体的一部分,定义文法为:structfield字段名 = 结构体名[偏移长度],缩写,类型,解码方法。
具体实施例4
在具体实施例1到3之一的基础上,所述解码字段还包括组字段,定义了一组字段的从属聚合关系,定义文法为:groupfield字段名 = 字段名1 ,字段名2 , …,字段名n。
具体实施例5
在具体实施例1到4之一的基础上,所述解码字段还包括关联字段,定义了字段根据其他字段的运行时解码结果选择使用某个已定义的解码字段完成解码,定义文法为:relatedfield字段名=条件表达式1 字段名1 条件表达式2 字段名2 …条件表达式N 字段名N。
具体实施例6
在具体实施例1到5之一的基础上,所述文法定义段还包括结构体,定义了一块连续的数据长度,分为一般结构体和运行时长度结构体;一般结构体的定义文法为:struct结构体名正整数;运行时长度结构体的定义文法为:struct结构体名字段名。
具体实施例7
在具体实施例1到6之一的基础上,所述文法定义段还包括关联文法,定义了一个文法根据解码字段的运行时解码结果选择使用某个已定义的文法完成解析;关联文法的定义文法为:relatedparser文法名 = 条件表达式1 文法名1 条件表达式2 文法名2 …条件表达式N 文法名N。

Claims (7)

1.一种网络协议解码脚本的定义方法,具体方法为:以语言基本逻辑为基础,整个脚本由5个定义段组成,按顺序依次是解码字段定义段、Int运算变量定义段、文法定义段和根文法定义段;
所述解码字段定义段包括文法字段,定义了如何解码一个同名文法;定义文法为:field字段名 = 缩写,类型,解码方法;
所述文法定义段包括文法定义体,定文法为:parser 文法名 = 文法定义体;所述文法定义体由三种基本语言逻辑{序列,分支,循环}构建,支持字符串、正则表达式和括号嵌套;其中,序列逻辑的定义文法为:文法1 文法2;分支逻辑的定义文法为:文法1 | 文法2;循环逻辑的定义文法为:(文法) 循环定义体;所述循环定义体分为两种,一种是正则表达式循环定义体,另一种是运行时int变量循环定义体;
所述根文法定义段是整个文法解析的入口,定义文法为:root = 文法名;
所述定义段由定义语句组成。
2.根据权利要求1所述的网络协议解码脚本的定义方法,所述定义段还包括位于解码字段定义段和文法定义段之间的Int运算变量定义段,由int运算变量定义语句组成,定义文法为:int变量名1 = EXPR(int变量名1,int变量名2,…,int变量名N);EXPR为变量与变量,变量与常量,常量与常量的四则运算。
3.根据权利要求1所述的网络协议解码脚本的定义方法,所述解码字段还包括结构体字段,定义了如何解码一个结构体的一部分,定义文法为:structfield字段名 = 结构体名[偏移长度],缩写,类型,解码方法。
4.根据权利要求1或3所述的网络协议解码脚本的定义方法,所述解码字段还包括组字段,定义了一组字段的从属聚合关系,定义文法为:groupfield字段名 = 字段名1 ,字段名2 ,…,字段名n。
5.根据权利要求1或3所述的网络协议解码脚本的定义方法,所述解码字段还包括关联字段,定义了字段根据其他字段的运行时解码结果选择使用某个已定义的解码字段完成解码,定义文法为:relatedfield字段名=条件表达式1 字段名1 条件表达式2 字段名2 …条件表达式N 字段名N。
6.根据权利要求1所述的网络协议解码脚本的定义方法,所述文法定义段还包括结构体,定义了一块连续的数据长度,分为一般结构体和运行时长度结构体;一般结构体的定义文法为:struct结构体名正整数;运行时长度结构体的定义文法为:struct结构体名字段名。
7.根据权利要求1或6所述的网络协议解码脚本的定义方法,所述文法定义段还包括关联文法,定义了一个文法根据解码字段的运行时解码结果选择使用某个已定义的文法完成解析;关联文法的定义文法为:relatedparser文法名 = 条件表达式1 文法名1 条件表达式2 文法名2 …条件表达式N 文法名N。
CN201711439006.9A 2017-12-27 2017-12-27 一种网络协议解码脚本的定义方法 Withdrawn CN108173844A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711439006.9A CN108173844A (zh) 2017-12-27 2017-12-27 一种网络协议解码脚本的定义方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711439006.9A CN108173844A (zh) 2017-12-27 2017-12-27 一种网络协议解码脚本的定义方法

Publications (1)

Publication Number Publication Date
CN108173844A true CN108173844A (zh) 2018-06-15

Family

ID=62521859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711439006.9A Withdrawn CN108173844A (zh) 2017-12-27 2017-12-27 一种网络协议解码脚本的定义方法

Country Status (1)

Country Link
CN (1) CN108173844A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111626585A (zh) * 2020-05-21 2020-09-04 广西电网有限责任公司 脚本数据提取方法、装置、计算机设备和存储介质
CN114513566A (zh) * 2022-02-17 2022-05-17 上海阅维科技股份有限公司 自定义网络协议解析方法、系统、介质及电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111626585A (zh) * 2020-05-21 2020-09-04 广西电网有限责任公司 脚本数据提取方法、装置、计算机设备和存储介质
CN111626585B (zh) * 2020-05-21 2022-11-08 广西电网有限责任公司 脚本数据提取方法、装置、计算机设备和存储介质
CN114513566A (zh) * 2022-02-17 2022-05-17 上海阅维科技股份有限公司 自定义网络协议解析方法、系统、介质及电子设备
CN114513566B (zh) * 2022-02-17 2024-06-18 上海阅维科技股份有限公司 自定义网络协议解析方法、系统、介质及电子设备

Similar Documents

Publication Publication Date Title
WO2021036174A1 (zh) 部署和执行智能合约的方法及装置
US10783082B2 (en) Deploying a smart contract
US20110219357A1 (en) Compressing source code written in a scripting language
US10063649B2 (en) Data translation using a proxy service
US6996833B1 (en) Protocol agnostic request response pattern
US7873663B2 (en) Methods and apparatus for converting a representation of XML and other markup language data to a data structure format
US8250464B2 (en) Parsing a markup language document
EP3139549B1 (en) Packet editing method and related device
WO2006102849A1 (fr) Procede et dispositif de filtrage et d’analyse de chaines de caracteres abnf
CN108173844A (zh) 一种网络协议解码脚本的定义方法
CN101794318A (zh) Url解析方法及设备
CN103577548B (zh) 近音文字匹配方法及装置
CN111813381A (zh) 跨平台生成可运行程序的方法、装置、介质和电子设备
CN103207877B (zh) 解码方法及装置
CN110264361A (zh) 一种区块链的数据解析方法及装置
CN105391514B (zh) 字符编码解码方法及装置
CN103235724A (zh) 基于原子操作语义描述的多源二进制代码一体化翻译方法
JP5166565B2 (ja) Exiエンコーダおよびプログラム
JP5670859B2 (ja) 記述方法、exiデコーダおよびプログラム
CN114327477A (zh) 智能合约执行方法、装置、电子装置和存储介质
CN109144514A (zh) Json格式数据解析存储方法及装置
US20100306741A1 (en) Method for Optimizing Processing of Character String During Execution of a Program, Computer System and Computer Program for the Same
US20150149648A1 (en) Systems and Methods for Processing SIP Message Flows
US20090055728A1 (en) Decompressing electronic documents
US8504984B1 (en) Modifying grammars to correct programming language statements

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 610000 Sichuan Chengdu China (Sichuan) Free Trade Experimental Zone Chengdu High-tech Zone Tianfu Road North 966 Building 1 Unit 14 Building 41401-41406

Applicant after: Chengdu Zhihong Haitian Technology Co., Ltd.

Address before: 610000 No. 7, 6 Building 7, Tianfu Avenue, high tech Zone, Chengdu, Sichuan, China, 8

Applicant before: Chengdu Digital Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190130

Address after: 610000 China (Sichuan) Free Trade Pilot Zone

Applicant after: Chengdu Colasoft Co., Ltd.

Address before: 610000 Sichuan Chengdu China (Sichuan) Free Trade Experimental Zone Chengdu High-tech Zone Tianfu Road North 966 Building 1 Unit 14 Building 41401-41406

Applicant before: Chengdu Zhihong Haitian Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200804

Address after: 610000 Sichuan Chengdu China (Sichuan) Free Trade Experimental Zone Chengdu High-tech Zone Tianfu Road North 966 Building 1 Unit 14 Building 41401-41406

Applicant after: Chengdu Kelai Network Technology Co., Ltd

Address before: 13 / F and 14 / F, unit 1, building 4, No. 966, north section of Tianfu Avenue, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone

Applicant before: COLASOFT Co.,Ltd.

WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20180615