From 0d47952611198ef6b1163f366dc03922d20b1475 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 09:42:04 +0200 Subject: Adding upstream version 7.94+git20230807.3be01efb1+dfsg. Signed-off-by: Daniel Baumann --- scripts/upnp-info.nse | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 scripts/upnp-info.nse (limited to 'scripts/upnp-info.nse') diff --git a/scripts/upnp-info.nse b/scripts/upnp-info.nse new file mode 100644 index 0000000..92efaad --- /dev/null +++ b/scripts/upnp-info.nse @@ -0,0 +1,55 @@ +local nmap = require "nmap" +local shortport = require "shortport" +local stdnse = require "stdnse" +local string = require "string" +local upnp = require "upnp" + +description = [[ +Attempts to extract system information from the UPnP service. +]] + +--- +-- @usage +-- nmap -sU -p 1900 --script=upnp-info +-- @output +-- | upnp-info: System/1.0 UPnP/1.0 IGD/1.0 +-- |_ Location: http://192.168.1.1:80/UPnP/IGD.xml +-- +-- @args upnp-info.override Controls whether we override the IP address information +-- returned by the UPNP service for the location of the XML +-- file that describes the device. Defaults to true for +-- unicast hosts. + +-- 2010-10-05 - add prerule support +-- 2010-10-10 - add newtarget support +-- 2010-10-29 - factored out all of the code to upnp.lua + +author = "Thomas Buchanan" + +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" + +categories = {"default", "discovery", "safe"} + + +--- +-- Runs on UDP port 1900 +portrule = shortport.portnumber(1900, "udp", {"open", "open|filtered"}) + +--- +-- Sends UPnP discovery packet to host, +-- and extracts service information from results +action = function(host, port) + local override = stdnse.get_script_args("upnp-info.override") + local helper = upnp.Helper:new( host, port ) + if ( override ~= nil ) and ( string.lower(override) == "false" ) then + helper:setOverride( false ) + else + helper:setOverride( true ) + end + local status, result = helper:queryServices() + + if ( status ) then + nmap.set_port_state(host, port, "open") + return stdnse.format_output(true, result) + end +end -- cgit v1.2.3