Lua 解析函数定义

这段代码是 Lua 解析脚本的一部分。请解释一下这段代码的含义,特别是函数

add_lele_uint。谢谢

    -- 函数:上传函数请求
function upload_function_req(buffer, subtree)

  subtree:add_le(buffer(14,2), "func_id:", buffer(14,2):le_uint())
  subtree:add_le(buffer(16,4), "fixed_values:", buffer(16,4):le_uint())
  subtree:add_le(buffer(20,2), "offset:", buffer(20,2):le_uint())
end
点赞
用户2755698
用户2755698

该函数向协议树添加了3个字段。buffer(n,m)是一个tvbrange,其中n表示偏移量,m表示长度。所有3个字段都是小端无符号整数。第1个和第3个字段是2字节整数;第2个是4字节整数。然而,该函数做了一些不必要的工作,可以简化为如下所示:

function upload_function_req(buffer, subtree)
  
  subtree:add_le(buffer(14,2), "func_id:")
  subtree:add_le(buffer(16,4), "fixed_values:")
  subtree:add_le(buffer(20,2), "offset:")
end

如果要了解Wireshark中的Lua API,请查看[Wireshark开发人员指南] (https://www.wireshark.org/docs/wsdg_html_chunked/)。在[第11章。Wireshark的Lua API参考手册] (https://www.wireshark.org/docs/wsdg_html_chunked/wsluarm_modules.html)下,您会找到相关的子章节。

特别是:

2020-03-27 20:25:11
用户13133997
用户13133997

add_leadd 是相同的函数,但是 "le" 表示 "小尾端",因为网络协议通常使用大尾端,所以在需要小尾端的地方可以使用 "le"。同样,int a le_uint(从缓冲区中提取字节并根据大端或小端组合成整数)也是如此。

2021-12-17 11:15:09