class Shodanz::API::Exploits
The Exploits
API
provides access to several exploit and vulnerability data sources. At the moment, it searches across the following:
- Exploit DB - Metasploit - Common Vulnerabilities and Exposures (CVE)
@author Kent 'picat' Gruber
Constants
Attributes
key[RW]
@return [String]
Public Class Methods
new(key: ENV['SHODAN_API_KEY'])
click to toggle source
@param key [String] SHODAN API
key, defaulted to the SHODAN_API_KEY enviroment variable.
# File lib/shodanz/apis/exploits.rb, line 26 def initialize(key: ENV['SHODAN_API_KEY']) @url = URL @client = Async::HTTP::Client.new(Async::HTTP::Endpoint.parse(@url)) self.key = key warn 'No key has been found or provided!' unless key? end
Public Instance Methods
count(query = '', facets: {}, page: 1, **params)
click to toggle source
This method behaves identical to the “/search” method with the difference that it doesn't return any results.
Example¶ ↑
api.count(type: "dos")
# File lib/shodanz/apis/exploits.rb, line 60 def count(query = '', facets: {}, page: 1, **params) params[:query] = query params = turn_into_query(**params) facets = turn_into_facets(**facets) params[:page] = page get('api/count', **params.merge(**facets)) end
key?()
click to toggle source
Check if there's an API
key. @return [String]
# File lib/shodanz/apis/exploits.rb, line 36 def key? return true if @key false end
search(query = '', facets: {}, page: 1, **params)
click to toggle source
Search across a variety of data sources for exploits and use facets to get summary information.
Example¶ ↑
api.search("SQL", port: 443) api.search(port: 22) api.search(type: "dos")
# File lib/shodanz/apis/exploits.rb, line 48 def search(query = '', facets: {}, page: 1, **params) params[:query] = query params = turn_into_query(**params) facets = turn_into_facets(**facets) params[:page] = page get('api/search', **params.merge(**facets)) end