mirror of
https://github.com/nmap/nmap.git
synced 2025-12-08 13:41:29 +00:00
48 lines
1.2 KiB
Lua
48 lines
1.2 KiB
Lua
description = [[
|
|
Connects to portmapper and fetches a list of all registered programs.
|
|
]]
|
|
|
|
---
|
|
-- @output
|
|
-- PORT STATE SERVICE
|
|
-- 111/tcp open rpcbind
|
|
-- | rpcinfo:
|
|
-- | 100000 2 111/tcp rpcbind
|
|
-- | 100000 2 111/udp rpcbind
|
|
-- | 100003 2 2049/tcp nfs
|
|
-- | 100003 2 2049/udp nfs
|
|
-- | 100005 1,2 953/udp mountd
|
|
-- | 100005 1,2 956/tcp mountd
|
|
-- | 100024 1 55145/tcp status
|
|
-- |_ 100024 1 59421/udp status
|
|
|
|
author = "Patrik Karlsson"
|
|
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
|
categories = {"discovery", "safe"}
|
|
|
|
require 'stdnse'
|
|
require 'shortport'
|
|
require 'rpc'
|
|
|
|
portrule = shortport.port_or_service(111, "rpcbind", {"tcp", "udp"} )
|
|
|
|
action = function(host, port)
|
|
|
|
local result = {}
|
|
local status, rpcinfo = rpc.Helper.RpcInfo( host, port )
|
|
|
|
if ( not(status) ) then
|
|
return stdnse.format_output(false, rpcinfo)
|
|
end
|
|
|
|
for progid, v in pairs(rpcinfo) do
|
|
for proto, v2 in pairs(v) do
|
|
table.insert( result, ("%-7d %-10s %5d/%s %s"):format(progid, stdnse.strjoin(",", v2.version), v2.port, proto, rpc.Util.ProgNumberToName(progid) or "") )
|
|
end
|
|
end
|
|
|
|
table.sort(result)
|
|
return stdnse.format_output( true, result )
|
|
|
|
end
|