- 论坛徽章:
- 0
|
use Net::Pcap;
use strict;
use Socket;
sub got_a_dev{
my $err = '';
my $net = '';
my $mask = '';
my %devinfo;
my $good_dev='';
#获得所有的设备
my @devs = Net::Pcap::pcap_findalldevs(\%devinfo, \$err);
print "The number of devices: ",$#devs+1,"\n";
for my $dev (@devs) {
#Net::Pcap::lookupnet function for finding which network is attached to a particular device.
if ( (Net::Pcap::lookupnet($dev, \$net, \$mask, \$err) ) == -1 ) {
die "Net::Pcap::lookupnet failed. Error was $err";
}
else{
$net = inet_ntoa(pack "N", $net); # 2281480192 --> 135.252.160.0
$mask = inet_ntoa(pack "N", $mask); # 4294966784 --> 255.255.254.0
#print "Net:$net\nMask:$mask\n";
}
if ($devinfo{$dev} =~/Intel/){
$good_dev=$dev;
return $good_dev;
}
# print "show : $dev : $devinfo{$dev}\n";
}
}
my $interface=&got_a_dev();
print "get:".$interface."\n";
my $err = '';
my $pcap = Net::Pcap::open_live(
$interface,1600,1,0,\$err
) or die "loop1: $!\n" ;
Net::Pcap::loop($pcap, 10, \&callback, "user_data") or die "loop2: $!\n";
sub callback {
my ($user_data, $header, $packet) = @_;
print $header."\n";
}
Net::Pcap::loop会报个错..bad file descriptor...不知道怎么解决了 |
|