HEX
Server: Apache/2
System: Linux ctr1224126.novalocal 4.9.241-37.el7.x86_64 #1 SMP Mon Nov 2 13:55:04 UTC 2020 x86_64
User: gokitchen (1017)
PHP: 8.0.30
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/share/nmap/scripts/smbv2-enabled.nse
local nmap = require "nmap"
local smb = require "smb"
local string = require "string"

description = [[
Checks whether or not a server is running the SMBv2 protocol. 
]]
---
--@usage
-- nmap --script smbv2-enabled.nse -p445 <host>
-- sudo nmap -sU -sS --script smbv2-enabled.nse -p U:137,T:139 <host>
--
--@output
-- Host script results:
-- |_ smb-v2-enabled: Server supports SMBv2 protocol
--
-- Host script results:
-- |_ smb-v2-enabled: Server doesn't support SMBv2 protocol

author = "Ron Bowes"
copyright = "Ron Bowes"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"default", "safe"}


hostrule = function(host)
	return smb.get_port(host) ~= nil
end

local function go(host)
	local status, smbstate, result
	local dialects = { "NT LM 0.12", "SMB 2.002", "SMB 2.???" }
	local overrides = {dialects=dialects}

	status, smbstate = smb.start(host)
	if(not(status)) then
		return false, "Couldn't start SMB session: " .. smbstate
	end

	status, result = smb.negotiate_protocol(smbstate, overrides)
	if(not(status)) then
		if(string.find(result, "SMBv2")) then
			return true, "Server supports SMBv2 protocol"
		end
		return false, "Couldn't negotiate protocol: " .. result
	end

	return true, "Server doesn't support SMBv2 protocol"
end

action = function(host)
	local status, result = go(host)

	if(not(status)) then
		if(nmap.debugging() > 0) then
			return "ERROR: " .. result
		else
			return nil
		end
	end

	return result
end