#!/usr/bin/perl
use DBI;
use utf8;
use Excel::Writer::XLSX;
############ Variables ############
my $contador = 0;
my %vulnerabilidades;
my %informacion;
my $workbook = Excel::Writer::XLSX->new("reporte.xlsx");
my $worksheet = $workbook->add_worksheet('Vulnerabilities');
$worksheet->set_tab_color('red');
#$worksheet->autofilter( 0, 0, 999999, 14 );
$worksheet->set_column( 0, 14, 20 );
############ Conecto a la DB ############
my $dbh = DBI->connect(
"dbi:SQLite:dbname=mitabla.s3db",
"", "",
{
RaiseError => 1,
sqlite_unicode => 1,
},
) or die $DBI::errstr;
########### Creamos el reporte ############
##Iniciadores de las variables q corresponden a las columnas
$a = 0;
$b = 0;
$c = 0;
## Formato para los nombres de las columnas
my $header = $workbook->add_format();
$header->set_bold();
$header->set_size(12);
$header->set_color(0x09);
$header->set_align('center');
$header->set_fg_color(0x16);
$header->set_border(1);
$header->set_border_color('black');
## Nombre de las columnas del TAB vulnerabilities
my @columnas = qw(
issues observacion recomendacion
);
for ( my $i = 0 ; $i < @columnas ; $i++ ) {
$worksheet->write( 0, $i, $columnas[$i], $header );
}
## Formato para las filas
my $files = $workbook->add_format();
$files->set_border(1);
$files->set_border_color('black');
############ Listado de vulnerabilidades ############
print "\n\nListado de las vulnerabilidades almacenadas:\n";
my $sth = $dbh->prepare("SELECT issues FROM mitabla");
$sth->execute();
while ( my @row = $sth->fetchrow_array ) {
$contador++;
print "$contador - $row[0]\n";
$vulnerabilidades{$contador} = $row[0];
}
############ Listado de vulnerabilidades ############
print
"\n\nIngrese el número o números de las vulnerabilidades, separados por comas: ";
chomp( my $issues = <> );
print "\n[+]Vulnerabilidad/es ingresada/s: [$issues]\n";
my @numeros = split /,/, $issues;
for my $numero (@numeros) {
$numero += 0; # aseguramos que es un número
if ( $vulnerabilidades{$numero} ) {
my $vulnera = $vulnerabilidades{$numero};
print " [-]Exportando vulnerabilidad [$vulnera]\n";
for my $issue (qw(issues observacion recomendacion)) {
my $sth =
$dbh->prepare("SELECT $issue FROM mitabla WHERE issues=?");
$sth->execute($vulnera);
while ( my @row = $sth->fetchrow_array ) {
#$worksheet->write( 1+$a, 0, $row[0], $files );
my $info = $informacion{ $row[0] };
}
}
}
}
$sth->finish();
$dbh->disconnect();