lua编写wireshark协议分析插件参考http://wiki.wireshark.org/Lua
Wireshark已经嵌入了对Lua的支持,采用lua脚本编写的插件运行和修改很方便。不需要重新编译,只需要将wireshark重新运行就可以了,如果对效率要求不高,那么采用lua插件是一个不错的选择。下面介绍一下lua插件运行的方法。
一、编写一个文本文件,文件名rtmp.lua,在rtmp.lua文件中写如下面内容:
-- 定义协议,可以在wireshark中使用rtmp过滤
rtmp_protocol = Proto("1rtmp","rtmp protocol","rtmp Protocol")
-- dissector函数
function rtmp_protocol.dissector(buffer,pinfo,tree)
--pinfo的成员可以参考用户手册
pinfo.cols.protocol = "rtmp"
pinfo.cols.info = "RTMP data"
remain=buffer:len()
local subtree = tree:add(rtmp_protocol,buffer(),"rtmp Protocol "..remain.." (Bytes)")
end
tcp_table = DissectorTable.get("tcp.port")
--注册到tcp的1935端口
tcp_table:add(1935,rtmp_protocol)
二、插件编写完成后保存为rtmp.lua文件,放到Wireshark的安装目录。
三、编辑wireshark安装目录里面的init.lua文件,注释掉“disable_lua = true;”这一行,然后在文件的最后添加一行dofile("rtmp.lua")。
四、重新运行wireshark,按Ctrl+Shift+R,可以看到第一行有一个1RTMP协议,把前面那个钩钩选上。(我在RTMP前面加个1,目的是让协议名排在最前面方便查找,没有别的意义^!^)
五、用一个FlashPlay连接FMS服务器,再用wireshark抓包分析看看,以前显示Data的数据部分就会显示成"rtmp Protocol XX (Bytes)"。插件运行成功,剩下的事情就是完善lua程序了。