Yes your variables $file,$dbh and extension pcap.
Here is kinda what i was getting to... Just not sure if this is all correct, when i get a chance ill test it.
#!/usr/bin/perl --
use strict; use warnings;
Main( @ARGV );
exit( 0 );
sub Main {
my( $directory ) = @_;
my $dbh = DBI->connect('DBI:mysql:test', 'root', 'nstar'
) || die "Could not connect to +database: $DBI::errstr"
+;
for my $file ( GetFiles( $directory ) ){
LogFromPcap( $file, $dbh );
}
$dbh->disconnect;
}
sub GetFiles {
use Cwd();
my $cwd = Cwd::cwd();
chdir $directory or die $!;
my @files = glob '*.pcap';
chdir $cwd;
return @files;
}
sub LogFromPcap {
my( $file, $dbh ) = @_;
$log->read('$file');
#INFO from PCAP file
foreach my $index ($log->indexes) {
my ($length_orig, $length_incl, $drops, $secs, $msecs) = $log->hea
+der
($index);
my $data = $log->data($index);
my $eth_obj = NetPacket::Ethernet->decode($data);
next unless $eth_obj->{type} == NetPacket::Ethernet::ETH_TYPE_IP
+;
my $ip_obj = NetPacket::IP->decode($eth_obj->{data});
next unless $ip_obj->{proto} == NetPacket::IP::IP_PROTO_TCP;
my $tcp_obj = NetPacket::TCP->decode($ip_obj->{data});
#get date time stamp of packet
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localti
+me(
+$secs + $msecs/1000);
$mon+=1;
my $time = sprintf("%02d-%02d %02d:%02d:%02d",
$mon, $mday, $hour, $min, $sec);
#Info in Table
$dbh->do( "INSERT INTO test2 (Date,Source,Destination,Packets
+,Port)
values (
'$time',
'$ip_obj->{src_ip}',
'$ip_obj->{dest_ip}',
'$ip_obj->{len}',
'$tcp_obj->{dest_port}')");
}
}
|