From a8da3e83e21372047ffc6fd4e9879bcd101cb788 Mon Sep 17 00:00:00 2001 From: Manabu Niseki Date: Tue, 17 Mar 2020 07:27:36 +0900 Subject: [PATCH] fix: fix ST issue --- lib/ukemi/services/securitytrails.rb | 29 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/ukemi/services/securitytrails.rb b/lib/ukemi/services/securitytrails.rb index 43db9ac..6224a2f 100644 --- a/lib/ukemi/services/securitytrails.rb +++ b/lib/ukemi/services/securitytrails.rb @@ -33,23 +33,24 @@ def lookup_by_ip(data) def lookup_by_domain(data) result = api.history.get_all_dns_history(data, type: "a") records = result.dig("records") || [] - records.map do |record| + + memo = Hash.new { |h, k| h[k] = [] } + records.each do |record| values = record.dig("values") || [] - values.map do |value| - Record.new( - data: value.dig("ip"), - first_seen: record.dig("first_seen"), - last_seen: record.dig("last_seen"), - source: name - ) + values.each do |value| + ip = value.dig("ip") + memo[ip] << record.dig("first_seen") + memo[ip] << record.dig("last_seen") end - end.flatten - end + end - def extract_attributes(response) - data = response.dig("data") || [] - data.map do |item| - item.dig("attributes") || [] + memo.keys.map do |ip| + Record.new( + data: ip, + first_seen: memo[ip].min, + last_seen: memo[ip].max, + source: name + ) end end end