1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 12:41:29 +00:00

New utility function: get_script_interfaces()

This commit is contained in:
dmiller
2024-05-24 19:01:14 +00:00
parent 7e9aec6ce6
commit 4ee4d9ea27

View File

@@ -661,6 +661,46 @@ function get_script_args (...)
return unpack(args, 1, select("#", ...)) return unpack(args, 1, select("#", ...))
end end
local function identity(...)
return ...
end
---Get the interfaces that are appropriate for a script to use.
--
-- This function returns interface information in the same format as
-- <code>nmap.list_interfaces()</code>, but if any of the following are given,
-- the list will have at most one interface corresponding to the first
-- available from this list:
-- * The <code>SCRIPT_NAME.interface</code> script-arg
-- * The <code>interface</code> script-arg
-- * The <code>-e</code> option
--
-- @param filter_func A function to filter the result
-- @return A list of interfaces
-- @see nmap.list_interfaces
-- @see nmap.get_interface
-- @see stdnse.get_script_args
-- @usage
-- local up_filter = function (if_table)
-- if if_table.up == "up" then
-- return if_table
-- end
-- end
--
-- local up_interfaces = stdnse.get_script_interfaces(up_filter)
function get_script_interfaces(filter_func)
filter_func = filter_func or identity
local interface = arg_value(getid() .. ".interface") or nmap.get_interface()
if interface then
return {filter_func(nmap.get_interface_info(interface))}
end
local ret = {}
for _, if_table in ipairs(nmap.list_interfaces()) do
insert(ret, filter_func(if_table))
end
return ret
end
---Get the best possible hostname for the given host. This can be the target as given on ---Get the best possible hostname for the given host. This can be the target as given on
-- the commandline, the reverse dns name, or simply the ip address. -- the commandline, the reverse dns name, or simply the ip address.
--@param host The host table (or a string that'll simply be returned). --@param host The host table (or a string that'll simply be returned).