BNF范式 如何用C++实现自动推导

本文介绍了如何使用C++语言来实现BNF(巴科斯范式)定义的攻击检测规则,包括ATTACK结构、签名定义、匹配条件等。涉及TCP/IP协议,涵盖IP地址、端口、协议类型以及各种选项标志。同时,文章还讨论了匹配字符串、信心度和严重性等关键要素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BNF范式

ATTACK::= ATTACK_NAME { SIGNATURES 

MATCH

                                DESCRIPTION }

ATTACK_NAME::= <字符串>

SIGNATURES::= SIGNATURE  SIGNATURES | ε

SIGNATURE::= IP_SIGNATURE | DIR | GET_SIGNATURE |

OPT_SIGATURE | EXP_SIGNATURE | PROTO | ε

PROTO::= tcp | ip | icmp | udp

IP_SIGNATURE::= (sip | dip) IP_ADDR [/ MASK]

IP_ADDR::= <整数>.<整数>.<整数>.<整数> // 大于0小于255的自然数

MASK::= <整数>                          // 大于1小于32的自然数

OPT_SIGATURE::= opt: OPTS

OPTS::= (OPT | !OPT) OPTS

OPT::= cwr | ecn | urg | ack | push | reset | syn | fin |ε

DIR::= s2d | d2s

EXP_SIGNATURE::= EXP_NAME : EXPS

EXP_NAME::= sport | dport | udplen | tcplen | iplen |

tcpsequence |ε

      EXPS::= EXP EXPS | Z

    EXP::= <整数> : <整数>

    EXP::= EXP (or | and) EXP

    EXP::= !EXP

    GET_SIGNATURE::= MatchGet

    MATCH::= SUBSTR  MATCH | Z

SUBSTR::= substr (匹配字符串匹配起始点匹配结束点匹配模式 

匹配模式::= nocase | anamorphosis

DESCRIPTION::= ALARM CONFIDENCE SEVERITY CVE

ALARM::= @alarm=攻击代号攻击类型

CONFIDENCE::=   !Confidence= <整数>

SEVERITY::= !Severity= <整数>

CVE::= <字符串>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值