summaryrefslogtreecommitdiffstats
path: root/nping/nping-dev/NpingRequirements.txt
blob: 53218f46417d28f7a83b229fd3aa96b3b050ce9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
++++++++++++++++++++++++++++++++
|  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]