mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 12:41:29 +00:00
56 lines
1.5 KiB
Lua
56 lines
1.5 KiB
Lua
description = [[
|
|
Discovers Microsoft SQL servers in the same broadcast domain.
|
|
]]
|
|
|
|
--
|
|
-- Version 0.1
|
|
-- Created 07/12/2010 - v0.1 - created by Patrik Karlsson <patrik@cqure.net>
|
|
|
|
author = "Patrik Karlsson"
|
|
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
|
categories = {"broadcast"}
|
|
|
|
require 'mssql'
|
|
require 'target'
|
|
|
|
prerule = function() return true end
|
|
|
|
action = function()
|
|
|
|
local OUTPUT_TBL = {
|
|
["Server name"] = "info.servername",
|
|
["Version"] = "version.version",
|
|
["Clustered"] = "info.clustered",
|
|
["Named pipe"] = "info.pipe",
|
|
["Tcp port"] = "info.port"
|
|
}
|
|
|
|
local status, result = mssql.Helper.Discover("255.255.255.255", 1434, true)
|
|
if ( not(status) ) then return end
|
|
|
|
local results = {}
|
|
for ip, instances in pairs(result) do
|
|
local result_part = {}
|
|
if target.ALLOW_NEW_TARGETS then target.add(ip) end
|
|
for name, info in pairs(instances) do
|
|
local instance = {}
|
|
local version
|
|
status, version = mssql.Util.DecodeBrowserInfoVersion(info)
|
|
|
|
for topic, varname in pairs(OUTPUT_TBL) do
|
|
local func = loadstring( "return " .. varname )
|
|
setfenv(func, setmetatable({ info=info; version=version; }, {__index = _G}))
|
|
local result = func()
|
|
if ( result ) then
|
|
table.insert( instance, ("%s: %s"):format(topic, result) )
|
|
end
|
|
end
|
|
instance.name = version.product
|
|
table.insert( result_part, { name = "Instance: " .. info.name, instance } )
|
|
end
|
|
result_part.name = ip
|
|
table.insert( results, result_part )
|
|
end
|
|
return stdnse.format_output( true, results )
|
|
end
|