Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /usr/share/nmap/scripts/ |
Upload File : |
local nmap = require "nmap" local os = require "os" local stdnse = require "stdnse" local table = require "table" description = [[ Sends a special broadcast probe to discover PC-Anywhere hosts running on a LAN. ]] --- -- @usage -- nmap --script broadcast-pc-anywhere -- -- @output -- Pre-scan script results: -- | broadcast-pc-anywhere: -- |_ 10.0.200.113 - WIN2K3SRV-1 -- -- @args broadcast-pc-anywhere.timeout specifies the amount of seconds to sniff -- the network interface. (default varies according to timing. -T3 = 5s) author = "Patrik Karlsson" license = "Same as Nmap--See https://nmap.org/book/man-legal.html" categories = { "broadcast", "safe" } local TIMEOUT = stdnse.parse_timespec(stdnse.get_script_args("broadcast-pc-anywhere.timeout")) prerule = function() return ( nmap.address_family() == "inet") end action = function() local host = { ip = "255.255.255.255" } local port = { number = 5632, protocol = "udp" } local socket = nmap.new_socket("udp") socket:set_timeout(500) for i=1,2 do local status = socket:sendto(host, port, "NQ") if ( not(status) ) then return stdnse.format_output(false, "Failed to send broadcast request") end end local timeout = TIMEOUT or ( 20 / ( nmap.timing_level() + 1 ) ) local responses = {} local stime = os.time() repeat local status, data = socket:receive() if ( status ) then local srvname = data:match("^NR([^_]*)_*AHM_3___\0$") if ( srvname ) then local status, _, _, rhost, _ = socket:get_info() if ( not(status) ) then socket:close() return false, "Failed to get socket information" end -- avoid duplicates responses[rhost] = srvname end end until( os.time() - stime > timeout ) socket:close() local result = {} for ip, name in pairs(responses) do table.insert(result, ("%s - %s"):format(ip,name)) end return stdnse.format_output(true, result) end