mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 12:41:29 +00:00
78 lines
1.6 KiB
Lua
78 lines
1.6 KiB
Lua
description = [[
|
|
Resolves hostnames and adds every address (IPv4 or IPv6, depending on
|
|
Nmap mode) to Nmap's target list. This differs from Nmap's normal
|
|
host resolution process, which only scans the first address (A or AAAA
|
|
record) returned for each host name.
|
|
]]
|
|
|
|
---
|
|
-- @usage
|
|
-- nmap --script=resolveall --script-args=newtargets,resolveall.hosts={<host1>, ...} ...
|
|
-- @args resolveall.hosts Table of hosts to resolve
|
|
|
|
author = "Kris Katterjohn"
|
|
|
|
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
|
|
|
categories = {"safe", "discovery"}
|
|
|
|
require 'target'
|
|
|
|
prerule = function() return target.ALLOW_NEW_TARGETS end
|
|
|
|
local addtargets = function(list)
|
|
local sum = 0
|
|
|
|
for _, t in ipairs(list) do
|
|
local st, err = target.add(t)
|
|
if st then
|
|
sum = sum + 1
|
|
else
|
|
stdnse.print_debug("Couldn't add target " .. t .. ": " .. err)
|
|
end
|
|
end
|
|
|
|
return sum
|
|
end
|
|
|
|
action = function()
|
|
local hosts
|
|
|
|
for _, k in ipairs({"resolveall.hosts", "hosts"}) do
|
|
if nmap.registry.args[k] then
|
|
hosts = nmap.registry.args[k]
|
|
end
|
|
end
|
|
|
|
if not hosts then
|
|
stdnse.print_debug(3,
|
|
"Skipping '%s' %s, 'resolveall.hosts' argument is missing.",
|
|
SCRIPT_NAME, SCRIPT_TYPE)
|
|
return
|
|
end
|
|
|
|
if type(hosts) ~= "table" then
|
|
stdnse.print_debug(3,
|
|
"Skipping '%s' %s, 'resolveall.hosts' must be a table.",
|
|
SCRIPT_NAME, SCRIPT_TYPE)
|
|
return
|
|
end
|
|
|
|
local sum = 0
|
|
|
|
for _, host in ipairs(hosts) do
|
|
local status, list = nmap.resolve(host, nmap.address_family())
|
|
|
|
if status and #list > 0 then
|
|
sum = sum + addtargets(list)
|
|
end
|
|
end
|
|
|
|
if sum == 0 then
|
|
return
|
|
end
|
|
|
|
return "Successfully added " .. tostring(sum) .. " new targets"
|
|
end
|
|
|