Sha256: 1dae73336b14a934766c9afef5af3f320917a8e400245c57417248dbeee7697b

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

require "censu"

module Mihari
  module Analyzers
    class Censys < Base
      attr_reader :api
      attr_reader :title
      attr_reader :description
      attr_reader :query

      CENSYS_ID_KEY = "CENSYS_ID"
      CENSYS_SECRET_KEY = "CENSYS_SECRET"

      def initialize(query)
        super()

        raise ArgumentError, "#{CENSYS_ID_KEY} and #{CENSYS_SECRET_KEY} are required" unless valid?

        @api = ::Censys::API.new
        @query = query
        @title = "Censys lookup"
        @description = "Query: #{query}"
      end

      def artifacts
        ipv4s = []
        res = api.ipv4.search(query: query)
        res.each_page do |page|
          page.each { |result| ipv4s << result.ip }
        end

        ipv4s
      end

      # @return [true, false]
      def censys_id?
        ENV.key? CENSYS_ID_KEY
      end

      # @return [true, false]
      def censys_secret?
        ENV.key? CENSYS_SECRET_KEY
      end

      # @return [true, false]
      def valid?
        censys_id? && censys_secret?
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-0.2.2 lib/mihari/analyzers/censys.rb
mihari-0.2.1 lib/mihari/analyzers/censys.rb
mihari-0.2.0 lib/mihari/analyzers/censys.rb
mihari-0.1.0 lib/mihari/analyzers/censys.rb