diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
commit | 0d47952611198ef6b1163f366dc03922d20b1475 (patch) | |
tree | 3d840a3b8c0daef0754707bfb9f5e873b6b1ac13 /scripts/ndmp-version.nse | |
parent | Initial commit. (diff) | |
download | nmap-upstream.tar.xz nmap-upstream.zip |
Adding upstream version 7.94+git20230807.3be01efb1+dfsg.upstream/7.94+git20230807.3be01efb1+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | scripts/ndmp-version.nse | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/scripts/ndmp-version.nse b/scripts/ndmp-version.nse new file mode 100644 index 0000000..3384326 --- /dev/null +++ b/scripts/ndmp-version.nse @@ -0,0 +1,71 @@ +local ndmp = require "ndmp" +local nmap = require "nmap" +local shortport = require "shortport" +local stdnse = require "stdnse" + +description = [[ +Retrieves version information from the remote Network Data Management Protocol +(ndmp) service. NDMP is a protocol intended to transport data between a NAS +device and the backup device, removing the need for the data to pass through +the backup server. The following products are known to support the protocol: +* Amanda +* Bacula +* CA Arcserve +* CommVault Simpana +* EMC Networker +* Hitachi Data Systems +* IBM Tivoli +* Quest Software Netvault Backup +* Symantec Netbackup +* Symantec Backup Exec +]] + +author = "Patrik Karlsson" +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" +categories = {"version"} + + +portrule = shortport.version_port_or_service(10000, "ndmp", "tcp") + +local function fail(err) return stdnse.format_output(false, err) end + +local function vendorLookup(vendor) + if ( vendor:match("VERITAS") ) then + return "Symantec/Veritas Backup Exec ndmp" + else + return vendor + end +end + +action = function(host, port) + local helper = ndmp.Helper:new(host, port) + local status, err = helper:connect() + if ( not(status) ) then return fail("Failed to connect to server") end + + local hi, si + status, hi = helper:getHostInfo() + if ( not(status) ) then return fail("Failed to get host information from server") end + + status, si = helper:getServerInfo() + if ( not(status) ) then return fail("Failed to get server information from server") end + helper:close() + + port.version.name = "ndmp" + port.version.product = vendorLookup(si.serverinfo.vendor) + + -- hostinfo can be nil if we get an auth error + if ( hi.hostinfo ) then + if ( hi.hostinfo.hostname ) then + port.version.extrainfo = ("Name: %s; "):format(hi.hostinfo.hostname) + end + + local major, minor, build, smajor, sminor = hi.hostinfo.osver:match("Major Version=(%d+) Minor Version=(%d+) Build Number=(%d+) ServicePack Major=(%d+) ServicePack Minor=(%d+)") + if ( major and minor and build and smajor and sminor ) then + port.version.extrainfo = port.version.extrainfo .. ("OS ver: %d.%d; OS Build: %d; OS Service Pack: %d"):format(major, minor, build, smajor) + end + + port.version.ostype = hi.hostinfo.ostype + end + + nmap.set_port_version(host, port) +end |