Jump to content


Chocolataria

Member Since 05/12/2009
Offline Last Active 08/12/2009, 14:21
-----

Topics I've Started

Script ... Pcap File ...

06/12/2009, 13:53

Olá,
não percebo quase nada de Perl, mas tenho um trabalho para entregar daqui a dois dias e não sei o que fazer! já só choro!! =(
Alguém me pode ajudar?

Este é o meu problema:
tenho um ficheiro de texto do género...

Config.txt

SourceIP = 10.1.1.1
SourceMAC = 00d0047203fc
IPProtocol = 7
Depois tenho um ficheiro PCAP com pacotes capturados na rede.
Num script tenho de ler os campos do ficheiro txt e comparados com os pacotes do ficheiro PCAP. Se algum for igual, apresentar esse pacote.

O script que tenho está assim...

Script.pl

#!/usr/bin/perl -w

  use strict;
  use warnings;
  use Net::PcapUtils;
  use Net::Pcap;
  use NetPacket::Ethernet qw(:strip);
  use NetPacket::IP;
  #use Config::Reader::Simple;

my $file = "CaptureData.txt";
open FILE, ">$file" or die "unable to open $file $!";

my %config;
open my $config, '<', 'Config.txt' or die $!;


while(<$config>) 
{
    chomp;
    my ($key, $value) = split /\s*=\s*/, $_;
    $config{$key} = $value;
    print FILE "chave: $key -- valor: $value\n";
}


my $err ='';  
my $i = 1;
my $pcap = Net::Pcap::open_offline("capture.pcap", \$err) or die "Can't open file...$err\n";
Net::Pcap::loop($pcap, -1, \&process_pkt, ''); 

Net::Pcap::close($pcap);

sub process_pkt
{     
      my ($user, $hdr, $pkt) = @_;
      my $ip_obj = NetPacket::IP->decode(eth_strip($pkt));
      my $eth_obj = NetPacket::Ethernet->decode($pkt);
      print FILE "$i\n";
      print FILE "SourceIP : $ip_obj->{src_ip}\n";
      print FILE "SourceMAC : $eth_obj->{src_mac}\n";
      print FILE "EthernetType : $eth_obj->{type}\n";
      print FILE "IPProtocol : $ip_obj->{proto}\n";
      print FILE "----------------------------\n";
      $i++;
}

close FILE, ">$file" or die "unable to close $file $!";
Por favor, preciso mesmo de ajuda...
Obrigada,
...Chocolataria

IPB Skin By Virteq