1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-07 21:21:31 +00:00
Files
nmap/scripts/amqp-info.nse
dmiller 6139ed22e7 Replace host.ip, port.number with host, port
In most cases (e.g. any of the nmap.socket operations), functions can
take full host and port tables instead of just host.ip and port.number.
This makes for cleaner-looking code and easier extensibility if we
decide to check for a protocol on both TCP and UDP, for instance.
2015-02-18 14:38:42 +00:00

63 lines
1.7 KiB
Lua

local amqp = require "amqp"
local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
description = [[
Gathers information (a list of all server properties) from an AMQP (advanced message queuing protocol) server.
See http://www.rabbitmq.com/extensions.html for details on the
<code>server-properties</code> field.
]]
---
-- @usage
-- nmap --script amqp-info -p5672 <target>
---
-- @args amqp.version Can be used to specify the client version to use (currently, 0-8, 0-9 or 0-9-1)
--
-- @output
-- 5672/tcp open amqp
-- | amqp-info:
-- | capabilities:
-- | publisher_confirms: YES
-- | exchange_exchange_bindings: YES
-- | basic.nack: YES
-- | consumer_cancel_notify: YES
-- | copyright: Copyright (C) 2007-2011 VMware, Inc.
-- | information: Licensed under the MPL. See http://www.rabbitmq.com/
-- | platform: Erlang/OTP
-- | product: RabbitMQ
-- | version: 2.4.0
-- | mechanisms: PLAIN AMQPLAIN
-- |_ locales: en_US
author = "Sebastian Dragomir"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"default", "discovery", "safe", "version"}
portrule = shortport.version_port_or_service(5672, "amqp", "tcp", "open")
action = function(host, port)
local cli = amqp.AMQP:new( host, port )
local status, data = cli:connect()
if not status then return "Unable to open connection: " .. data end
status, data = cli:handshake()
if not status then return data end
cli:disconnect()
port.version.name = "amqp"
port.version.product = cli:getServerProduct()
port.version.extrainfo = cli:getProtocolVersion()
port.version.version = cli:getServerVersion()
nmap.set_port_version(host, port)
return stdnse.format_output(status, cli:getServerProperties())
end