69 lines
1.9 KiB
Ruby
Executable file
69 lines
1.9 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
require '../microsoft_cvrf_client.rb'
|
|
require 'optparse'
|
|
require 'json'
|
|
|
|
def export_to_json(bulletin_vulns, filepath)
|
|
File.write(filepath, bulletin_vulns)
|
|
end
|
|
|
|
def do_export(bulletin_vulns, bulletin_id)
|
|
filename = "./data/exploited_cves_for_msft_#{bulletin_id}.json"
|
|
export_to_json(bulletin_vulns, filename)
|
|
puts "----" * 12
|
|
puts "Succesfully Exported to #{filename}:"
|
|
puts "----" * 12
|
|
puts bulletin_vulns
|
|
puts "----" * 12
|
|
end
|
|
|
|
@options = {}
|
|
|
|
OptionParser.new do |opts|
|
|
opts.on("-id", "--id", "Bulletin ID") do |id|
|
|
@options[:id] = id
|
|
end
|
|
opts.on("--export") do |export|
|
|
@options[:export] = export
|
|
end
|
|
opts.on("--export-all") do |export_all|
|
|
@options[:export_all] = export_all
|
|
end
|
|
end.parse!
|
|
|
|
api_client = MicrosoftCvrfClient.new
|
|
|
|
if (@options[:id] && !@options[:export] && !@options[:export_all])
|
|
exploited_vulns_for_bulletin = api_client.exploited_vulns_only(@options[:id])
|
|
pretty_vulns = JSON.pretty_generate(exploited_vulns_for_bulletin)
|
|
puts "----" * 12
|
|
puts pretty_vulns
|
|
puts "----" * 12
|
|
elsif (@options[:id] && @options[:export])
|
|
exploited_vulns_for_bulletin = api_client.exploited_vulns_only(@options[:id])
|
|
pretty_vulns = JSON.pretty_generate(exploited_vulns_for_bulletin)
|
|
do_export(pretty_vulns, @options[:id])
|
|
elsif (@options[:export_all] && !@options[:id] && !@options[:export])
|
|
puts "Exporting All Bulletin Data:"
|
|
api_client.ids.each do |bulletin_id|
|
|
puts "----" * 12
|
|
puts "Now exporting #{bulletin_id}"
|
|
puts "----" * 12
|
|
# remove these in the next 3 months or put in something that acts based on
|
|
# Date.today.year
|
|
case bulletin_id
|
|
when '2022-Oct'
|
|
next
|
|
when '2022-Nov'
|
|
next
|
|
when '2022-Dec'
|
|
next
|
|
end
|
|
vulns = api_client.exploited_vulns_only(bulletin_id)
|
|
pretty_vulns = JSON.pretty_generate(vulns)
|
|
do_export(pretty_vulns, bulletin_id)
|
|
end
|
|
end
|
|
|
|
puts @options
|