misc_rbtools/kenna_kdi_importer/asset_generator.rb

49 lines
1.3 KiB
Ruby

require 'faker'
require './vuln_generator'
module KennaKdi
class AssetGenerator < VulnGenerator
def skip_autoclose(value = true)
{ "skip_autoclose": value }
end
def assets_merge(assets_array)
{ "assets": assets_array }
end
def vuln_def_merge(vuln_hashes)
vuln_def_array = vuln_hashes.map do |vuln_hash|
vuln_def_hash(vuln_hash)
end
{
"vuln_defs": vuln_def_array
}
end
def create_assets(number_of_assets, max_number_vulns)
assets = assets_array(number_of_assets, max_number_vulns)
vuln_hashes = assets.map {|asset| asset[:vulns]}.flatten
header_and_assets = skip_autoclose.merge(assets_merge(assets))
header_and_assets.merge(vuln_def_merge(vuln_hashes))
end
def assets_array(number_of_assets, max_number_vulns)
# this should be the primary logic that will generate the "assets": [asset1, asset2] data for the json
number_of_assets.times.map do
random_asset_hash(rand(1..max_number_vulns))
end
end
def random_asset_hash(number_of_vulns)
# generate number of vulns specified vuln and vulndef pairs to work with
v_and_vds = multiple_vulns(number_of_vulns)
{
"ip_address": Faker::Internet.ip_v4_address,
"vulns": vulns(v_and_vds)
}
end
end
end