Nmap Development mailing list archives
Re: Problem using ~/.nmap/nselib/
From: Patrick Donnelly <batrick () batbytes com>
Date: Mon, 19 Sep 2011 19:23:27 -0400
On Mon, Sep 19, 2011 at 6:37 PM, Daniel Miller <bonsaiviking () gmail com> wrote:
Hey list, I was trying to use the per-user Nmap directory ~/.nmap to test a library, and I found that, unlike with scripts, Nmap only supports one nselib directory. It will happily use ~/.nmap/nselib, or $NMAPDIR/nselib, but will complain that every other NSE library cannot be found. Here is the error as I see it:Starting Nmap 5.59BETA3 ( http://nmap.org ) at 2011-09-19 17:24 CDT Warning: File ./nselib/ exists, but Nmap is using /home/miller/.nmap/nselib/ for security and consistency reasons. set NMAPDIR=. to give priority to files in your local directory (may affect the other data files too). NSE: failed to initialize the script engine: /usr/local/bin/../share/nmap/nse_main.lua:131: module 'stdnse' not found: no field package.preload['stdnse'] no file '/home/miller/.nmap/nselib/stdnse.lua' no file './stdnse.lua' no file '/usr/local/share/lua/5.1/stdnse.lua' no file '/usr/local/share/lua/5.1/stdnse/init.lua' no file '/usr/local/lib/lua/5.1/stdnse.lua' no file '/usr/local/lib/lua/5.1/stdnse/init.lua' no file '/usr/share/lua/5.1/stdnse.lua' no file '/usr/share/lua/5.1/stdnse/init.lua' no file './stdnse.so' no file '/usr/local/lib/lua/5.1/stdnse.so' no file '/usr/lib/lua/5.1/stdnse.so' no file '/usr/local/lib/lua/5.1/loadall.so' stack traceback: [C]: in function 'require' /usr/local/bin/../share/nmap/nse_main.lua:131: in main chunk [C]: ? QUITTING!Is there a good reason for doing it this way, or should I spend the time to hunt this down and add the proper locations to the package.path? Or has someone already looked at this?
Try this patch: ---->8---- Index: nse_main.lua =================================================================== --- nse_main.lua (revision 26640) +++ nse_main.lua (working copy) @@ -118,9 +118,16 @@ local cnse, rules = ...; -- The NSE C library and Script Rules do -- Append the nselib directory to the Lua search path - local t, path = assert(cnse.fetchfile_absolute("nselib/")); - assert(t == "directory", "could not locate nselib directory!"); - package.path = path.."?.lua;"..package.path; + local function loader (lib) + local name = "nselib/"..lib..".lua"; + local type, path = cnse.fetchfile_absolute(name); + if type == "file" then + return loadfile(path); + else + return "\n\tNSE failed to find "..name.." in search paths."; + end + end + insert(package.loaders, loader); end local script_database_type, script_database_path = ----8<---- You can just modify your system nse_main.lua and put it in ~/.nmap. We should probably commit this to the /trunk though. -- - Patrick Donnelly _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://seclists.org/nmap-dev/
Current thread:
- Problem using ~/.nmap/nselib/ Daniel Miller (Sep 19)
- Re: Problem using ~/.nmap/nselib/ Patrick Donnelly (Sep 19)
- Re: Problem using ~/.nmap/nselib/ David Fifield (Sep 19)
- Re: Problem using ~/.nmap/nselib/ Patrick Donnelly (Sep 19)