Sha256: f119ced5c5318bdd886daaf3ae02da3d620056f0d17cbe6cec3e30df68345848
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
require_relative 'utils.rb' # frozen_string_literal: true module Shodanz module API # 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 class Exploits include Shodanz::API::Utils # @return [String] attr_accessor :key # The path to the REST API endpoint. URL = 'https://exploits.shodan.io/api/' # @param key [String] SHODAN API key, defaulted to # the *SHODAN_API_KEY* enviroment variable. def initialize(key: ENV['SHODAN_API_KEY']) @url = URL @internet = Async::HTTP::Internet.new self.key = key warn 'No key has been found or provided!' unless key? end # Check if there's an API key. # @return [String] def key? return true if @key false end # 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") def search(query = '', facets: {}, page: 1, **params) params[:query] = query params = turn_into_query(**params) facets = turn_into_facets(**facets) params[:page] = page get('search', **params.merge(**facets)) end # This method behaves identical to the "/search" method with # the difference that it doesn't return any results. # == Example # api.count(type: "dos") def count(query = '', facets: {}, page: 1, **params) params[:query] = query params = turn_into_query(**params) facets = turn_into_facets(**facets) params[:page] = page get('count', **params.merge(**facets)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shodanz-2.0.2 | lib/shodanz/apis/exploits.rb |
shodanz-2.0.1 | lib/shodanz/apis/exploits.rb |