1

我正在尝试设置Wireshark,以便我可以使用LuaInterface来使用 .NET 框架中的一些类。我可以通过 Lua 命令行运行它,但是当我尝试require "CLRPackage"init.lua启动脚本中运行时,它似乎找不到所需的文件。启动 Wireshark 时出现以下异常:

Lua: Error during loading:
 C:\Program Files\Wireshark\luascript.lua:25: module 'CLRPackage' not found:
    no field package.preload['CLRPackage']
    no file '.\CLRPackage.lua'
    no file 'C:\Program Files\Wireshark\lua\CLRPackage.lua'
    no file 'C:\Program Files\Wireshark\lua\CLRPackage\init.lua'
    no file 'C:\Program Files\Wireshark\CLRPackage.lua'
    no file 'C:\Program Files\Wireshark\CLRPackage\init.lua'
    no file 'C:\Program Files\Lua\5.1\lua\CLRPackage.luac'
    no file '.\CLRPackage.dll'
    no file '.\CLRPackage51.dll'
    no file 'C:\Program Files\Wireshark\CLRPackage.dll'
    no file 'C:\Program Files\Wireshark\CLRPackage51.dll'
    no file 'C:\Program Files\Wireshark\clibs\CLRPackage.dll'
    no file 'C:\Program Files\Wireshark\clibs\CLRPackage51.dll'
    no file 'C:\Program Files\Wireshark\loadall.dll'
    no file 'C:\Program Files\Wireshark\clibs\loadall.dll'

我尝试设置package.pathandpackage.cpath以匹配在命令行中设置的内容,但这似乎没有帮助。

package.path = ";.\\?.lua;C:\\Program Files\\Lua\\5.1\\lua\\?.lua;C:\\Program Files\\Lua\\5.1\\lua\\?\\init.lua;C:\\Program Files\\Lua\\5.1\\?.lua;C:\\Program Files\\Lua\\5.1\\?\\init.lua;C:\\Program Files\\Lua\\5.1\\lua\\?.luac;C:\\Program Files\\Lua\\5.1\\lua\\?lua"

package.cpath = package.cpath .. ".\\?.dll;.\\?51.dll;C:\\Program Files\\Lua\\5.1\\?.dll;C:\\Program Files\\Lua\\5.1\\?51.dll;C:\\Program Files\\Lua\\5.1\\clibs\\?.dll;C:\\Program Files\\Lua\\5.1\\clibs\\?51.dll;C:\\Program Files\\Lua\\5.1\\loadall.dll;C:\\Program Files\\Lua\\5.1\\clibs\\loadall.dll;C:\\Program Files\\Lua\\5.1\\clibs\\luanet.dll"

当我这样做时,我收到以下错误:

Lua: Error during loading:
   error loading module 'luanet' from file 
   'C:\Program Files\Lua\5.1\clibs\luanet.dll':
   The spcecified module could not be found.

这是一个奇怪的错误,因为该文件确实存在。

我已经在C:\Program Files\Lua\5.1.

有没有人能够得到这个工作?任何帮助,将不胜感激。

我正在使用 Wireshark 1.4.4 和 Lua 5.1.4

4

2 回答 2

1

我在 Wireshark 网站上收到了我需要的帮助(答案

你的 Wireshark 很旧。当前的稳定版本是Wireshark 1.6.1

Wireshark 已经包含 Lua。你不需要安装你自己的 Lua 副本,因为 Wireshark 带有它自己的 Lua 解释器(并且只会使用它自己的)。但是,您的 Wireshark Lua 脚本仍然可以调用 LuaForWindows 安装的库。

LuaInterface 1.5.3 可能不兼容。LuaForWindows v5.1.4-45 附带 LuaInterface 1.5.3,它可能与您的 Wireshark 安装不兼容(加载 luanet.dll 时出现运行时错误R6034)。在 Windows 7 上使用 Wireshark 1.6.1 对我来说确实如此。您可以从此票证中获得 LuaInterface 2.0.3 的兼容二进制文件。

指示

1) 将 LuaForWindows 中的 VS2005 SP1 Redistributables 复制到 Wireshark 的程序目录中(或者您可以从 Microsoft 下载 redist 包...见票证):

从:

  • %PROGRAMFILES%\Lua\5.1\install\support\Microsoft.VC80.CRT.SP1\Microsoft.VC80.CRT.manifest
  • %PROGRAMFILES%\Lua\5.1\install\support\Microsoft.VC80.CRT.SP1\msvcm80.dll
  • %PROGRAMFILES%\Lua\5.1\install\support\Microsoft.VC80.CRT.SP1\msvcp80.dll
  • %PROGRAMFILES%\Lua\5.1\install\support\Microsoft.VC80.CRT.SP1\msvcr80.dll

到:

  • %PROGRAMFILES%\Wireshark\Microsoft.VC80.CRT.manifest
  • %PROGRAMFILES%\Wireshark\msvcm80.dll
  • %PROGRAMFILES%\Wireshark\msvcp80.dll
  • %PROGRAMFILES%\Wireshark\msvcr80.dll 2) 从此票证下载 LuaInterface 2.0.3 ZIP,并从中复制以下内容:

从:

  • ...\bin\Release\LuaInterface.dll
  • ...\bin\Release\luanet.dll

到:

  • %PROGRAMFILES%\Wireshark\clibs\LuaInterface.dll
  • %PROGRAMFILES%\Wireshark\clibs\luanet.dll

从:

  • ...\LuaInterface\lua\CLRForm.lua
  • ...\LuaInterface\lua\CLRPackage.lua

到:

  • %PROGRAMFILES%\Wireshark\lua\CLRForm.lua
  • %PROGRAMFILES%\Wireshark\lua\CLRPackage.lua

3) 重新启动 Wireshark/TShark 如果已经运行。

4)可选:从 Wireshark,打开菜单Tools > Lua > Evaluate。在出现的文本框中,输入一些示例代码,然后单击评估

这应该会导致这样的结果:

输出

于 2011-08-26T21:05:17.367 回答
0

使用“...”字符串时需要转义反斜杠。如果您使用 [[...]] 字符串,您可以避免转义。

于 2011-08-25T17:27:23.077 回答