my $producer= ""; my %opts; getopts("a:c:d:s:", \%opts); $opts{'a'} or usage(); $opts{'d'} or usage(); $opts{'s'} or usage(); open(ASSET_DATA, "<$opts{'a'}") or usage("Unable to open data file $opt{'a'}"); open(REMEDY_DATA, "<$opts{'d'}") or usage("Unable to open data file $opt{'d'}"); my @icrs_array = (); my @remedy_array = (); my $records = []; my $list = []; my %commonRecord = (); my %record = (); my $aerial = []; my $inground = []; my $infacility = []; my $inventory = []; while() { chomp; @remedy_list = split/,/; %record = (); $commonRecord{"VulnerabilityId"}= $remedy_list[0]; print $commonRecord{"VulnerabilityId"} . "\n"; $datestring= "2009-01-14 13:14:01"; $commonRecord{"Date"}= $datestring; $commonRecord{"Source"}= "Remedy"; $commonRecord{"Url"}= "http://cablevision.com/cgi/? foo"; $commonRecord{"ReportConfidence"} = 100; $commonRecord{"CompensatingControls"} = 100; $commonRecord{"AerialScalingFactor"} = &scale_aerial($remedy_list[7],$remedy_list[9]); $commonRecord{"InGroundScalingFactor"} = &scale_inground ($remedy_list[7],$remedy_list[9]); $commonRecord{"InFacilityScalingFactor"} = &scale_infacility($remedy_list[7],$remedy_list[9]); $commonRecord{"InventoryScalingFactor"} = &scale_numberassets ($remedy_list[10]); my $aa=100; my $av = 100; $remedy_issue = $remedy_list[7]; if ($remedy_issue =~ m/vandalism/i) { my $vandal = 50; } else { $vandal = 100; } $commonRecord{"AccessComplexity"} = $vandal; $commonRecord{"AuthenticatedAccess"} = $aa; $commonRecord{"AccessVector"} = $av; $commonRecord{"Exploitability"} = int(($aa * $av * $vandal)/10000); my $noc_calls = 2; my $truck_rolls = 0; my $ticket_bounces = 1; my $credits_issued = 0; my $noc_call_cost = 25; my $truck_roll_cost = 75; my $ticket_bounce_cost = 30; my $avg_credit_cost =25; $commonRecord{"NOC_Call_Cost"} = $noc_call_cost; $commonRecord{"Truck_Roll_Cost"} = $truck_roll_cost; $commonRecord{"Ticket_Bounce_Cost"} = $ticket_bounce_cost; $commonRecord{"Avg_Credit_Cost"} = $avg_credit_cost; $commonRecord{"NOC_calls"} = $noc_calls; $commonRecord{"Truck_Rolls"} = $truck_rolls; $commonRecord{"Ticket_Bounces"} = $ticket_bounces; $commonRecord{"Credits"} = $credits_issued; my $duration; if (($remedy_list[14] ne "") && ($remedy_list[14] ne 0)) { $duration = $remedy_list[14]; } else { $duration = 1; } my $iO_subs; my $OOL_subs; my $analog_subs; if (($remedy_list[20] ne "") && ($remedy_list[20] ne 0)) { $iO_subs = $remedy_list[20]; %record = (); %record = %commonRecord; $record{"VulnerabilityId"} = join("_",$record{"VulnerabilityId"},"iO"); $record{"ImpactCost"} = int(($duration * $iO_subs)/86400); $record{"ImpactCostType"} = "Reputational"; $record{"PotentialEffect"} = "Outage"; push @{$records}, %record; } if (($remedy_list[21] ne "") && ($remedy_list[21] ne 0)) { $OOL_subs = $remedy_list[21]; %record = (); %record = %commonRecord; $record{"VulnerabilityId"} = join("_",$record{"VulnerabilityId"},"OOL"); $record{"ImpactCost"} = int(($duration * $OOL_subs)/86400); $record{"ImpactCostType"}= "Reputational"; $record{"PotentialEffect"}= "Outage"; push @{$records}, \%record; } if (($remedy_list[25] ne "") && ($remedy_list[25] ne 0)) { $analog_subs = $remedy_list[25]; %record = (); %record = %commonRecord; $record{"VulnerabilityId"} = join("_",$record{"VulnerabilityId"},"Analog"); $record{"ImpactCost"} = int(($duration * $analog_subs)/86400); $record{"ImpactCostType"}= "Reputational"; $record{"PotentialEffect"}= "Outage"; push @{$records}, \%record; } else { print "Other\n"; %record = (); %record = %commonRecord; $record{"VulnerabilityId"} = join("_",$record{"VulnerabilityId"},"Other"); $record{"ImpactCost"} = 0; $record{"ImpactCostType"}= "Reputational"; $record{"PotentialEffect"}= "Outage"; push @{$records}, \%record; } }; print Dumper @{$records}; close(REMEDY_DATA);