All notable changes to the project are documented in this file.
- Versions >= v1.5, Joachim Nilsson <mailto:troglobit at gmail dot com>
- Versions <= v1.4, Jeff Nathan <mailto:jeff at snort dot org>
- Versions <= v1.31, Mark Grimes <mailto:mark at stateful dot net>
- Initial UDP over IPv6 support
v1.8 - 2021-07-06
Nemesis the Mover, found a new home in the libnet project.
- Add automatic IP multicast group to MAC multicast address translation
- Improved usability for composing IGMPv3 reports:
- Default to 224.0.0.2 for IGMPv3 report type
- Add
-n NUM
to control number of group records
- Fix IGMP v2 join example in README
- Fix logic for printing DNS protocol: TCP/UDP, by Brett Kuskie
- Fix #12: allow 0.0.0.0 as RIP address
- Fix #13: multiple definitions of variables, by Brett Kuskie
v1.7 - 2020-06-07
Nemesis the Comedian
- Convert all man pages to mdoc format
- Fix #6: Skip sleep/delay when sending only one frame, i.e. default
- Fix #9: Call correct exit function in
nemesis-dhcp
- Fix missing
S:
togetopt()
innemesis-dhcp
, reported by Westermo - Fix network byte ordering problem with CIADDR, YIADDR, SIADDR, and
GIADDR in
nemesis-dhcp
, reported by Westermo - Fix command line parsing of client MAC address, Ethernet source MAC
address, and Ethernet destination MAC address in
nemesis-dhcp
, reported by Westermo - Fix missing newline in
nemesis-dhcp
usage text - Fix invalid call to
close()
, found by Valgrind
v1.6 - 2019-05-16
Nemesis the Destroyer
- Support for DHCP protocol crafting, defaults to DHCP Discover with option 53, 12, 60, 61, and 55
- Support for repeated send in many protocol injectors. Can be used to, e.g., flood networks with ARP requests or test DHCP.
- Incompatible command line option changes to IGMP protocol module
- Fix #4: invalid IP header length in ICMP packets, by Samy Kamkar
v1.5 - 2018-05-10
Nemesis the Resurrection
- Merged Nemesis libnet1 port, from stale CVS branch
- Fixed libnet1 porting regression in
nemesis-proto_icmp.c
- Finished port of
nemesis-printout.c
to libnet1 - Finished port of
nemesis_proto_ospf.c
, new HELLO API. Added workaround for missing "Active Neighbor" in libnet1 - Removed lots of unused local variables, remnants from port
- Updated configure script to check for libnet1
- Re-KNF:ed entire source tree in libnet1 port merge. New file in
root of tree:
.clang-format
for auto-indenting (exprimental)
- Fixed libnet1 porting regression in
- Finished OSPF injector implementation, drop beta status
- Changed default values for RIP injector, use v2 and 224.0.0.9
- Minor license refactor to be auto-detected as 3-clause BSD
- Removed build number from version string
- Simplified usage/help texts for all injectors, more readable format
- Replaced hard-coded version number with
PACKAGE_VERSION
- Changed README and ChangeLog to Markdown format, reorder the ChangeLog in reverse chronological order, latest first
- Added some examples (!) to the README, everybody likes examples :)
- Removed all generated autoconf/automake files from GIT. Use the
./autogen.sh
script when building from GIT. - Renamed
configure.in --> configure.ac
and clean up the build system a bit, for readability and simplicity - Merged Debian
.deb
package build support, incl. modernize
- Merged mailing list fix to allow IGMP group 0.0.0.0 when sending a general query. Thanks to Randy Robertson mailto:rmrobert@vmware.com
- Fixed long-standing OSPF non-functioning bug. Caused by static declaration of OSPF variables in header file
- Fixed needless byte-swapping in the following injectors, libnet1 does
this for us already. Possible bug in earlier versions:
- OSPF
- RIP
- ICMP
v1.4 - 2004-10-07
New and improved nemesis: nemesis-ethernet and nemesis-ip.
- License change, from 2-clause BSD to 3-clause
- Windows support (link-layer injection only)
- Useful man pages
- Single binary
- Improved cross-platform support via GNU autotools
- Easier to use
- Nemesis will attempt to fill in as many details as possible in a packet, thus requiring fewer or even no command line switches
- Each protocol builder attempts to build a proper packet by default
- Organized code base
- The network header structures in libnet proved useful so nemesis now uses them where appropriate
- Code is re-used wherever possible resulting in a much more concise code base
- Full payload functionality
- Payloads can now contain NULLs within them and full-size packets are available on all supported platforms except Windows
- IP and TCP options support
- All nemesis injectors (excluding ARP and Ethernet) now support IP
options via
-O <file>
- All nemesis injectors using TCP as a transport protocol now
support TCP options via
-o <file>
- All nemesis injectors (excluding ARP and Ethernet) now support IP
options via
- Improved IP and TCP functionality
- Full IP fragmentation support via new
-F
command line semantics - ECN support in TCP with the addition of
-fE
(ECE) and-fC
(CWR)
- Full IP fragmentation support via new
- Switched to GNU ChangeLog format
- Moved printout functions into
nemesis-printout.c
- Moved file I/O functions to
nemesis-fileio.c
- Incorporated
strlcpy()
andstrlcat()
into source tree - Updated
configure.in
to useAC_REPLACE_FUNCS
for locally included functions:strlcpy()
,strlcat()
,strspn()
,inet_aton()
- Removed struct
OptionsData
andPayloadData
in favor ofFileData
- Changed
builddatafromfile()
to accept aFileData *
- removed
acconfig.h
and replaced withAH_TOP
macro inconfigre.in
- updated
aclocal.m4
, missing,mkinstalldirs
,configure
,configure.in
,config.guess
,Makefile.in
,man/Makefile.in
andsrc/Makefile.in
as part of autotools updates
-
Man page fixes from mailto:nnposter@users.sourceforge.net
-
minor man page cleanup
-
nemesis-proto_ip.c:
- ip_meta_packetlen = ip_packetlen - (link_offet + LIBNET_IP_H); + ip_meta_packetlen = ip_packetlen - (link_offset + LIBNET_IP_H);
-
added
.cvsignore
to CVS -
allow TCP packets to be sent without flags using
-f-
-
allow RIP routing domain value to be 0 with RIP2
-
correct mistakes in specifying payload sizes for ICMP and RIP
-
added
src/memcmp.c
to satisfy automake dependency -
debug fixes to
configure.in
v1.32 - 2001-06-22
- changes to nemesis-arp
- Added -h and -m switches to allow for changing the sender and target hardware addresses within the ARP frame independant of the Ethernet header.
- Added Solaris style ARP requests (
-s
option) such that the target hardware address is set to ff:ff:ff:ff:ff:ff rather than 00:00:00:00:00:00 as it is in most implementations. This is merely a shortcut and users wishing to set the target address manually should use the-m
switch. - ARP requests now default to having the target hardware address set
to 00:00:00:00:00:00 rather than duplicating what's in
enet_dst
.
- changes to nemesis-igmp
- pull in accidental DoS protection from 1.31
- Fixed if (verbose) bug that prevented
libnet_get_hwaddr()
from being called ifverbose == 0
- Fixed
getopt()
parsing to no longer useif (got_link)
as optarg options weren't parsed properly if-d
appeared anywhere but the beginning of the command line. - relocated some sanity checks
- man page cleanup. (
-b
option doesn't exist)
v1.31 - 2001-06-13
- Error in printf output for arp request/reply Pulls Source MAC off card if undefined, prevents accidental DoS ;)
v1.3 - 2001-06-06
Memesis is such a bloody mess, this will be the last version of the old libnet-nemesis -- I SWEAR! --- (bar bugfixes)
- RARP added (thanks to Jeff Nathan <mailto:jeff at wwti dot com> for pointing out Libnet had RARP support, while I have been busy unlibnetizing source code... Since some people wanted this feature...)
- RAW4ALL OpenBSD patch support added (inject nemesis packets as a normal user!)
v1.2 - 2000-12-31
- ICMP checksum fix patched (did not affect ICMP injection, but not proper)
- Makefile fixes (roll in the changes made in OpenBSD land)
v1.1 - 2000-06-24
NOTE: nemesis is only being maintained for bugfixes now. A next generation of the tool is currently being developed that will have a shell based interface rather than a command line. As future features are implemented, it will become readily apparent why this is being done.
- Injection fixes
- DNS (no frame on layer 2),
- ICMP (false reporting)
- New packet payload hex dumping algorithm created from scratch... many people rip tcpdump's hex dumping algorithm, which might be more robust, but this is 100% my OWN algorithm -- so if it totally sucks, please tell me and I will rip tcpdump's algorithm. I think it works nice and is considerably less code than the other flavors.
- ICMP man page update - ICMP types/codes notated, so you don't have to refer to the source.
- Payload fixes
v1.0 - 2000-04-14
- Injection fix - non-payload packet wasn't injecting after changes made between 0.9.1 and 1.0pre1 releases
MANY bugfixes.
- Packet stream loop tightening, Binary payload now does what it is supposed too ;)
- Socket fixes -- tested with large files
- b0rked the ethernet checksums patch, recoded and verified
- OSPF completed (5 additional packet types)
- autoconf adjustments to ease into obsd ports tree patches supplied by: <mailto:brad at comstyle dot com>
- autoconf style configuration
- misc cosmetic fixes
- addition of DNS protocol
- addition of IGMP protocol
- addition of RIP protocol
- finished layer 2 support for all completed protocols
getopt()
fixes to OSPF and ICMP- misc cosmetic fixes
- ARP, ICMP, OSPF (unfinished), TCP, UDP implemented