| 1 | This is a general list of things which should/could/may be done. |
|---|
| 2 | If any of these features interest you let me know- especially if you're |
|---|
| 3 | willing and able to help code it. In general, higher priority tasks are |
|---|
| 4 | tracked on the tcpreplay website: http://tcpreplay.synfin.net/ |
|---|
| 5 | |
|---|
| 6 | Legend: |
|---|
| 7 | - = Not started |
|---|
| 8 | + = Done |
|---|
| 9 | O = Mostly done |
|---|
| 10 | o = Started work |
|---|
| 11 | . = Canceled |
|---|
| 12 | ? = To think about |
|---|
| 13 | |
|---|
| 14 | GENERAL: |
|---|
| 15 | |
|---|
| 16 | + Improve config file format |
|---|
| 17 | + better variable names |
|---|
| 18 | + use "var: value" format |
|---|
| 19 | + have tcpreplay, tcpprep, tcprewrite sections |
|---|
| 20 | + Being solved using GNU AutoOpts |
|---|
| 21 | |
|---|
| 22 | + Improve autoconf detection of libraries |
|---|
| 23 | |
|---|
| 24 | + Re-organize source tree |
|---|
| 25 | |
|---|
| 26 | + tcpdump decoder should print packets syncronously w/ the main process |
|---|
| 27 | |
|---|
| 28 | + Better use of GNU Autotools |
|---|
| 29 | |
|---|
| 30 | + Improve CLI/config file parsing |
|---|
| 31 | |
|---|
| 32 | + Only tcpreplay/tcpbridge should need to run as root. |
|---|
| 33 | |
|---|
| 34 | + Tcpreplay should use raw sockets or BPF directly for writing rather then |
|---|
| 35 | libnet where applicable for theoretically higher performance. |
|---|
| 36 | |
|---|
| 37 | - Detect system version of libopts b/c we need a recent version |
|---|
| 38 | |
|---|
| 39 | + Generalize packet editing and printing code so it can be shipped as a |
|---|
| 40 | seperate library and plugged into tcpreplay/tcprewrite/flowreplay/etc |
|---|
| 41 | |
|---|
| 42 | + See about removing libnet_init() from all binaries other then tcprewrite |
|---|
| 43 | so we don't have to run as root: |
|---|
| 44 | . libnet_addr2name4 (ignore, doesn't require libnet_t context) |
|---|
| 45 | + libnet_name2addr4 |
|---|
| 46 | + libnet_get_hwaddr |
|---|
| 47 | + libnet_do_checksum |
|---|
| 48 | |
|---|
| 49 | TCPREPLAY: |
|---|
| 50 | |
|---|
| 51 | . Add support for dual-nic send on one intf, wait for packet, send next. |
|---|
| 52 | would be really useful for testing the effectiveness of how well an IPS |
|---|
| 53 | detects and blocks attacks. (TP's tomahawk does this even better then |
|---|
| 54 | described here, so why re-invent the wheel?) |
|---|
| 55 | |
|---|
| 56 | - Rewrite do_sleep() to handle sub sleep times by only nanosleep()'ing |
|---|
| 57 | once for multiple packets when the timestamps are close enough. We |
|---|
| 58 | also need to time nanosleep, since different architectures have lower |
|---|
| 59 | minimum sleep times (Linux/Alpha is 1ms vs. 10ms for Linux/x86) |
|---|
| 60 | |
|---|
| 61 | + Tcpreplay should say which interface each packet is going out |
|---|
| 62 | |
|---|
| 63 | TCPBRIDGE: |
|---|
| 64 | |
|---|
| 65 | - Duplicate all tcprewrite functionality |
|---|
| 66 | |
|---|
| 67 | TCPREWRITE: |
|---|
| 68 | |
|---|
| 69 | - Support fragrouter like features |
|---|
| 70 | - basic IP fragmenation |
|---|
| 71 | - TCP fudging |
|---|
| 72 | - then more advanced stuff |
|---|
| 73 | - Can we integrate FR's code? |
|---|
| 74 | |
|---|
| 75 | + Look at VLAN (802.1q) packets |
|---|
| 76 | - others non-vanilla types? |
|---|
| 77 | + Add tags? Remove tags? Change tags? |
|---|
| 78 | - Tag only one side of the connection |
|---|
| 79 | - Support Q-in-Q tags: |
|---|
| 80 | http://www.informit.com/articles/article.asp?p=101367&rl=1 |
|---|
| 81 | - Cisco's ISL trunking? |
|---|
| 82 | |
|---|
| 83 | - Add support for MPLS |
|---|
| 84 | |
|---|
| 85 | - Add support for GRE |
|---|
| 86 | http://www.linuxguruz.com/iptables/howto/2.4routing-5.html |
|---|
| 87 | Perhaps this should be done via the hardware interface rather then the GRE |
|---|
| 88 | virtual interface since libnet doesn't support the GRE virtual |
|---|
| 89 | |
|---|
| 90 | + Add support for setting the ethernet protocol field so we can use |
|---|
| 91 | -I, -K to fill out an entire ethernet header w/o using -2 |
|---|
| 92 | |
|---|
| 93 | + Add a secondary interface full layer two rewrite option |
|---|
| 94 | |
|---|
| 95 | + Fix MAC rewriting to allow sending packets with a MAC of 00:00:00:00:00:00 |
|---|
| 96 | |
|---|
| 97 | - Add support for more linktypes (Prism Monitor, 802.11, FDDI, etc) |
|---|
| 98 | + Make it easier for others to add support for others |
|---|
| 99 | |
|---|
| 100 | + Rip out packet munger from tcpreplay and put it into another tool so |
|---|
| 101 | that tcpreplay can be more optimized |
|---|
| 102 | ? perhaps use libnetdude? |
|---|
| 103 | ? make into a library? |
|---|
| 104 | + definately put it into a seperate binary (tcprewrite) |
|---|
| 105 | |
|---|
| 106 | - Add the ability to modify packet data via regex(es) in tcprewrite |
|---|
| 107 | - Should support pcre |
|---|
| 108 | - Support (foo) and $1, etc so new data can include old |
|---|
| 109 | - Limit matching which packets via BPF filter and tcpprep cache |
|---|
| 110 | (client/server) |
|---|
| 111 | - Step through packets ala tcpreplay and provide option to edit (Y/n) |
|---|
| 112 | |
|---|
| 113 | - Support connection tracking and generating 3way handshake for connections |
|---|
| 114 | missing them. |
|---|
| 115 | |
|---|
| 116 | - Bump Syn/Ack numbers by a pseudo random or given value so that running |
|---|
| 117 | the same pcap will behave as different streams. |
|---|
| 118 | |
|---|
| 119 | - IPv6 support? People ask for this every few months, but nobody actually |
|---|
| 120 | says they "need" or "really want" it; seems more of "gee, wouldn't it be |
|---|
| 121 | nice". What does that mean anyways??? |
|---|
| 122 | |
|---|
| 123 | - tcprewrite should be able to remove the two byte ethernet FCS (checksums) |
|---|
| 124 | at the end of the frame. |
|---|
| 125 | |
|---|
| 126 | + Support randomization of IP addresses in ARP packets |
|---|
| 127 | |
|---|
| 128 | - Add support for rewriting MAC addresses in the ARP body for |
|---|
| 129 | tcprewrite/tcpbridge to allow proxy-arp like behaviour |
|---|
| 130 | |
|---|
| 131 | - Add support for IP fragmenting frames which are > MTU |
|---|
| 132 | |
|---|
| 133 | |
|---|
| 134 | TCPPREP: |
|---|
| 135 | |
|---|
| 136 | + When splitting traffic via tcpprep print out each packet (tcpdump style) |
|---|
| 137 | so end users know where each packet is going |
|---|
| 138 | |
|---|
| 139 | FLOWREPLAY: |
|---|
| 140 | |
|---|
| 141 | - Improve flowreplay so it actually works |
|---|
| 142 | . Use libnids to read the pcaps. This seems DOA at this time since |
|---|
| 143 | libnids is GPL and the author is unwilling to make it support multiple |
|---|
| 144 | threads which flowreplay probably needs to be. The only other option is |
|---|
| 145 | a major rewrite which would break API compatibility. Doesn't seem worth |
|---|
| 146 | it. |
|---|
| 147 | - Allow handoff to a socket after user specified client/server exchanges |
|---|
| 148 | |
|---|
| 149 | - Perhaps integrate stick/snot/fpg logic into flowreplay: |
|---|
| 150 | http://www.geschke-online.de/FLoP/fpg.8.html |
|---|
| 151 | to do full 3way handshakes |
|---|