如何改进创建基于Lua的Wireshark解剖器的工作流程

piy*_*iyo 11 workflow lua restart wireshark read-eval-print-loop

我终于在Lua for Wireshark为我的UDP协议创建了一个Dissector,但是工作流程非常糟糕.它包括在我的编辑器中编辑我的自定义Lua文件,然后双击我的示例捕获文件以启动Wireshark以查看更改.如果出现错误,Wireshark会通过对话框或树分析子窗格中的红线通知我.然后我重新编辑我的自定义Lua文件,然后关闭该Wireshark实例,然后再次双击我的示例捕获文件.这就像编译C文件一样只能看到一个编译器错误.

是否有更好(更快)的方式来查看我的更改,而无需一直重启Wireshark?

当时,我在启用了Lua的情况下使用Wireshark 1.2.9 for Windows.

小智 5

自动执行此操作的最佳方法是使用命令行.是的,使用tshark而不是加载gui thingy.

如果你的lua脚本被称为"proto.lua"并且它定义了一个名为"MyProto"的协议,它使用端口8888,你可以使用以下方法测试你的解剖器:

tshark -X lua_script:proto.lua -O MyProto -V -f "port 8888"
Run Code Online (Sandbox Code Playgroud)
  • -V选项使tshark打印所有协议的所有信息.
  • -O选项过滤-V选项,使其仅显示列出的(CSV)协议上的所有信息.
  • -f选项过滤所有不符合规则的数据包.在这种情况下,任何不是来自正确端口的数据包.


Joh*_*nck 1

您也许可以编写一个 Wireshark 加载的简单包装函数,并让它仅从磁盘加载真实文件(例如通过dofile())。这可能会“欺骗”Wireshark 始终重新加载您的 Lua 代码,直到您对它更加满意并可以删除此 hack。