Nmap Development mailing list archives
Re: [nmap-svn] r24934 - nmap/scripts
From: Gorjan Petrovski <mogi57 () gmail com>
Date: Sun, 17 Jul 2011 19:24:34 +0200
I contacted the IPInfoDB service and they said that every user of the script needs to have his/hers own API key. I've updated the ip-geolocation-ipinfodb to use an API key supplied through script-args. On Sun, Jul 17, 2011 at 7:22 PM, <commit-mailer () insecure org> wrote:
Author: gorjan Date: Sun Jul 17 10:22:58 2011 New Revision: 24934 Log: Updating the script to use an API key supplied by the user throught the script-args. Modified: nmap/scripts/ip-geolocation-ipinfodb.nse Modified: nmap/scripts/ip-geolocation-ipinfodb.nse ============================================================================== --- nmap/scripts/ip-geolocation-ipinfodb.nse (original) +++ nmap/scripts/ip-geolocation-ipinfodb.nse Sun Jul 17 10:22:58 2011 @@ -4,12 +4,16 @@ (http://ipinfodb.com/ip_location_api.php). There is no limit on requests to this service. However, the API key -used was obtained through a free registration with the service. +needs to be obtained through free registration for this service: +<code>http://ipinfodb.com/login.php</code> ]] --- -- @usage --- nmap --script ip-geolocation-ipinfodb <target> +-- nmap --script ip-geolocation-ipinfodb <target> --script-args ip-geolocation-ipinfodb.apikey=<API_key> +-- +-- @args ip-geolocation-ipinfodb.apikey A sting specifying the api-key which +-- the user wants to use to access this service -- -- @output -- | ip-geolocation-ipinfodb: @@ -30,18 +34,35 @@ hostrule = function(host) local is_private, err = ipOps.isPrivate( host.ip ) if is_private == nil then - stdnse.print_debug( "%s Error in Hostrule: %s.", SCRIPT_NAME, err ) + stdnse.print_debug( "%s not running: Error in Hostrule: %s.", SCRIPT_NAME, err ) return false + elseif is_private then + stdnse.print_debug("%s not running: Private IP address of target: %s", SCRIPT_NAME, host.ip) + return false end - return not is_private + + local api_key = stdnse.get_script_args(SCRIPT_NAME..".apikey") + if not (type(api_key)=="string") then + stdnse.print_debug("%s not running: No IPInfoDB API key specified.", SCRIPT_NAME) + return false + end + + return true end -- No limit on requests. A free registration for an API key is a prerequisite local ipinfodb = function(ip) - local api_key = "430ff90c5bf74d71db87f156837ffd7c67725927271c95f650a6ae994342b57f" + local api_key = stdnse.get_script_args(SCRIPT_NAME..".apikey") local response = http.get("api.ipinfodb.com", 80, "/v3/ip-city/?key="..api_key.."&format=json".."&ip="..ip, nil) local stat, loc = json.parse(response.body) - if not stat then return nil end + if not stat then + stdnse.print_debug("No response, possibly a network problem.") + return nil + end + if loc.statusMessage and loc.statusMessage == "Invalid API key." then + stdnse.print_debug(loc.statusMessage) + return nil + end local output = {} table.insert(output, "coordinates (lat,lon): "..loc.latitude..","..loc.longitude) _______________________________________________ Sent through the nmap-svn mailing list http://cgi.insecure.org/mailman/listinfo/nmap-svn
-- Gorjan _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://seclists.org/nmap-dev/
Current thread:
- Re: [nmap-svn] r24934 - nmap/scripts Gorjan Petrovski (Jul 17)