文件 #### 文件信息通过 ``suricata.file`` 库暴露给 Lua 脚本,例如:: local filelib = require("suricata.file") 初始化 ***** 如果目的是创建日志脚本,请按以下方式初始化脚本: :: function init (args) local needs = {} needs["type"] = "file" return needs end 当前 Lua 文件库尚未实现对规则的支持。 API *** 文件对象 =========== 文件数据通过文件对象访问,使用前必须先获取该对象:: local file, err = filelib.get_file() if file == nil then print(err) end 文件方法 ============ ``file_id()`` ------------- 返回文件的 ID 编号。 示例:: local file = filelib.get_file() local id = file:file_id() print("文件 ID: " .. id) ``tx_id()`` ----------- 返回与文件关联的事务 ID。 示例:: local file = filelib.get_file() local tx_id = file:tx_id() print("事务 ID: " .. tx_id) ``name()`` ---------- 返回文件名。 示例:: local file = filelib.get_file() local name = file:name() if name ~= nil then print("文件名: " .. name) end ``size()`` ---------- 返回文件大小。 示例:: local file = filelib.get_file() local size = file:size() print("文件大小: " .. size .. " 字节") ``magic()`` ----------- 基于 libmagic 返回文件类型(如果可用)。如果 magic 不可用则返回 nil。 示例:: local file = filelib.get_file() local magic = file:magic() if magic ~= nil then print("文件类型: " .. magic) end ``md5()`` --------- 返回文件的 MD5 哈希值(如果已计算)。如果未计算 MD5 哈希则返回 nil。 示例:: local file = filelib.get_file() local md5 = file:md5() if md5 ~= nil then print("MD5: " .. md5) end ``sha1()`` ---------- 返回文件的 SHA1 哈希值(如果已计算)。如果未计算 SHA1 哈希则返回 nil。 示例:: local file = filelib.get_file() local sha1 = file:sha1() if sha1 ~= nil then print("SHA1: " .. sha1) end ``sha256()`` ------------ 返回文件的 SHA256 哈希值(如果已计算)。如果未计算 SHA256 哈希则返回 nil。 示例:: local file = filelib.get_file() local sha256 = file:sha256() if sha256 ~= nil then print("SHA256: " .. sha256) end ``get_state()`` --------------- 返回文件的当前状态。 返回值: - 状态: "CLOSED"(已关闭), "TRUNCATED"(被截断), "ERROR"(错误), "OPENED"(已打开), "NONE"(无), 或 "UNKNOWN"(未知) 示例:: local file = filelib.get_file() local state = file:get_state() if state ~= nil then print("文件状态: " .. state) end ``is_stored()`` --------------- 如果文件已存储到磁盘则返回 true,否则返回 false。 示例:: local file = filelib.get_file() local stored = file:is_stored() print("文件已存储: " .. tostring(stored))