added a script to pull down threat strings from a given bulletin-id

This commit is contained in:
Brendan McDevitt 2022-09-14 20:55:16 -05:00
parent f8b79d06bb
commit e400ddc258
2 changed files with 51 additions and 5 deletions

View file

@ -0,0 +1,26 @@
#!/usr/bin/env ruby
require '../microsoft_cvrf_client.rb'
require 'optparse'
@options = {}
OptionParser.new do |opts|
opts.on("-id", "--id", "Bulletin ID") do |id|
@options[:id] = id
end
end.parse!
bulletin_id = @options[:id]
api_client = MicrosoftCvrfClient.new
bulletin_response = api_client.get_id(bulletin_id)
cves_and_threat_strings = api_client.cves_and_threat_strings(bulletin_response)
cves_and_threat_strings.each do |cve, threat_strings|
puts "CVE: #{cve}"
puts "-------------------"
puts "THREAT_STRINGS: #{threat_strings}"
puts "-------------------"
end

View file

@ -33,13 +33,33 @@ class MicrosoftCvrfClient
end
def get_id(id)
p "Now checking #{id}"
p "------------------"
result = api_instance.cvrf_id_get(api_version, api_key, id)
p result
api_instance.cvrf_id_get(api_version, api_key, id)
rescue OpenapiClient::ApiError => e
puts "Exception when calling DefaultApi->cvrf_id_get: #{e}"
end
# response from get_id()
def cves_and_threat_strings(response)
response.vulnerability.map do |vuln|
threat_string = get_threat_string_for_vuln(vuln)
split_t_string = split_threat_string(threat_string)
#hashed_string = split_threat_string_to_hash(split_t_string)
[ vuln.cve, split_t_string ]
end
end
def get_threat_string_for_vuln(vuln)
vuln.threats.select { |t| t.type == 1 }.first.description.value
end
def split_threat_string(threat_string)
threat_string.split(";")
end
# doesnt work
def split_threat_string_to_hash(split_threat_string)
Hash[*split_threat_string.flatten]
end
end
c = MicrosoftCvrfClient.new