WireShark编程开发的基础
在Wireshark中大部分版本中都内嵌了Lua语言的解释器,在我们开始为WireShark编写扩展功能之前需要检查当前的版本是否支持Lua。检查的方法很简单,可以在启动WireShark之后,依次单击菜单栏上的“帮助”->”关于WireShark”,打开“关于WireShark”对话框。在这个对话框中显示了当前版本所支持的所有工具,如果在这个对话框中显示了“with Lua 5.x”的话,表示已经内嵌了Lua的解释环境。
WireShark中Lua的初始化
init.lua是WireShark中启动的第一个Lua脚本,它位于WireShark的“global configuration”目录中。这个目录会因为配置的不同而不同,在我使用的Windows 7操作系统中,这个文件位于C:\Program Files\Wireshark中。在init.lua中可以开启和关闭对Lua的支持,同时也为WireShark提供了安全检查。
当init.lua启动了之后,这个脚本中可以使用dofile函数来指定要执行的其它Lua脚本。这个过程是在数据包捕获之前就完成的。
在WireShark中内置了一个简单的Lua编程环境,我们只需在菜单栏上依次单击”工具”->”Lua”->”Evaluate”,这个选项可以帮助我们轻松的实现使用Lua编程和调试。
local newwindow = TextWindow.new(“hello world!”)
我们先来查看一下WireShark在解析协议时的原理。一个协议在进行解析时需要考虑两个方面,第一是这个协议所使用的端口,第二是这个协议中数据的格式。
这个表中一共分成了4个子表,我们选中其中的第3个子表“Interger Tables”。在其中我们可以看到WireShark可以解析的应用层协议对应的端口,如果这个应用层协议使用TCP协议进行传输的话,可以在“Interger Tables”中找到“TCP port”选项,这里会列出这些应用层协议所对应的端口: