Sha256: 5c948010917246029b8e6474c91072a352adc5b2de6a0844f19c09efc1b29b48

Contents?: true

Size: 1.09 KB

Versions: 12

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require "urlscan"

module Mihari
  module Analyzers
    class Urlscan < Base
      attr_reader :title
      attr_reader :description
      attr_reader :query
      attr_reader :tags
      attr_reader :target_type

      def initialize(query, title: nil, description: nil, tags: [], target_type: "url")
        super()

        @query = query
        @title = title || "urlscan lookup"
        @description = description || "query = #{query}"
        @tags = tags
        @target_type = target_type

        raise InvalidInputError, "type should be url, domain or ip." unless valid_target_type?
      end

      def artifacts
        result = search
        return [] unless result

        results = result.dig("results") || []
        results.map do |match|
          match.dig "page", target_type
        end.compact.uniq
      end

      private

      def api
        @api ||= ::UrlScan::API.new
      end

      def search
        api.search(query, size: 10_000)
      end

      def valid_target_type?
        %w(url domain ip).include? target_type
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
mihari-1.3.0 lib/mihari/analyzers/urlscan.rb
mihari-1.2.1 lib/mihari/analyzers/urlscan.rb
mihari-1.2.0 lib/mihari/analyzers/urlscan.rb
mihari-1.1.1 lib/mihari/analyzers/urlscan.rb
mihari-1.1.0 lib/mihari/analyzers/urlscan.rb
mihari-1.0.1 lib/mihari/analyzers/urlscan.rb
mihari-1.0.0 lib/mihari/analyzers/urlscan.rb
mihari-0.17.5 lib/mihari/analyzers/urlscan.rb
mihari-0.17.4 lib/mihari/analyzers/urlscan.rb
mihari-0.17.3 lib/mihari/analyzers/urlscan.rb
mihari-0.17.2 lib/mihari/analyzers/urlscan.rb
mihari-0.17.1 lib/mihari/analyzers/urlscan.rb