在Wireshark之外运行Lua解析器脚本

我们公司的硬件使用专有协议,我们对其进行嗅探,使用Lua解析器进行解析,这个投资很大。这使得Wireshark成为了现场分析和用户使用Wireshark录制和保存的数据进行分析的非常有用的工具。我们在Wireshark中嗅探的相同数据也会被记录到二进制文件中,这个过程不涉及Wireshark。我的任务是创建一个解析二进制日志文件并将其输出为JSON的过程,并且如果可能,我想利用我们现有的Lua解析器而不是重写解析器(以任何适当的语言),因为与Lua脚本并行创建和维护这些解析器将是一项很大的工作。但是,我认为Lua Wireshark解析器不能在Wireshark之外运行,因为它们对所有Wireshark原型(如Proto和Protofield等)都有依赖,这些都是由Wireshark在运行时注入的。

这里有我想到的可能性。有哪些是可行的?

  1. 我会找到带有所有逻辑的Wireshark Lua文件,这些文件在运行时自动注入。
  2. 我会编写Lua脚本,我们的现有脚本会引用它们,以重载Wireshark自动注入的逻辑。在选项1和选项2中,Wireshark类将返回解析的数据给我的程序,我的程序将将其输出为JSON。
  3. 我将编写一个将我们的二进制日志文件转换为Wireshark .pcapng文件,并以批处理过程的方式生成Wireshark实例以使用Lua文件消费和解析.pcapng文件并将输出写入JSON或XML文件的转换器。

更新:在与选项#3有关的开发中,我可以运行tshark.exe(使用Wireshark提供的命令行实用程序)将数据包从.pcapng文件中转储到标准输出。但只输出与Wireshark中的Information列相当的内容,而不是已解析的面板。如果我在命令行中使用我们的Lua文件之一指定选项:

-X lua_script:[my lua file]

我会看到类似于在从Lua直接运行Lua脚本时看到的那些错误:

...解剖器.lua:16:对“Proto”的第二个参数(Proto_new:不能有两个描述相同的协议)有错误的参数#2
点赞