20.3.2. 字节变量¶
suricata.bytevar
模块提供了对 Suricata 规则中由 byte_extract
和 byte_math
关键字定义的变量的访问。
该模块仅在 Suricata Lua 规则中可用,不适用于输出脚本。
20.3.2.1. 设置¶
local bytevars = require("suricata.bytevar")
20.3.2.2. 模块函数¶
- bytevars.map(sig, varname)¶
确保
bytevar
存在,并通过将其映射到 Lua 上下文中来设置在脚本中的进一步使用。必须在init()
期间调用。- Parameters:
sig -- 传递给
init()
的签名对象varname (string) -- 规则中定义的变量名称
- Raises:
error -- 如果变量名称未知
error -- 如果映射的字节变量过多
示例:
function init(sig) bytevars.map(sig, "var1") bytevars.map(sig, "var2") return {} end
- bytevars.get(name)¶
返回给定名称的字节变量对象。可在
thread_init()
期间调用以保存字节变量的句柄。- Parameters:
name (number) -- 之前通过
map()
设置的变量名称。- Raises:
error -- 如果变量名称未通过
map()
映射。- Returns:
一个字节变量对象
示例:
function thread_init() bv_var1 = bytevars.get("var1") bv_var2 = bytevars.get("var2") end
20.3.2.3. 字节变量对象方法¶
- bytevar:value()
返回字节变量的当前值。
- Returns:
字节变量的值。
示例:
function match(args) local var1 = bv_var1:value() if var1 then -- 使用该值 end end