1
0
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:
paulino
2013-04-30 01:24:10 +00:00
parent 3b14d188cb
commit 2e30c468f4

View File

@@ -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