summaryrefslogtreecommitdiff
path: root/docs/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'docs/TODO')
-rw-r--r--docs/TODO151
1 files changed, 151 insertions, 0 deletions
diff --git a/docs/TODO b/docs/TODO
new file mode 100644
index 0000000..dd06168
--- /dev/null
+++ b/docs/TODO
@@ -0,0 +1,151 @@
+This is a general list of things which should/could/may be done.
+If any of these features interest you let me know- especially if you're
+willing and able to help code it. In general, higher priority tasks are
+tracked on the tcpreplay website: http://tcpreplay.synfin.net/
+
+Legend:
+ - = Not started
+ + = Done
+ O = Mostly done
+ o = Started work
+ . = Canceled
+ ? = To think about
+
+GENERAL:
+
++ Improve config file format
+ + better variable names
+ + use "var: value" format
+ + have tcpreplay, tcpprep, tcprewrite sections
+ + Being solved using GNU AutoOpts
+
++ Improve autoconf detection of libraries
+
++ Re-organize source tree
+
++ tcpdump decoder should print packets syncronously w/ the main process
+
++ Better use of GNU Autotools
+
++ Improve CLI/config file parsing
+
++ Only tcpreplay/tcpbridge should need to run as root.
+
++ Tcpreplay should use raw sockets or BPF directly for writing rather then
+ libnet where applicable for theoretically higher performance.
+
+- Detect system version of libopts b/c we need a recent version
+
++ Generalize packet editing and printing code so it can be shipped as a
+ seperate library and plugged into tcpreplay/tcprewrite/flowreplay/etc
+
++ See about removing libnet_init() from all binaries other then tcprewrite
+ so we don't have to run as root:
+ . libnet_addr2name4 (ignore, doesn't require libnet_t context)
+ + libnet_name2addr4
+ + libnet_get_hwaddr
+ + libnet_do_checksum
+
+TCPREPLAY:
+
+. Add support for dual-nic send on one intf, wait for packet, send next.
+ would be really useful for testing the effectiveness of how well an IPS
+ detects and blocks attacks. (TP's tomahawk does this even better then
+ described here, so why re-invent the wheel?)
+
+- Rewrite do_sleep() to handle sub sleep times by only nanosleep()'ing
+ once for multiple packets when the timestamps are close enough. We
+ also need to time nanosleep, since different architectures have lower
+ minimum sleep times (Linux/Alpha is 1ms vs. 10ms for Linux/x86)
+
++ Tcpreplay should say which interface each packet is going out
+
+TCPBRIDGE:
+
+- Duplicate all tcprewrite functionality
+
+TCPREWRITE:
+
+- Support fragrouter like features
+ - basic IP fragmenation
+ - TCP fudging
+ - then more advanced stuff
+ - Can we integrate FR's code?
+
++ Look at VLAN (802.1q) packets
+ - others non-vanilla types?
+ + Add tags? Remove tags? Change tags?
+ - Tag only one side of the connection
+ - Support Q-in-Q tags:
+ http://www.informit.com/articles/article.asp?p=101367&rl=1
+ - Cisco's ISL trunking?
+
+- Add support for MPLS
+
+- Add support for GRE
+ http://www.linuxguruz.com/iptables/howto/2.4routing-5.html
+ Perhaps this should be done via the hardware interface rather then the GRE
+ virtual interface since libnet doesn't support the GRE virtual
+
++ Add support for setting the ethernet protocol field so we can use
+ -I, -K to fill out an entire ethernet header w/o using -2
+
++ Add a secondary interface full layer two rewrite option
+
++ Fix MAC rewriting to allow sending packets with a MAC of 00:00:00:00:00:00
+
+- Add support for more linktypes (Prism Monitor, 802.11, FDDI, etc)
+ + Make it easier for others to add support for others
+
++ Rip out packet munger from tcpreplay and put it into another tool so
+ that tcpreplay can be more optimized
+ ? perhaps use libnetdude?
+ ? make into a library?
+ + definately put it into a seperate binary (tcprewrite)
+
+- Add the ability to modify packet data via regex(es) in tcprewrite
+ - Should support pcre
+ - Support (foo) and $1, etc so new data can include old
+ - Limit matching which packets via BPF filter and tcpprep cache
+ (client/server)
+ - Step through packets ala tcpreplay and provide option to edit (Y/n)
+
+- Support connection tracking and generating 3way handshake for connections
+ missing them.
+
+- Bump Syn/Ack numbers by a pseudo random or given value so that running
+ the same pcap will behave as different streams.
+
+- IPv6 support? People ask for this every few months, but nobody actually
+ says they "need" or "really want" it; seems more of "gee, wouldn't it be
+ nice". What does that mean anyways???
+
+- tcprewrite should be able to remove the two byte ethernet FCS (checksums)
+ at the end of the frame.
+
++ Support randomization of IP addresses in ARP packets
+
+- Add support for rewriting MAC addresses in the ARP body for
+ tcprewrite/tcpbridge to allow proxy-arp like behaviour
+
+- Add support for IP fragmenting frames which are > MTU
+
+
+TCPPREP:
+
++ When splitting traffic via tcpprep print out each packet (tcpdump style)
+ so end users know where each packet is going
+
+FLOWREPLAY:
+
+- Improve flowreplay so it actually works
+ . Use libnids to read the pcaps. This seems DOA at this time since
+ libnids is GPL and the author is unwilling to make it support multiple
+ threads which flowreplay probably needs to be. The only other option is
+ a major rewrite which would break API compatibility. Doesn't seem worth
+ it.
+ - Allow handoff to a socket after user specified client/server exchanges
+
+- Perhaps integrate stick/snot/fpg logic into flowreplay:
+ http://www.geschke-online.de/FLoP/fpg.8.html
+ to do full 3way handshakes