Chocolataria Postado Dezembro 6, 2009 Denunciar Share Postado Dezembro 6, 2009 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.txtSourceIP = 10.1.1.1SourceMAC = 00d0047203fcIPProtocol = 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Chocolataria
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
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.