49 lines
1.3 KiB
Ruby
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, number_of_vulns)
|
|
assets = assets_array(number_of_assets, number_of_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, number_of_vulns)
|
|
# this should be the primary logic that will generate the "assets": [asset1, asset2] data for the json
|
|
number_of_assets.times.map do
|
|
multiple_vulns_asset_hash(number_of_vulns)
|
|
end
|
|
end
|
|
|
|
def multiple_vulns_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
|