如何设置Wireshark以运行Lua的CLRPackage?

我正在尝试设置Wireshark,以便我可以使用LuaInterface来使用.NET框架中的某些类。我能够通过Lua命令行运行它,但是当我尝试在init.lua启动脚本中require "CLRPackage"时,它似乎找不到所需的文件。启动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.pathpackage.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中安装了Windows版的Lua包。

有人能够让它工作吗?任何帮助将不胜感激。

我正在使用带有Lua 5.1.4的Wireshark 1.4.4。

原文链接 https://stackoverflow.com/questions/7191705

点赞
stackoverflow用户107090
stackoverflow用户107090

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

2011-08-25 17:27:23
stackoverflow用户95573
stackoverflow用户95573

我在 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 时是真实的。你可以从这个 ticket 中获得兼容的 LuaInterface 2.0.3 二进制文件。

指令

1)将 LuaForWindows 的 VS2005 SP1 Redistributables 复制到 Wireshark 的程序目录中(或者你可以从 Microsoft 下载 redist 包…请参见 ticket):

来自:

  • %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)从此 ticket 下载 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。在出现的文本框中,输入一些 样本代码,然后单击 Evaluate。这应该会得到类似于下面的输出:

输出

2011-08-26 21:05:17