-
Notifications
You must be signed in to change notification settings - Fork 1
/
rpcinfo.nse
72 lines (59 loc) · 2.47 KB
/
rpcinfo.nse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
local rpc = require "rpc"
local shortport = require "shortport"
local stdnse = require "stdnse"
local table = require "table"
description = [[
Connects to portmapper and fetches a list of all registered programs. It then prints out a table including (for each program) the RPC program number, supported version numbers, port number and protocol, and program name.
]]
---
-- @output
-- PORT STATE SERVICE
-- 111/tcp open rpcbind
-- | rpcinfo:
-- | program version port/proto service
-- | 100000 2,3,4 111/tcp rpcbind
-- | 100000 2,3,4 111/udp rpcbind
-- | 100001 2,3,4 32774/udp rstatd
-- | 100002 2,3 32776/udp rusersd
-- | 100002 2,3 32780/tcp rusersd
-- | 100011 1 32777/udp rquotad
-- | 100021 1,2,3,4 4045/tcp nlockmgr
-- | 100021 1,2,3,4 4045/udp nlockmgr
-- | 100024 1 32771/tcp status
-- | 100024 1 32773/udp status
-- | 100068 2,3,4,5 32775/udp cmsd
-- | 100083 1 32779/tcp ttdbserverd
-- | 100133 1 32771/tcp nsm_addrand
-- | 100133 1 32773/udp nsm_addrand
-- | 100229 1,2 32775/tcp metad
-- | 100230 1 32778/tcp metamhd
-- | 100242 1 32777/tcp rpc.metamedd
-- | 100249 1 32780/udp snmpXdmid
-- | 100249 1 32781/tcp snmpXdmid
-- | 100422 1 32776/tcp mdcommd
-- | 1073741824 1 32772/tcp fmproduct
-- | 300598 1 32782/tcp dmispd
-- | 300598 1 32783/udp dmispd
-- | 805306368 1 32782/tcp dmispd
-- |_ 805306368 1 32783/udp dmispd
author = "Patrik Karlsson"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"discovery", "default", "safe"}
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)
if (#result > 0) then
table.insert(result, 1, "program version port/proto service")
end
return stdnse.format_output( true, result )
end