Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Wireshark外部运行Wireshark Lua解析器脚本_Lua_Wireshark - Fatal编程技术网

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

在Wireshark外部运行Wireshark Lua解析器脚本,lua,wireshark,Lua,Wireshark,我们公司对Lua解析器进行了大量投资,用于我们硬件使用的所有专有协议,我们在Wireshark中嗅到了这些协议。这使得Wireshark成为一个非常有用的工具,用于实时分析以及用户使用Wireshark录制并保存捕获以供以后分析。我们用Wireshark嗅探到的相同数据也在不涉及Wireshark的过程中被记录到二进制文件中。我的任务是创建一个过程来解析(解析)二进制日志文件并将它们输出为JSON,如果可能的话,我想利用我们现有的Lua解析器,而不是重写解析器(用任何合适的语言),这将是一项与L

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

以下是我想到的各种可能性。其中有可行的吗

  • 不知何故,我会找到Wireshark Lua文件,其中包含所有 在Wireshark中运行LUA时自动注入
  • 我将编写Lua脚本,这些脚本将由我们现有的 脚本,以重载Wireshark自动注入的逻辑。 在选项1和2中,Wireshark类都将返回 将解析的数据发送到我的程序,该程序将以JSON的形式发送数据
  • 我会从我们的 二进制日志文件到Wireshark.pcapng文件和spawn实例 在批处理过程中使用Wireshark,使用Lua文件和 将输出写入JSON或XML文件
  • 更新:在可能支持选项3的开发中,我可以运行tshark.exe(Wireshark附带的命令行实用程序)将数据包从.pcapng文件转储到标准输出。但是,只输出Wireshark中与信息列等效的内容,而不是被分解的窗格。如果我在命令行上使用以下选项指定一个Lua文件:

    -X lua_script:[my lua file]
    
    我在tshark中看到的错误与直接从Lua运行Lua脚本时看到的错误相同:

    ...dissector.lua:16: bad argument #2 to 'Proto' (Proto_new: there cannot be two protocols with the same description)
    

    我想它们都是可以吃的。如果你要求推荐,我会说你的帖子违反了指导原则,因为它们不鼓励固执己见的东西。我问自己,为什么要将该数据记录为二进制,然后使用wireshark解析器将该数据转换为json。为什么不直接记录json呢?记录格式在我参与项目之前很久就已经是一项技术决定,现在不会改变。最有可能的情况是,通过网络传输的数据是逐字节记录的,没有任何修改。