mirror of
https://github.com/nmap/nmap.git
synced 2025-12-25 00:49:01 +00:00
-Adds xml structured output support and the corresponding @xmloutput tag.
This commit is contained in:
@@ -6,7 +6,7 @@ local table = require "table"
|
||||
|
||||
description = [[
|
||||
Discovers hostnames that resolve to the target's IP address by querying the online Robtex service at http://ip.robtex.com/.
|
||||
]];
|
||||
]]
|
||||
|
||||
---
|
||||
-- @usage
|
||||
@@ -14,55 +14,58 @@ Discovers hostnames that resolve to the target's IP address by querying the onli
|
||||
--
|
||||
-- @output
|
||||
-- | hostmap-robtex:
|
||||
-- | scanme.nmap.org
|
||||
-- | li86-221.members.linode.com
|
||||
-- | chat.nmap.org
|
||||
-- | scanme.insecure.org
|
||||
-- | scanme.nmap.com
|
||||
-- |_ scanme.org
|
||||
--
|
||||
-- | hosts:
|
||||
-- |_ scanme.nmap.org
|
||||
--
|
||||
-- @xmloutput
|
||||
-- <table key="hosts">
|
||||
-- <elem>nmap.org</elem>
|
||||
-- </table>
|
||||
---
|
||||
|
||||
author = "Arturo 'Buanzo' Busleiman";
|
||||
license = "Same as Nmap--See http://nmap.org/book/man-legal.html";
|
||||
author = "Arturo 'Buanzo' Busleiman"
|
||||
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
|
||||
categories = {
|
||||
"discovery",
|
||||
"safe",
|
||||
"external"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
--- Scrape domains sharing target host ip from robtex website
|
||||
-- @param data string containing the retrieved web page
|
||||
-- @return table containing the host names sharing host.ip
|
||||
function parse_robtex_response (data)
|
||||
local result = {};
|
||||
local result = {}
|
||||
|
||||
for domain in string.gmatch(data, "<span id=\"dns[0-9]+\"><a href=\"//[a-z]+.robtex.com/([^\"]-)%.html\"") do
|
||||
if not table.contains(result, domain) then
|
||||
table.insert(result, domain);
|
||||
table.insert(result, domain)
|
||||
end
|
||||
end
|
||||
return result;
|
||||
return result
|
||||
end
|
||||
|
||||
hostrule = function (host)
|
||||
return not ipOps.isPrivate(host.ip)
|
||||
end;
|
||||
end
|
||||
|
||||
action = function (host)
|
||||
local link = "http://ip.robtex.com/" .. host.ip .. ".html";
|
||||
local htmldata = http.get_url(link);
|
||||
local domains = parse_robtex_response(htmldata.body);
|
||||
local link = "http://ip.robtex.com/" .. host.ip .. ".html"
|
||||
local htmldata = http.get_url(link)
|
||||
local domains = parse_robtex_response(htmldata.body)
|
||||
local output_tab = stdnse.output_table()
|
||||
if (#domains > 0) then
|
||||
return stdnse.format_output(true, domains);
|
||||
output_tab.hosts = domains
|
||||
end
|
||||
end;
|
||||
return output_tab
|
||||
end
|
||||
|
||||
function table.contains (table, element)
|
||||
for _, value in pairs(table) do
|
||||
if value == element then
|
||||
return true;
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false;
|
||||
return false
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user