Nmap Development mailing list archives
Re: Accessing Information Between Scripts
From: Patrick Donnelly <batrick () batbytes com>
Date: Wed, 26 Jan 2011 01:30:37 -0500
On Tue, Jan 25, 2011 at 4:16 AM, m k <mpmab1 () gmail com> wrote:
*FIRST.nse* ________________________________________________________________________________________ **-- Code not shown are things like description, categories etc portrule = shortport.port_or_service(80, "http") action = function(host, port) local status = http.get(host, port, "/").status -- Assigns the HTTP response status code sent to the server at "/" to "status" nmap.registry.status = nmap.registry.status or {} -- Assigns the status to the register table.insert(nmap.registry.status) -- Puts it in a table if status == 200 then -- Check if HTTP response status code is 200, if yes print hello world return ("Hello World"); end end ________________________________________________________________________________________ *SECOND.nse ..... *dependencies = {"FIRST.nse"} -- Include the script that contains the required information portrule = shortport.port_or_service(80, "http") action = function(host, port) if (nmap.registry.status == 200) then -- Attempt to access status code from the first script return "You Passed status from FIRST script to SECOND" end end
Ok, so first let me recommend you always run your scripts with -d (double verbosity is also really good) so you can know if there was an error either syntactically or at runtime. Right now you're blind to those problems. The general approach you are using is fine. However there are some errors. First, conventionally, you should use a special string name for your registry table. "status" is too general: nmap.registry.status = nmap.registry.status or {} -- Assigns the status to the register I'd call it something like nmap.registry.<myscripts>-status. The other problem is SECOND.nse tests that nmap.registry.status is equal to the number 200: if (nmap.registry.status == 200) then -- Attempt to access status code from the first script This condition will never be true since nmap.registry.status is a table (your SECOND.nse script will never do anything). You need to access the table values (1-N). For example, if nmap.registry.status[1] == 200 then You may want to peruse Programming in Lua [1] to get a better feel for the language. [1] http://www.lua.org/pil/ -- - 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:
- Re: Accessing Information Between Scripts, (continued)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 25)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 25)
- Re: Accessing Information Between Scripts m k (Jan 25)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 25)
- Re: Accessing Information Between Scripts Patrick Donnelly (Jan 25)
- Re: Accessing Information Between Scripts m k (Jan 25)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 26)
- Re: Accessing Information Between Scripts m k (Jan 26)
- Re: Accessing Information Between Scripts m k (Jan 27)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 27)
- Re: Accessing Information Between Scripts m k (Jan 27)
- Re: Accessing Information Between Scripts m k (Jan 25)
- Re: Accessing Information Between Scripts Toni Ruottu (Jan 25)