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