local bin = require "bin" local ipOps = require "ipOps" local srvloc = require "srvloc" local stdnse = require "stdnse" local table = require "table" description = [[ Attempts to use the Service Location Protocol to discover Novell NetWare Core Protocol (NCP) servers. ]] --- -- --@output -- Pre-scan script results: -- | broadcast-novell-locate: -- | Tree name: CQURE-LABTREE -- | Server name: linux-l84t -- | Addresses -- |_ 192.168.56.33 -- -- -- Version 0.1 -- Created 04/26/2011 - v0.1 - created by Patrik Karlsson author = "Patrik Karlsson" license = "Same as Nmap--See http://nmap.org/book/man-legal.html" categories = {"broadcast", "safe"} prerule = function() return true end function action() local helper = srvloc.Helper:new() local status, bindery = helper:ServiceRequest("bindery.novell", "DEFAULT") if ( not(status) or not(bindery) ) then helper:close() return end bindery = bindery[1] local srvname = bindery:match("%/%/%/(.*)$") local status, attrib = helper:AttributeRequest(bindery, "DEFAULT", "svcaddr-ws") helper:close() attrib = attrib:match("^%(svcaddr%-ws=(.*)%)$") if ( not(attrib) ) then return end local attribs = stdnse.strsplit(",", attrib) if ( not(attribs) ) then return end local addrs = { name = "Addresses"} local ips = {} for _, attr in ipairs(attribs) do local addr = attr:match("^%d*%-%d*%-%d*%-(........)") if ( addr ) then local pos, dw_addr = bin.unpack( "