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