【问题标题】:Testing Wireshark plugins测试 Wireshark 插件
【发布时间】:2018-03-15 10:26:23
【问题描述】:

我有一个用 Lua 编写的 Wireshark 解剖器,想单独测试它。我已经提取了一些不依赖于 Wireshark 函数的通用功能(并在我的 LuaJIT IDE 中单独测试这些功能),但现在我需要测试缓冲区检查和转换函数(buffer(1, 2):uint() 等)。有什么方法可以从我的 LuaJIT 解释器访问内置的 Lua 函数(可能在 Wireshark 测试套件中),或者(或者)我可以以编程方式在某些 PCAP 文件上重新运行脚本(使用 tshark)并以编程方式将测试结果打印到标准输出或文件?对我来说,另一个用例是手动指定数据包并在其上测试我的解析器功能(即将数据包作为代码,而不必生成包含要测试的数据包的 PCAP 文件)。

其他人如何测试他们的 Wireshark 解剖器?

【问题讨论】:

    标签: lua wireshark


    【解决方案1】:

    我一直在开发一个 Lua 调试器,它可以“实时”调试在 Wireshark 中运行的 Lua 代码(包括解析器)。我没有使用最新版本的 Wireshark 进行测试,但不明白为什么它不能继续工作。您可以在此处查看如何完成此操作的示例:http://notebook.kulchenko.com/zerobrane/debugging-wireshark-lua-scripts-with-zerobrane-studio

    我认为没有办法直接在 PCAP 文件上重新运行脚本,但您可以使用 traffic generators 之一从捕获文件“重播”流量(例如,bit-twist ) 并以通常的方式调试您的脚本。

    【讨论】:

      【解决方案2】:

      如果您的意思是调试测试,Paul 的 ZeroBrane Studio 是我所知道的唯一一个可以轻松使用 Wireshark 的工作室。

      如果您的意思是自动化测试(即,它可以重复用于回归等),那么我们在 Wireshark 本身中测试它们的方法是使用带有“-X lua_script:<script>”的 tshark 通过 shell 脚本运行它们选项,在详细模式下输出到文本文件,然后验证输出文件是否符合我们的预期。 (例如通过使用另一个检查输出文本文件的 Lua 脚本)

      如果您克隆 repo 或 browse it online,您可以在 test/suite-wslua.sh 文件中看到它,这是 Lua API 测试套件 shell 脚本。而被测试的Lua脚本在test/lua目录下。

      【讨论】:

        【解决方案3】:

        这个问题已经很老了,但我想我有一些相关的东西可以分享。 我一直在开发 Wirebait,这是一个专门设计用于在编写 Wireshark 解析器时运行它们的工具。

        您所要做的就是加载模块并在解析器脚本的顶部添加一个五行 sn-p。然后,如果您使用像 Paul Kulchenko 的 ZeroBrane Studio 这样的 IDE,Wirebait 允许您即时编写和调试代码,而无需使用 Wireshark。如果您没有 pcap 文件,您甚至可以侥幸逃脱。 它仍然是新的,但我能够非常可靠地将它与 UDP 解析器一起使用。

        【讨论】:

        • 我觉得 Wirebait 和 ZeroBrane Studio 应该被提及并链接到 Wireshark 的 Lua wiki 页面的某个地方:wiki.wireshark.org/Lua
        • 我不能说我没有偏见,但我认为这是有道理的。我花了很长时间编写解剖器,ZeroBrane 工作室已经改变了游戏规则。我希望在 Wireshark 解剖器的利基市场中,Wirebait 可以变得同样有用。
        • 好的,我已经在wiki.wireshark.org/Lua 页面上添加了指向 ZeroBrane Studo 和 WireBait 的链接。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2019-05-11
        • 1970-01-01
        • 1970-01-01
        • 2015-08-14
        • 2015-07-08
        • 1970-01-01
        相关资源
        最近更新 更多