Files
FireDog/temp/demo/using-gui-open-demo.txt
T
mountcloud 3dbac60203 1:重构规则引擎,支持多种逻辑运算,支持多种统计运算,支持多种比较运算。
2:重构特征库格式,从json改用yaml(json确实看起来不好看)。
3:更改特征匹配逻辑,将字节匹配与校验匹配结果拆分。
4:编辑器适配新的规则引擎和特征库格式。
2022-06-30 01:48:43 +08:00

58 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1:请使用gui打开/demo/demo.fdog来参考
!!!修改完规则记得点击 添加或修改。修改完规则库记得点击顶部菜单->操作->保存或者另存为!!!
2:特征讲解
key:代表这个特征的标识。
hex:hex是以二进制形式进行匹配的二进制数据,允许模糊匹配如:0F ?0 A? ??。
text:以文本形式匹配的关键字。
3:规则
$and:[规则数组] 并运算,只有子规则结果全部为true(通过)时,结果为true(通过),如果有一条子规则结果为false(不通过),则结果为false(不通过)。
$or:[规则数组] 或运算,有一条子规则结果全部为true(通过)时,结果为true(通过),如果全部子规则结果为false(不通过),则结果为false(不通过)。
$not:[规则数组] 非运算,只有子规则结果全部为false(不通过)时,结果为true(通过),如果有一条子规则结果为true(通过),则结果为false(不通过)。意思就是如果$not的子规则是$lt($count(key1),$int(5))=$not(key1出现次数小于5)=不能(key1出现的次数小于5)=key1出现的次数需要大于5
$all:[字符串数组] 表示一组key必须至少全部出现1次。$all(key1,key2)表示key1和key2必须至少都出现一次。
$count:*数字规则*[字符串数组] 表示统计key出现的次数。$count(key1,key2)就是统计key1和key2出现的次数。
$int:*数字规则*[数字类型] 表示一个数字。$int(1)代表数字1
$lt:*比较规则*,小于比较,使用两个*数字规则*进行比较,数字规则1 < 数字规则2,则为true(通过)。
$le:*比较规则*,小于等于比较,使用两个*数字规则*进行比较,数字规则1 <= 数字规则2,则为true(通过)。
$gt:*比较规则*,大于比较,使用两个*数字规则*进行比较,数字规则1 > 数字规则2,则为true(通过)。
$ge:*比较规则*,大于等于比较,使用两个*数字规则*进行比较,数字规则1 >= 数字规则2,则为true(通过)。
4:demo中的规则描述(请勿复制描述的规则,因为引擎不识别注释):
规则库格式是yaml,yaml语法可以自学一下。
规则建议还是别手写,用gui配置减少错误率,而且gui用起来多爽。
特征库讲解:
version: 1.2.1 //当前规则引擎版本号
items: //规则集合
- name: test //单条规则名称
author: mountcloud //作者
describe: test new rule engine. //规则描述
features: //特征集合
- key: key1 //特征的key
text: a //text代表文本类型,hex代表二进制类型
- key: key2
text: b
- key: key3
text: c
- key: key4
text: d
- key: key5
hex: 0F ?0 A? ?? //二进制类型允许使用模糊匹配
rules: //规则
- $and: //(规则是第1层)规则是And类型
- $all: //($and的子规则)All是以下key至少全部都出现一次
- key1
- key2
- $and: //(第一层$and的子规则)
- $all: //(第二层$and的子规则)
- key3
- $all:
- key4
- $ge: //(第一层$and的子规则)$ge是大于比较,比较第一个规则要大于第二个规则
- $count: ($ge的子规则)$count是统计key出现的总数
- key1
- $int: 3 ($ge的子规则)$int代表一个固定数字,这里就是 key1出现的次数要大于3