Net-Frame
view release on metacpan or search on metacpan
lib/Net/Frame/Layer.pm view on Meta::CPAN
NF_LAYER_NONE
NF_LAYER_UNKNOWN
NF_LAYER_NOT_AVAILABLE
)],
subs => [qw(
getHostIpv4Addr
getHostIpv4Addrs
getHostIpv6Addr
inetAton
inetNtoa
inet6Aton
inet6Ntoa
getRandomHighPort
getRandom32bitsInt
getRandom16bitsInt
convertMac
inetChecksum
)],
);
our @EXPORT_OK = (
@{$EXPORT_TAGS{consts}},
@{$EXPORT_TAGS{subs}},
lib/Net/Frame/Layer.pm view on Meta::CPAN
return;
}
$ipv6 =~ s/%.*$//;
return $ipv6;
}
sub inetAton { Socket::inet_aton(shift()) }
sub inetNtoa { Socket::inet_ntoa(shift()) }
sub inet6Aton { _inet_pton(AF_INET6, shift()) }
sub inet6Ntoa { _inet_ntop(AF_INET6, shift()) }
sub getRandomHighPort {
my $highPort = int rand 0xffff;
$highPort += 1024 if $highPort < 1025;
$highPort;
}
sub getRandom32bitsInt { int rand 0xffffffff }
sub getRandom16bitsInt { int rand 0xffff }
lib/Net/Frame/Layer.pm view on Meta::CPAN
Resolves IPv4 address of specified hostname.
=item B<getHostIpv4Addrs> (hostname)
Same as above, but returns an array of IPv4 addresses.
=item B<getHostIpv6Addr> (hostname)
Resolves IPv6 address of specified hostname.
=item B<inet6Aton> (IPv6 address)
Takes IPv6 address and returns the network form.
=item B<inet6Ntoa> (IPv6 network form)
Takes IPv6 address in network format, and returns the IPv6 human form.
=item B<inetAton> (IPv4 address)
=item B<inetNtoa> (IPv4 network form)
Same as for IPv6, but for IPv4 addresses.
=item B<convertMac> (MAC network form)
lib/Net/Frame/Layer/ARP.pm view on Meta::CPAN
}
# IPv6 packing
else {
$self->[$__raw] = $self->SUPER::pack('nnCCnH12a*H12a*',
$self->[$__hType],
$self->[$__pType],
$self->[$__hSize],
$self->[$__pSize],
$self->[$__opCode],
$srcMac,
inet6Aton($self->[$__srcIp]),
$dstMac,
inet6Aton($self->[$__dstIp]),
) or return;
}
return $self->[$__raw];
}
sub unpack {
my $self = shift;
my ($hType, $pType, $tail) = $self->SUPER::unpack('nn a*',
lib/Net/Frame/Layer/ARP.pm view on Meta::CPAN
$payload) = $self->SUPER::unpack('CCnH12a4H12a4 a*', $tail)
or return;
$self->[$__srcIp] = inetNtoa($srcIp);
$self->[$__dstIp] = inetNtoa($dstIp);
}
# IPv6 unpacking
else {
($hSize, $pSize, $opCode, $srcMac, $srcIp, $dstMac, $dstIp,
$payload) = $self->SUPER::unpack('CCnH12a16H12a16 a*', $tail)
or return;
$self->[$__srcIp] = inet6Ntoa($srcIp);
$self->[$__dstIp] = inet6Ntoa($dstIp);
}
$self->[$__hType] = $hType;
$self->[$__pType] = $pType;
$self->[$__hSize] = $hSize;
$self->[$__pSize] = $pSize;
$self->[$__opCode] = $opCode;
$self->[$__src] = convertMac($srcMac);
$self->[$__dst] = convertMac($dstMac);
lib/Net/Frame/Layer/TCP.pm view on Meta::CPAN
}
my $phpkt;
for my $l (@$layers) {
if ($l->layer eq 'IPv4') {
$phpkt = $self->SUPER::pack('a4a4CCn',
inetAton($l->src), inetAton($l->dst), 0, 6, $len);
}
elsif ($l->layer eq 'IPv6') {
$phpkt = $self->SUPER::pack('a*a*NnCC',
inet6Aton($l->src), inet6Aton($l->dst), $len, 0, 0, 6);
}
}
my $offX2Flags = ($self->[$__off] << 12) | (0x0f00 & ($self->[$__x2] << 8))
| (0x00ff & $self->[$__flags]);
$phpkt .= $self->SUPER::pack('nnNNnnnn',
$self->[$__src], $self->[$__dst], $self->[$__seq], $self->[$__ack],
$offX2Flags, $self->[$__win], 0, $self->[$__urp],
) or return;
lib/Net/Frame/Layer/UDP.pm view on Meta::CPAN
my ($layers) = @_;
my $phpkt;
for my $l (@$layers) {
if ($l->layer eq 'IPv4') {
$phpkt = $self->SUPER::pack('a4a4CCn',
inetAton($l->src), inetAton($l->dst), 0, 17, $self->[$__length]);
}
elsif ($l->layer eq 'IPv6') {
$phpkt = $self->SUPER::pack('a*a*NnCC',
inet6Aton($l->src), inet6Aton($l->dst), $self->[$__length],
0, 0, 17);
}
}
$phpkt .= $self->SUPER::pack('nnnn',
$self->[$__src], $self->[$__dst], $self->[$__length], 0)
or return;
my $start = 0;
my $last = $self;
t/13-gethostsubs.t view on Meta::CPAN
}
printf(STDERR "[-] 4: $ip\n");
return 0; # NOK
},
1,
$@,
);
ok(
sub {
my $a = inet6Aton('::1');
if ($a && unpack('H*', $a) eq '00000000000000000000000000000001') {
print "[+] ".unpack('H*', $a)."\n";
return 1; # OK
}
printf(STDERR "[-] 5: ".unpack('H*', $a)."\n");
return 0; # NOK
},
1,
$@,
);
ok(
sub {
my $a = inet6Ntoa(pack('H*', '00000000000000000000000000000001'));
if ($a && $a =~ $ip6) {
print "[+] $a\n";
return 1; # OK
}
printf(STDERR "[-] 6: $a\n");
return 0; # NOK
},
1,
$@,
);
( run in 0.405 second using v1.01-cache-2.11-cpan-87723dcf8b7 )