2011-08-25 51 views
1

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

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包。

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

我使用Wireshark的1.4.4与5.1.4的Lua

+0

表明您正在使用的操作系统版本。 – sylvanaar

+0

我从(http://code.google.com/p/luaforwindows/downloads/list)下载了luaforwindows。它的版本是5.1.4-45 – SwDevMan81

+0

什么版本的Windows – sylvanaar

回答

1

我收到我需要在在Wireshark的网站(answer

你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再分发到的Wireshark程序目录(或您可以从Microsoft下载的REDIST包...见票):

来源:

  • %PROGRAMFILES%\的Lua \ 5.1 \安装\支持\ 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 \安装\ SUPPORT \ Microsoft.VC80.CRT.SP1 \ MSVCR80.DLL

要:

  • %PROGRAMFILES%\ Wireshark的\微软.VC80.CRT.manifest
  • %PROGRAMFILES%\ Wireshark的\ msvcm80.dll
  • %PROGRAMFILES%\ Wireshark的\ msvcp80.dll
  • %PROGRAMFILES%\ Wireshark的\ msvcr80.dl升 2)从这张票下载LuaInterface 2.0.3 ZIP,并复制从它下面:

来源:

  • ... \ BIN \发布\ LuaInterface.dll
  • ... \ BIN \发布\ 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,打开菜单工具> Lua>评估。在出现的文本框中,输入一些sample code,然后单击评估

这将导致这样的事情:

Output http://s1.postimage.org/2nrqg8flw/Screen_Shot_2011_08_25_at_10_24_05_PM.jpg

0

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

+0

感谢您的回应。当我把它放在引号中时,看起来像是删除了转义字符。我将其更改为代码括号。我确实有反斜杠逃脱。任何其他想法还是它看起来像我的更新中的错误? – SwDevMan81