Class: Mihari::Clients::CIRCL
Overview
CIRCL passive DNS/SSL API client
Instance Attribute Summary
Attributes inherited from Base
#base_url, #headers, #pagination_interval, #timeout
Instance Method Summary collapse
- #dns_query(query) ⇒ Hash
-
#initialize(base_url = "https://www.circl.lu", username:, password:, headers: {}, timeout: nil) ⇒ CIRCL
constructor
A new instance of CIRCL.
-
#passive_dns_search(query) ⇒ Array<String>
Passive DNS search.
-
#passive_ssl_search(query) ⇒ Array<String>
Passive SSL search.
- #ssl_cquery(query) ⇒ Hash
Constructor Details
#initialize(base_url = "https://www.circl.lu", username:, password:, headers: {}, timeout: nil) ⇒ CIRCL
Returns a new instance of CIRCL.
18 19 20 21 22 23 24 25 |
# File 'lib/mihari/clients/circl.rb', line 18 def initialize(base_url = "https://www.circl.lu", username:, password:, headers: {}, timeout: nil) raise(ArgumentError, "username is required") if username.nil? raise(ArgumentError, "password is required") if password.nil? headers["authorization"] = "Basic #{Base64.strict_encode64("#{username}:#{password}")}" super(base_url, headers:, timeout:) end |
Instance Method Details
#dns_query(query) ⇒ Hash
60 61 62 |
# File 'lib/mihari/clients/circl.rb', line 60 def dns_query(query) _get("/pdns/query/#{query}") end |
#passive_dns_search(query) ⇒ Array<String>
Passive DNS search
34 35 36 37 38 39 40 |
# File 'lib/mihari/clients/circl.rb', line 34 def passive_dns_search(query) results = dns_query(query) results.filter_map do |result| type = result["rrtype"] (type == "A") ? result["rdata"] : nil end.uniq end |
#passive_ssl_search(query) ⇒ Array<String>
Passive SSL search
49 50 51 52 53 |
# File 'lib/mihari/clients/circl.rb', line 49 def passive_ssl_search(query) result = ssl_cquery(query) seen = result["seen"] || [] seen.uniq end |
#ssl_cquery(query) ⇒ Hash
69 70 71 |
# File 'lib/mihari/clients/circl.rb', line 69 def ssl_cquery(query) _get("/v2pssl/cquery/#{query}") end |