Net::Packet - a framework to easily send and receive frames from layer 2 to layer 7
Net::Packet Net::Packet::Env Net::Packet::Dump Net::Packet::Utils Net::Packet::Desc | +---Net::Packet::DescL2 | +---Net::Packet::DescL3 | +---Net::Packet::DescL4 Net::Packet::Frame Net::Packet::Layer | +---Net::Packet::Layer2 | | | +---Net::Packet::ETH | | | +---Net::Packet::NULL | | | +---Net::Packet::RAW | | | +---Net::Packet::SLL | +---Net::Packet::Layer3 | | | +---Net::Packet::ARP | | | +---Net::Packet::IPv4 | | | +---Net::Packet::IPv6 | | | +---Net::Packet::VLAN | +---Net::Packet::Layer4 | | | +---Net::Packet::TCP | | | +---Net::Packet::UDP | | | +---Net::Packet::ICMPv4 | +---Net::Packet::Layer7
# Load all modules, it also initializes a Net::Packet::Env object, # and imports all utility subs and constances in current namespace use Net::Packet; # Build IPv4 header my $ip = Net::Packet::IPv4->new(dst => '192.168.0.1'); # Build TCP header my $tcp = Net::Packet::TCP->new(dst => 22); # Assemble frame # It will also open a Net::Packet::DescL3 descriptor # and a Net::Packet::Dump object my $frame = Net::Packet::Frame->new(l3 => $ip, l4 => $tcp); $frame->send; # Print the reply just when it has been received until ($Env->dump->timeout) { if ($frame->recv) { print $frame->reply->l3, "\n"; print $frame->reply->l4, "\n"; last; } }
This module is a unified framework to craft, send and receive packets at layers 2, 3, 4 and 7.
Basically, you forge each layer of a frame (Net::Packet::IPv4 for layer 3, Net::Packet::TCP for layer 4 ; for example), and pack all of this into a Net::Packet::Frame object. Then, you can send the frame to the network, and receive it easily, since the response is automatically searched for and matched against the request.
If you want some layer 2, 3 or 4 protocol encoding/decoding to be added, just ask, and give a corresponding .pcap file ;)
You should study various pod found in all classes, example files found in examples directory that come with this tarball, and also tests in t directory.
Patrice <GomoR> Auffret
Copyright (c) 2004-2006, Patrice <GomoR> Auffret
You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.
NetPacket, Net::RawIP, Net::RawSock
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in '# Load'. Assuming CP1252
To install Net::Packet, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Packet
CPAN shell
perl -MCPAN -e shell install Net::Packet
For more information on module installation, please visit the detailed CPAN module installation guide.