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