抓包工具Wireshark自定义协议解析lua脚本

原创 2016年06月01日 10:45:47
因为游戏中通信用的是自定义的基于tcp的协议,原始数据都是二进制的,用这个解析后更方便抓包时查看。
使用方法:
1.保存为mygame.lua并复制到 X:\Program Files (x86)\Wireshark\
2.打开 X:\Program Files (x86)\Wireshark\init.lua
在末尾添加
dofile("mygame.lua")
3.重新打开wireshark,在过滤器框输入mygame回车,即可过滤mygame协议。

-- game protocol over tcp dissector for wireshark
do
local PROTO_MYGAME = Proto("MYGAME", "MYGAME Game Over Tcp")
-- header
local f_mygame_version = ProtoField.uint8("MYGAME.Version", "Version", base.DEC)
local f_mygame_compress_flag = ProtoField.int8("MYGAME.CompressFlag", "CompressFlag", base.DEC)
local f_mygame_pkgsign = ProtoField.uint8("MYGAME.PkgSign", "PkgSign", base.DEC)
local f_mygame_length = ProtoField.uint16("MYGAME.Length", "Length", base.DEC)
-- body
local f_mygame_msgtype = ProtoField.uint16("MYGAME.MsgType", "MsgType", base.DEC, 
{
[3000] = "MSG_KICK",
[3001] = "MSG_CHAT",
[3002] = "MSG_PAY",
}
)
PROTO_MYGAME.fields = {f_mygame_version, f_mygame_compress_flag, f_mygame_pkgsign, f_mygame_length, f_mygame_msgtype}
local data_dis = Dissector.get("data")
-- MYGAME Dissector Function
local function mygame_dissector(buf, pkt, root)
local buf_len = buf:len()
if buf_len < 7 then
return false
end
pkt.cols.protocol = "MYGAME"
pkt.cols.info = "MYGAME Game Over Tcp"
local t = root:add(PROTO_MYGAME, buf(0, 7))
t:add(f_mygame_version, buf(0,1))
t:add(f_mygame_compress_flag, buf(1,1))
t:add(f_mygame_pkgsign, buf(2,1))
t:add_le(f_mygame_length, buf(3,2))
t:add_le(f_mygame_msgtype, buf(5,2))
if buf_len > 7 then
local data_len = buf:len() - 7;
local d = root:add(buf(7, data_len), "Data")
d:append_text("("..data_len.." bytes)")
d:add(buf(7, data_len), "Data:")
d:add(buf(7, 0), "[Length:"..data_len.."]")
end
return true
end
function PROTO_MYGAME.dissector(buf, pkt, root)
if mygame_dissector(buf, pkt, root) then
-- valid
else
data_dis:call(buf, pkt, root)
end
end
local tcp_encap_table = DissectorTable.get("tcp.port")
tcp_encap_table:add(9020, PROTO_MYGAME)
end

使用Lua脚本为wireshark编写自定义通信协议解析器插件

使用Lua脚本为wireshark编写自定义通信协议解析器插件
  • phunxm
  • phunxm
  • 2010年10月28日 22:31
  • 25251

在Wireshark工具中加入lua脚本

在Wireshark工具中加入lua脚本,增加该工具对某些数据报的识别,便于阅读。 参考:http://www.wireshark.org/docs/wsug_html_chunked/wsluar...

修改wireshark协议解析规则

不同的协议有不同的解码器,wireshark尝试为每个包尝试找到正确的解码器,特定的情况有可能会选择错误的解码器。 1.使用了其它协议的标准端口,被错误解码,使用udp的80端口发送数据被当作Q...

使用Lua脚本为wireshark编写自定义通信协议解析器插件

在网络通信应用中,我们往往需要自定义应用层通信协议,例如基于UDP的Real-Time Transport Protocol以及基于TCP的RTP over HTTP。鉴于RTP协议的广泛性,wire...

使用lua脚本为wireshake编写自定义协议解析器

以下内容转载自:转载地址 在网络通信应用中,我们往往需要自定义应用层通信协议,例如基于UDP的Real-Time Transport Protocol以及基于TCP的RTP over...

使用lua脚本编写wireshark协议插件

使用wireshark做协议分析,自定义协议可以编写Dissector插件进行分析,开始考虑使用c语言编写插件,了解了一下,发觉太麻烦,在效率要求不高的情况下,可以使用lua脚本编写插件: 要使...
  • zm_21
  • zm_21
  • 2013年11月29日 17:26
  • 1034

使用lua脚本编写wireshark协议插件

使用wireshark做协议分析,自定义协议可以编写Dissector插件进行分析,开始考虑使用c语言编写插件,了解了一下,发觉太麻烦,在效率要求不高的情况下,可以使用lua脚本编写插件: 要使...
  • cchao
  • cchao
  • 2012年08月03日 02:05
  • 664

wireshark抓包和lua语言,及RTMP协议解析

最开始用netmon(microsoft network monitor 3.4)分析协议,写了一个npl脚本,协议分析快完的时候才发现,原来netmon解析会有问题(似乎会丢数据),而且npl的编程...

wireshark解析自定义通信协议插件之Lua实现

wireshark解析自定义通信协议插件之Lua实现 本文介绍利用Lua脚本语言,实现wireshark解析器,解析自定义通信协议:: 解析器组成部分 TCP粘包处理 wireshark集成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:抓包工具Wireshark自定义协议解析lua脚本
举报原因:
原因补充:

(最多只允许输入30个字)