diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
commit | 0d47952611198ef6b1163f366dc03922d20b1475 (patch) | |
tree | 3d840a3b8c0daef0754707bfb9f5e873b6b1ac13 /scripts/stun-info.nse | |
parent | Initial commit. (diff) | |
download | nmap-0d47952611198ef6b1163f366dc03922d20b1475.tar.xz nmap-0d47952611198ef6b1163f366dc03922d20b1475.zip |
Adding upstream version 7.94+git20230807.3be01efb1+dfsg.upstream/7.94+git20230807.3be01efb1+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'scripts/stun-info.nse')
-rw-r--r-- | scripts/stun-info.nse | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/stun-info.nse b/scripts/stun-info.nse new file mode 100644 index 0000000..37438ef --- /dev/null +++ b/scripts/stun-info.nse @@ -0,0 +1,49 @@ +local nmap = require "nmap" +local shortport = require "shortport" +local stun = require "stun" +local stdnse = require "stdnse" + +description = [[ +Retrieves the external IP address of a NAT:ed host using the STUN protocol. +]] + +--- +-- @usage +-- nmap -sV -PN -sU -p 3478 --script stun-info <ip> +-- +-- @output +-- PORT STATE SERVICE +-- 3478/udp open|filtered stun +-- | stun-info: +-- |_ External IP: 80.216.42.106 +-- + +author = "Patrik Karlsson" +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" +categories = {"discovery", "safe"} + + +portrule = shortport.port_or_service(3478, "stun", "udp") + +local function fail(err) return stdnse.format_output(false, err) end + +action = function(host, port) + local helper = stun.Helper:new(host, port) + local status = helper:connect() + if ( not(status) ) then + return fail("Failed to connect to server") + end + + local status, result = helper:getExternalAddress() + if ( not(status) ) then + return fail("Failed to retrieve external IP") + end + + port.version.name = "stun" + nmap.set_port_state(host, port, "open") + nmap.set_port_version(host, port) + + if ( result ) then + return "\n External IP: " .. result + end +end |