++++++++++++++++++++++++++++++++
|  NPING PROJECT REQUIREMENTS  |
++++++++++++++++++++++++++++++++

This document presents a list of requirements for the tool Nping that will
be developed during this summer as a project for the program Google Summer of
Code.

Each requirement is tagged with one of the following tags:

[MustHave]   It definitely must be met.
[ShouldHave] It should be met if providing there is enough time for it.
[CouldHave]  It would be nice to have but it's not essential.
[OnRequest]  It would be added to the todo-list if someone asks for it on the
             list, provides a good reason and some usage scenarios.

+------------------------+
| GENERAL                |
+------------------------+

* Documentation for end-users.........................................[MustHave]  [DONE]
* Documentation of the source code using Doxygen syntax..............[Couldhave]  [DONE]
* Command line interface with well-defined option flags...............[MustHave]  [DONE]
* 6 levels of verbosity (0 to 5)......................................[MustHave]  [DONE]
* 6 levels of debugging information...................................[MustHave]  [DONE]
* Written in C++......................................................[MustHave]  [DONE]
* Run and be tested under Linux.......................................[MustHave]  [DONE]
* Run and be tested under Windows.....................................[MustHave]
* Run and be tested under OS X........................................[MustHave]
* Compile as a single, statically-linked executable..................[CouldHave]
* Use of libdnet......................................................[MustHave]  [DONE]
* Designed to be integrated into Nmap tarball.........................[MustHave]
* Design to allow easy extension to other protocols...................[MustHave]  [DONE]


+------------------------+
| LINK LAYER             |
+------------------------+
* Raw Ethernet frame generation.......................................[MustHave]  [DONE]
  - Destination MAC address...........................................[MustHave]  [DONE]
  - Spoofed source MAC address........................................[MustHave]  [DONE]
  - Custom Ethertype/Length..........................................[OnRequest]  [DONE]
  - Invalid CRC32 checksum...........................................[OnRequest]

* ARP ping............................................................[MustHave]  [DONE]

* Custom ARP packet generation
  - Hardware type....................................................[OnRequest]
  - Protocol type....................................................[OnRequest]
  - Hardware length..................................................[OnRequest]
  - Protocol length .................................................[OnRequest]
  - Operation .......................................................[OnRequest]  [DONE]
  - Sender hardware address...........................................[MustHave]  [DONE]
  - Sender protocol address...........................................[MustHave]  [DONE]
  - Target hardware address...........................................[MustHave]  [DONE]
  - Target protocol address...........................................[MustHave]  [DONE]
* Custom RARP packet generation......................................[CouldHave]  [DONE]

+------------------------+
| NETWORK LAYER          |
+------------------------+

* Custom IPv4 packet generation.......................................[MustHave]  [DONE]
  - Custom version number............................................[OnRequest]
  - Invalid header lengths...........................................[OnRequest]
  - Type of Service...................................................[MustHave]  [DONE]
  - Invalid total lengths............................................[OnRequest]
  - Custom Idenfication number........................................[MustHave]  [DONE]
  - Do Not Fragment Flag..............................................[MustHave]  [DONE]
  - More Fragments Flag...............................................[MustHave]  [DONE]
  - Reserved flag....................................................[OnRequest]
  - Incorrect fragment offset........................................[OnRequest]
  - Custom TTL........................................................[MustHave]  [DONE]
  - Custom Protocol number...........................................[OnRequest]
  - Invalid header checksum...........................................[MustHave]  [DONE]
  - Spoofed source address............................................[MustHave]  [DONE]
  - Destination address...............................................[MustHave]  [DONE]
  - IP options........................................................[MustHave]  [DONE]

* IPv6 packet generation
  - IPv6 support for TCP connect() ping...............................[MustHave]
  - IPv6 support for UDP pings........................................[MustHave]
  - IPv6 packet generation............................................[MustHave]

* ICMP packet generation..............................................[MustHave]  [DONE]
  - Echo Request......................................................[MustHave]  [DONE]
  - Timestamp request.................................................[MustHave]  [DONE]
  - Information Request...............................................[MustHave]  [DONE]
  - Netmask Request...................................................[MustHave]
  - Redirect..........................................................[MustHave]  [DONE]
  - Fake Destination Unreachable Message..............................[MustHave]  [DONE]
  - Fake Echo Reply Message..........................................[OnRequest]  [DONE]
  - Fake Source Quench Message.......................................[OnRequest]  [DONE]
  - Fake Time Exceeded message.......................................[OnRequest]  [DONE]
  - Fake Parameter Problem Message...................................[OnRequest]  [DONE]
  - Timestamp reply..................................................[OnRequest]  [DONE]
  - Information Reply................................................[OnRequest]  [DONE]
  - Netmask Reply....................................................[OnRequest]



+------------------------+
| TRANSPORT LAYER        |
+------------------------+
* Custom TCP packet generation........................................[MustHave]  [DONE]
   - Source port......................................................[MustHave]  [DONE]
   - Destination port.................................................[MustHave]  [DONE]
   - Sequence Number..................................................[MustHave]  [DONE]
   - ACK Number.......................................................[MustHave]  [DONE]
   - Invalid offset values...........................................[OnRequest]
   - Custom data in "Reserved" field.................................[OnRequest]
   - TCP Flags (including CWR and ECE)................................[MustHave]  [DONE]
   - Window size......................................................[MustHave]  [DONE]
   - Invalid checksum.................................................[MustHave]  [DONE]
   - Custom Urgent Pointer...........................................[OnRequest]
   - TCP Options......................................................[MustHave]

* Custom UDP packet generation........................................[MustHave]  [DONE]
   - Source / Dest ports .............................................[MustHave]  [DONE]
   - Incorrect length................................................[OnRequest]  [DONE]
   - Invalid checksum.................................................[MustHave]  [DONE]

+------------------------+
| APPLICATION LAYER      |
+------------------------+
* Custom DNS request generation......................................[CouldHave]
* HTTP request generation............................................[CouldHave]


+------------------------+
| Nping ECHO SERVER      |
+------------------------+
* Encrypted communications symmetrict encryption......................[MustHave]
* Use of covert channels to transfer information back
  to the nping client................................................[CouldHave]
* Echo back layers link+net+transport+payload
* Echo back layers net+transport+payload
* Echo back layerstransport+payload
* Echo back only payload



+------------------------+
| MISCELLANEOUS          |
+------------------------+
* Traceroute mode.....................................................[MustHave]  [DONE]
  - Traceroute to a TCP port..........................................[MustHave]  [DONE]
  - Traceroute to a UDP port..........................................[MustHave]  [DONE]
* Nmap style packet output............................................[MustHave]  [DONE]
* Provide useful stats................................................[MustHave]
* Save responses in a pcap file......................................[CouldHave]
* Implement student's t test to compare data-sets of timing
  information as in QSCAN............................................[CouldHave]
* Support for multiple target IPs.....................................[MustHave]  [DONE]
* Support for multiple target ports...................................[MustHave]  [DONE]










