class Aquatone::Collectors::Censys
Constants
- API_BASE_URI
- API_RESULTS_PER_PAGE
- DEFAULT_PAGES_TO_PROCESS
Public Instance Methods
next_page?(page, body)
click to toggle source
# File lib/aquatone/collectors/censys.rb, line 80 def next_page?(page, body) page <= pages_to_process && body["metadata"]["pages"] && API_RESULTS_PER_PAGE * page < body["metadata"]["count"].to_i end
pages_to_process()
click to toggle source
# File lib/aquatone/collectors/censys.rb, line 84 def pages_to_process if has_cli_option?("censys-pages") return get_cli_option("censys-pages").to_i end DEFAULT_PAGES_TO_PROCESS end
request_censys_page(page=1)
click to toggle source
# File lib/aquatone/collectors/censys.rb, line 22 def request_censys_page(page=1) # Initial version only supporting Censys Certificates API # Censys expects Basic Auth for requests. auth = { :username => get_key('censys_id'), :password => get_key('censys_secret') } # Define this is JSON content headers = { 'Content-Type' => 'application/json', 'Accept' => 'application/json' } # The post body itself, as JSON query = { 'query' => url_escape("#{domain.name}"), 'page' => page, 'fields' => [ "parsed.names", "parsed.extensions.subject_alt_name.dns_names" ], 'flatten' => true } # Search API documented at https://censys.io/api/v1/docs/search response = post_request( "#{API_BASE_URI}/search/certificates", query.to_json, { :basic_auth => auth, :headers => headers } ) if response.code != 200 failure(response.parsed_response["error"] || "Censys API encountered error: #{response.code}") end # If nothing returned from Censys, return: return unless response.parsed_response["results"] response.parsed_response["results"].each do |result| next unless result["parsed.extensions.subject_alt_name.dns_names"] result["parsed.extensions.subject_alt_name.dns_names"].each do |altdns| add_host(altdns) if altdns.end_with?(".#{domain.name}") end next unless result["parsed.names"] result["parsed.names"].each do |parsedname| add_host(parsedname) if parsedname.end_with?(".#{domain.name}") end end # Get the next page of results request_censys_page(page + 1) if next_page?(page, response.parsed_response) end
run()
click to toggle source
# File lib/aquatone/collectors/censys.rb, line 18 def run request_censys_page end