bpa has asked for the wisdom of the Perl Monks concerning the following question:
addr_net: undef input env->ip6: ::1 Env->ip6: ::1 NP_IPv6_PROTOCOL_TCP: 6 Use of uninitialized value in socket at /usr/local/share/perl/5.8.8/Ne +t/Write/Layer.pm line 171. Net::Write::Layer::open: socket: Address family not supported by proto +col at /usr/local/share/perl/5.8.8/Net/Packet/DescL3.pm line 86
#!/usr/bin/perl # Author: Barret Miller # Date: 07/14/08 (date of E3 gaming conference!) # This program will send either a UDP or TCP packet with a faked # source address to a destination address for IPv4 or IPv6 use Switch; use Net::Packet::Env qw($Env); use Net::Packet::Consts qw(:ipv6); require Net::Packet::Frame; require Net::Packet::DescL3; require Net::Packet::Dump; require Net::Packet::IPv4; require Net::Packet::IPv6; require Net::Packet::UDP; require Net::Packet::TCP; my $transport; my $port; my $version; my $ip; my $l4; my $srcAddr; my $dstAddr; my $if; handleArgs(@ARGV); my $env = Net::Packet::Env->new(dev => $if); print("env->ip6: " . $Env->ip6 . "\n"); print("Env->ip6: " . $Env->ip6 . "\n"); print("NP_IPv6_PROTOCOL_TCP: " . NP_IPv6_PROTOCOL_TCP . "\n"); #my $desc = Net::Packet::DescL3->new( # target => '192.168.1.99', #); my $dump = Net::Packet::Dump->new( keepTimestamp => 1, env => $env, ); $dump->start; my $d3 = Net::Packet::DescL3->new( dev => 'wlan0', target => '::1', ); # Build network layer header (ip4 or ip6) # defualts to ip4 if($version eq '6') { $ip = Net::Packet::IPv6->new( src => '::1', dst => '::1', nextHeader => NP_IPv6_PROTOCOL_TCP, ); } else { $ip = Net::Packet::IPv4->new( src => $srcAddr, dst => $dstAddr, ); } # Build a transport layer header # defaults to tcp if($transport eq 'udp') { $l4 = Net::Packet::UDP->new( dst => $port, ); } else { $l4 = Net::Packet::TCP->new( dst => $port, ); } # Assemble a frame my $frame = Net::Packet::Frame->new( l3 => $ip, l4 => $l4, ); $frame->send; # Note: if you have faked your address, don't expect a # reply! if($transport eq 'tcp') { until($dump->timeout) { if($frame->recv) { print $frame->reply->l3, "\n"; print $frame->reply->l4, "\n"; last; } } } # clean up crap files $dump->stop; $dump->clean; # Handle command line args sub handleArgs { my @args = @_; my $argsLength = @args; if($argsLength < 6) { printUsage(); die "Incorrect arguments\n"; } else { for(my $i = 0; $i < $argsLength; $i++) { my $arg = $args[$i]; switch($arg) { # Port to send to case "-p" { $port = $args[$i + 1]; $i++; } # IP version number case "-v" { $version = $args[$i + 1]; $i++; } # transport layer protocol case "-t" { $l4 = $args[$i + 1]; $i++; } case "-s" { $srcAddr = $args[$i + 1]; $i++; } case "-d" { $dstAddr = $args[$i + 1]; $i++; } case "-i" { $if = $args[$i + 1]; $i++; } else { printUsage(); } } } } } sub printUsage { print("USAGE: \n" . "sendPacket [-v 4|6] [-t tcp|udp] [-s srcAddr]\n" . "-i iface -p dstPort -d dstAddr\n"); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Problem Sending an IPv6 Packet with Net::Packet Module
by Anonymous Monk on Jul 24, 2008 at 03:58 UTC | |
by bpa (Novice) on Aug 16, 2008 at 23:59 UTC | |
by Anonymous Monk on Aug 17, 2008 at 03:34 UTC | |
by bpa (Novice) on Aug 23, 2008 at 02:52 UTC |