Lab Task 2
==========

Use the provided port server to configure your environment to open, close, and
filter several ports, within a range.

Install Net::Frame, and it's dependencies on one of your Kali Linux
Virtual Boxes. Additional information on Net::Frame, and instillation can
be found in the NetFrameREADME.txt.

Use the example code for Net::Frame to develop a port scanner, in Perl
This port scanner will behave in the following manner:
(inputs can be from command line arguments, or read from STDIN)
(outputs should be written to STDOUT)

   Inputs: 
      Port range to scan. In no range is provided, scan all ports.

   Outputs:
      List of all ports scanned with columns:
        ---------------------------------
          Port            State 
        ---------------------------------
        [number]   [open/closed/filtered]


Port scanning can be attempted in parallel, however sequential
packet sending and receiving is acceptable, and is demonstrated in the
documentation. Additionally, you may choose to include some information as
to what port the scanner is currently scanning, for debugging purposes.

Provided Files and Links:
-------------------------
   portserver.pl
   task2-port-scan.txt
   NetFrameREADME.txt
   http://search.cpan.org/dist/Net-Frame/lib/Net/Frame.pm

Additional Information:
---------------------
To extract the values of the TCP flag from a TCP packet, use the following
syntax.

>> $flags = $tcp->[2];

The value of $flags with be the decimal representation of the hex flags.

To extract a TCP packet from the Simple packet, refer to the documentation,
for Net::Frame::Simple.

The Net::Frame::Dump object should be reinitialized each time a packet
is sent.

Root access is required to execute Net::Frame code, as direct access to the
raw network interface requires root access.

Deliverables:
-------------
Side by side execution of the port server running on a Ubuntu box, and the 
port scanner, running on a Kali box.

Evaluation will be decided on the accuracy of your implementation, and the
port scanners' ability to correctly identify the open, closed, and filtered
ports within the range provided by the port server.

Additionally, a short verbal report should be delivered as to what happens
when you attempt to scan the whole port range, and any challenges, or 
workarounds that would increase port scanning effectiveness.

