Overview
Attempts to use the Service Location Protocol to discover Novell NetWare Core Protocol (NCP) servers.
Attempts to use the Service Location Protocol to discover Novell NetWare Core Protocol (NCP) servers.
Ports
Any
Protocols
n/a
Attribution
Nmap Project
Copy the command and adjust the target or script arguments as needed.
nmap -sV --script=broadcast-novell-locate <target> The full script source is stored with this entry and is hidden by default to keep the page easier to scan.
local ipOps = require "ipOps"
local srvloc = require "srvloc"
local stdnse = require "stdnse"
local stringaux = require "stringaux"
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 https://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 = stringaux.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 ip = ipOps.str_to_ip(stdnse.fromhex(addr))
if ( not(ips[ip]) ) then
table.insert(addrs, ip)
ips[ip] = ip
end
end
end
local output = {}
local status, treename = helper:ServiceRequest("ndap.novell", "DEFAULT")
if ( status ) then
treename = treename[1]
treename = treename:match("%/%/%/(.*)%.$")
table.insert(output, ("Tree name: %s"):format(treename))
end
table.insert(output, ("Server name: %s"):format(srvname))
table.insert(output, addrs)
return stdnse.format_output(true, output)
end
Attempts to use the Service Location Protocol to discover Novell NetWare Core Protocol (NCP) servers.