您的位置:首页 > 娱乐 > 明星 > Wireshark Lua插件入门

Wireshark Lua插件入门

2024/10/6 12:35:27 来源:https://blog.csdn.net/qq_33724710/article/details/139379433  浏览:    关键词:Wireshark Lua插件入门

摘要

        开发中经常通过抓包分析协议,对于常见的协议如 DNS wireshark 支持自动解析,便于人类的理解,对于一些私有协议,wireshark 提供了插件的方式自定义解析逻辑。

1 动手

        废话少说,直接上手。

  1. 第一步当然是装上wireshark
  2. Win+R 输入 %APPDATA%\Wireshark,在打开的文件夹中新建插件文件夹:plugins
  3. 在 plugins 下创建 xxx.lua,直接开始编辑即可
local my_proto = Proto("my_proto", "My Protocol")local p_type = ProtoField.uint8("my_proto.p_type", "Type", base.DEC);
local p_val = ProtoField.uint16("my_proto.p_val", "Val", base.HEX);
local p_byte = ProtoField.new("Bytes", "my_proto.bytes", ftypes.BYTES)
local p_str = ProtoField.new("Str", "my_proto.str", ftypes.STRING)my_proto.fields = {p_type,p_flag,p_val,p_byte,p_str
}--[[tvb: 待解析数据pinfo: 协议解析树信息,包括UI上的显示treeitem: 上一级解析树
--]]
function process(tvb, length, tree)local offset = 0tree:add(p_type, tvb:range(offset, 1))offset = offset + 1tree:add(p_val, tvb:range(offset, 2))offset = offset + 2tree:add(p_byte, tvb:range(offset, 10))offset = offset + 10tree:add(p_str, tvb:range(offset, 13))offset = offset + 13local left = length - offsettree:add(p_byte, tvb:range(offset, left))
endfunction my_proto.dissector(tvb, pinfo, treeitem)pinfo.cols.protocol:set("MY_PROTO")pinfo.cols.info:set("MY_PROTO info")local tree = treeitem:add(my_proto, tvb:range(0))process(tvb, tvb:len(), tree)
end-- 绑定UDP端口号57754, 凡是匹配的报文都会调用my_proto.dissector解析
local udp_table = DissectorTable.get("udp.port")
udp_table:add(57754, my_proto)

2 打完收工 

       Ctrl + Shift + L 刷新插件,查看解析后的报文:

3 进阶

        其它骚操作参考官方文档:Chapter 10. Lua Support in Wireshark 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com