.. _rules-integer-keywords:
10.8. 整型关键字¶
许多关键字会匹配网络流量中的整数值。这些是无符号整数,可以是8位、16位、32位或64位。
简单示例:
bsize:整数值;
整数值可以写成十进制形式如 100
,或十六进制形式如 0x64
。
最直接的示例是匹配相等性,但存在不同的匹配模式。
10.8.1. 比较模式¶
- 整型可以匹配以下情况:
相等
不等
大于
小于
范围
反向范围
位掩码
反向位掩码
示例:
bsize:19; # 相等
bsize:=0x13; # 相等
bsize:!0x14; # 不等
bsize:!=20; # 不等
bsize:>21; # 大于
bsize:>=21; # 大于或等于
bsize:<22; # 小于
bsize:<=22; # 小于或等于
bsize:19-22; # 值1到值2之间的范围
bsize:!19-22; # 值1到值2之间的反向范围
bsize:&0xc0=0x80; # 位掩码与值进行相等比较
bsize:&0xc0!=0; # 位掩码与值进行不等比较
10.8.2. 枚举类型¶
网络传输中的某些整数值代表枚举类型,即某些值与特定字符串/含义相关联。 规则可以使用这些字符串之一来检查相等性或不等性。这旨在使规则更具可读性且匹配效果等效。
示例:
websocket.opcode:文本;
websocket.opcode:1; # 行为相同
websocket.opcode:!ping;
websocket.opcode:!9; # 行为相同
10.8.3. 位掩码¶
网络传输中的某些整数值代表多个比特位。其中某些比特位与特定字符串/含义相关联。 规则可以使用这些字符串的逗号分隔列表来编写,其中每个条目可以被否定。
此处不应用尾随零的右移(即使 byte_test
和 byte_math
中存在此操作)。这意味着带有 websocket.flags:&0xc0=2
的规则将被拒绝为无效,因为它永远无法匹配。
示例:
websocket.flags:fin,!comp;
websocket.flags:&0xc0=0x80; # 行为相同